第 4 章 网络层 数学科学学院 冯世斌
第4 章 网络层 4.2 网际协议 IP 4.2.1 虚拟互连网络 4.2.2 分类的 IP 地址 4.2.3 IP 地址与硬件地址 第4 章 网络层 4.1 网络层提供的两种服务 4.2 网际协议 IP 4.2.1 虚拟互连网络 4.2.2 分类的 IP 地址 4.2.3 IP 地址与硬件地址 4.2.4 地址解析协议 ARP 与逆地址解析协议RARP 4.2.5 IP 数据报的格式 4.2.6 IP 层转发分组的流程
第4 章 网络层(续) 4.3 划分子网和构造超网 4.4 网际控制报文协议 ICMP 4.5 因特网的路由选择协议 4.3.1 划分子网 第4 章 网络层(续) 4.3 划分子网和构造超网 4.3.1 划分子网 4.3.2 使用子网时分组转发 4.3.3 无分类编址 CIDR(构造超网) 4.4 网际控制报文协议 ICMP 4.4.1 ICMP 报文的种类 4.4.2 ICMP 的应用举例 4.5 因特网的路由选择协议 4.5.1 有关路由选择协议的几个基本概念 4.5.2 内部网关协议 RIP 4.5.3 内部网关协议 OSPF 4.5.4 外部网关协议 BGP 4.5.6 路由器的构成
第4 章 网络层(续) 4.6 IP 多播 4.7 虚拟专用网 VPN 和网络地址转换 NAT 4.6.1 IP 多播的基本概念 第4 章 网络层(续) 4.6 IP 多播 4.6.1 IP 多播的基本概念 4.6.2 在局域网上进行硬件多播 4.6.2 因特网组管理协议 IGMP 和多播路由选择协议 4.7 虚拟专用网 VPN 和网络地址转换 NAT 4.7.1 虚拟专用网 VPN 4.7.2 网络地址转换 NAT
本章最重要的内容 (1) 虚拟互连网络的概念 (2) IP 地址与物理地址的关系 (3) 传统的分类的 IP 地址(包括子网掩码)和无分类域间路由选择 CIDR (4) 路由选择协议的工作原理
4.1 网络层提供的两种服务 在计算机网络领域,网络层应该向传输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
电信网的成功经验让网络负责可靠交付 面向连接的通信方式 建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点。
H1 发送给 H2 的所有分组都沿着同一条虚电路传送 虚电路服务 三个过程: 建立连接(VC)、数据通信、拆除连接 应用层 传输层 网络层 数据链路层 物理层 应用层 传输层 网络层 数据链路层 物理层 H1 H2 虚电路 H1 发送给 H2 的所有分组都沿着同一条虚电路传送
虚电路是逻辑连接 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。 注意,电路交换的电话通信是先建立了一条真正的连接(物理连接)。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
因特网采用的设计思路 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。 网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
尽最大努力交付的好处 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的传输层负责(包括差错处理、流量控制等)。 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
网络提供的数据报服务示意 H1 发送给 H2 的分组可能沿着不同路径传送 应用层 传输层 网络层 数据链路层 物理层 应用层 传输层 网络层 IP 数据报 H2 丢失 H1 发送给 H2 的分组可能沿着不同路径传送
虚电路服务与数据报服务的对比 对比的方面 虚电路服务 数据报服务 思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证 连接的建立 必须有 不需要 终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址 分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发 当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化 分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序 端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责
4.2 网际协议IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议: 地址解析协议 ARP (Address Resolution Protocol) 逆地址解析协议 RARP (Reverse Address Resolution Protocol) 网际控制报文协议 ICMP (Internet Control Message Protocol) 网际组管理协议 IGMP (Internet Group Management Protocol)
网际层的 IP 协议及配套协议 各种应用层协议 应用层 (HTTP, FTP, SMTP 等) 传输层 TCP, UDP ICMP IGMP 网络层 (网际层) IP RARP ARP 与各种网络接口 网络接口层 物理硬件
4.2.1 虚拟互连网络 互连在一起的网络要进行通信,会遇到许多问题需要解决,如: 不同的寻址方案 不同的最大分组长度 不同的网络接入机制 4.2.1 虚拟互连网络 互连在一起的网络要进行通信,会遇到许多问题需要解决,如: 不同的寻址方案 不同的最大分组长度 不同的网络接入机制 不同的超时控制 不同的差错恢复方法 不同的状态报告方法 不同的路由选择技术 不同的用户接入控制 不同的服务(面向连接服务和无连接服务) 不同的管理与控制方式
网络互相连接起来要使用一些中间设备 中间设备又称为中间系统或中继(relay)系统。 物理层中继系统:转发器(repeater) 。 数据链路层中继系统:网桥或桥接器(bridge)。 网络层中继系统:路由器(router)。 网桥和路由器的混合物:桥路器(brouter)。 网络层以上的中继系统:网关(gateway)又称协议转换器。
网络互连使用路由器 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。 网关由于比较复杂,目前使用得较少。 互联网都是指用路由器进行互连的网络。 由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
由于参加互连的网络都使用IP协议,因此这些性能各异的网络在网络层看来就象一个网络 互连网络与虚拟互连网络 由于参加互连的网络都使用IP协议,因此这些性能各异的网络在网络层看来就象一个网络 (b) 虚拟互连网络 虚拟互连网络 (互联网) 路由器 网络 网络 网络 网络 网络 (a) 互连网络
虚拟互连网络的意义 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。 使用 IP 协议的虚拟互连网络可简称为 IP 网。 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
分组在互联网中的传送 H1 5 4 3 2 1 R1 R2 R3 3 2 2 1 1 3 2 2 1 1 3 2 2 1 1 主机 H1 R1 R2 R3 间接交付 间接交付 间接交付 间接交付 R5 R4 间接交付 R5 R4 直接交付 3 2 2 1 1 3 2 2 1 1 H2 主机 H2 5 4 3 2 1
从网络层看 IP 数据报的传送 如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送。 IP 数据报 网络层 网络层 H1 R1 R2 R3 R4 R5 H2
4.2.2 分类的 IP 地址 1. IP 地址及其表示方法 我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。 IP地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。 我国的用户向APNIC(Asia Pacific Network Information Center)申请IP地址。
IP 地址的编址方法 IP地址的编址方法共经历了三个阶段: 分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议。 子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950]在1985年通过。 构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
IP 地址 ::= { <网络号>, <主机号>} (4-1) 每一类地址都由两个固定长度的字段组成: 网络号net-id,它标志主机(或路由器)所连接到的网络; 主机号 host-id,它标志该主机(或路由器)。 两级的 IP 地址可以记为: ::= 代表“定义为” IP 地址 ::= { <网络号>, <主机号>} (4-1)
IP 地址中的网络号字段和主机号字段 A 类地址 net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 A 类地址的网络号字段 net-id 为 1 字节 A 类地址 net-id 8 位 host-id net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 A 类地址的网络号字段 net-id 为 1 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 B 类地址的网络号字段 net-id 为 2 字节 A 类地址 net-id 8 位 host-id net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 B 类地址的网络号字段 net-id 为 2 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 C 类地址的网络号字段 net-id 为 3 字节 A 类地址 net-id 8 位 host-id net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 C 类地址的网络号字段 net-id 为 3 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 A 类地址的主机号字段 host-id 为 3 字节 A 类地址 net-id 8 位 host-id net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 A 类地址的主机号字段 host-id 为 3 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 B 类地址的主机号字段 host-id 为 2 字节 A 类地址 net-id 8 位 host-id net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 B 类地址的主机号字段 host-id 为 2 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 C 类地址的主机号字段 host-id 为 1 字节 A 类地址 net-id 8 位 host-id net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 C 类地址的主机号字段 host-id 为 1 字节 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
D 类地址是多播地址,其中的每一地址用于定义因特网上的一组主机 IP 地址中的网络号字段和主机号字段 A 类地址 net-id 8 位 host-id 24 位 D 类地址是多播地址,其中的每一地址用于定义因特网上的一组主机 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
IP 地址中的网络号字段和主机号字段 E 类地址保留为今后使用 A 类地址 net-id 8 位 host-id 24 位 B 类地址 1 net-id 8 位 host-id 24 位 B 类地址 1 E 类地址保留为今后使用 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 D 类地址 1 1 1 0 多 播 地 址 E 类地址 1 1 1 1 保 留 为 今 后 使 用
点分十进制记法 10000000 00001011 00000011 00011111 机器中存放的 IP 地址 是 32 位 二进制代码 10000000 00001011 00000011 00011111 机器中存放的 IP 地址 是 32 位 二进制代码 10000000 00001011 00000011 00011111 每隔 8 位插入一个空格 能够提高可读性 将每 8 位的二进制数 转换为十进制数 128 11 3 31 采用点分十进制记法 则进一步提高可读性 128.11.3.31
2. 常用的三种类别的 IP 地址 IP 地址的使用范围 网络类别 最大网络数 第一个可用的网络号 最后一个可用的网络号 每个网络中最大的主机数 A 126 (27 – 2) 1 126 16,777,214 B 16,383(214 1) 128.1 191.255 65,534 C 2,097,151 (221 1) 192.0.1 223.255.255 254 说明: A类网址中,net-id=0的地址为保留地址,127(主机号不为0或全1)为本地环回测试地址; B类网址中,128.0不可指派; C类网址中,192.0.0不可指派。 主机号全为0,指本网地址,不可用;主机号全为1,指本网广播地址。
IP 地址的一些重要特点 (1) IP 地址是一种分等级的地址结构。分两个等级的好处是: IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了IP地址的管理。 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。 (2)实际上IP地址是标志一台主机(或路由器)和一条链路的接口。 当某主机同时连接到两个网络上时(多归属主机,multihomed host),该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。 由于一个路由器至少应连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。 (3)同一局域网都具有同样的网络号net-id。 (4)所有分配到网络号net-id的网络,不论其范围大小,都是平等的。
图中的网络号就是 IP 地址中的 net-id 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
图中的网络号就是 IP 地址中的 net-id 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
图中的网络号就是 IP 地址中的 net-id 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
路由器总是具有两个或两个以上的 IP 地址。 路由器的每一个接口都有一个 不同网络号的 IP 地址。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
路由器总是具有两个或两个以上的 IP 地址。 路由器的每一个接口都有一个 不同网络号的 IP 地址。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
路由器总是具有两个或两个以上的 IP 地址。 路由器的每一个接口都有一个 不同网络号的 IP 地址。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址(称无编号或无名网络)。 222.1.1.1 222.1.1.2 222.1.1.3 LAN1 222.1.1. 222.1.1.4 R1 LAN3 222.1.5.1 222.1.6.1 222.1.3.3 222.1.3. 222.1.2.1 N3 222.1.6. LAN2 222.1.2. N2 222.1.5. 222.1.5.2 222.1.6.2 222.1.3.1 R3 N1 222.1.4. R2 222.1.2.5 222.1.2.2 222.1.3.2 222.1.4.2 222.1.4.1 B 222.1.2.4 222.1.2.3 互联网
4.2.3 IP 地址与硬件地址 首部 应用层数据 网络层及以上 使用 IP 地址 IP 地址 TCP 报文 首部 链路层及以下 使用硬件地址 硬件地址 IP 数据报 首部 尾部 MAC 帧
查找路由表 查找路由表 通信的路径 H1→经过 R1 转发→再经过 R2 转发→H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1 HA3 HA4 HA5 HA6 HA2 局域网 局域网 局域网 通信的路径 H1→经过 R1 转发→再经过 R2 转发→H2
从协议栈的层次上看数据的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1 局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
从虚拟的 IP 层上看 IP 数据报的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1 HA3 HA4 HA5 HA6 HA2 局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
在链路上看 MAC 帧的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1 局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
在 IP 层抽象的互联网上只能看到 IP 数据报 图中的 IP1→IP2 表示从源地址 IP1 到目的地址 IP2 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
路由器只根据目的站的 IP 地址的网络号进行路由选择 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
在具体的物理网络的链路层 只能看见 MAC 帧而看不见 IP 数据报 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 MAC 帧 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2
IP层抽象的互联网屏蔽了下层很复杂的细节 在抽象的网络层上讨论问题,就能够使用 统一的、抽象的 IP 地址研究主机和主机 或主机和路由器之间的通信 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 MAC 帧 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2
问题: 有关IP地址的一些问题。 IP数据报在互连网中传输时,在经过路由器等结点时,要修改IP数据报中的______地址?它们分别是__________和__________。_______和_________地址始终保持不变。 思考以下问题: 主机或路由器如何知道在MAC帧的首部填入什么样的物理地址? 路由器中的路由表是如何得出的?
4.2.4 地址解析协议 ARP 和逆地址解析协议 RARP 物理地址 IP 地址 RARP 物理地址 IP 地址
地址解析协议 ARP 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。 思考:一台主机如何知道另一台主机的MAC地址?
主机 A 广播发送 ARP 请求分组 主机 B 向 A 发送 ARP 响应分组 我是 209.0.0.5,硬件地址是 00-00-C0-15-AD-18 我想知道主机 209.0.0.6 的硬件地址 ARP 请求 ARP 请求 ARP 请求 ARP 请求 209.0.0.6 209.0.0.5 X Y Z A B 00-00-C0-15-AD-18 主机 B 向 A 发送 ARP 响应分组 我是 209.0.0.6 硬件地址是 08-00-2B-00-EE-0A ARP 响应 209.0.0.6 209.0.0.5 X Y Z A B 00-00-C0-15-AD-18 08-00-2B-00-EE-0A
ARP 高速缓存的作用 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。 注:可用ARP命令查看相关信息。 C:\>ARP -a Internet 地址 物理地址 类型 192.168.0.200 00-40-d0-43-30-03 动态 192.168.0.254 94-0c-6d-23-46-8c 动态 192.168.0.255 ff-ff-ff-ff-ff-ff 静态 224.0.0.252 01-00-5e-00-00-fc 静态
注意事项: ARP是解决同一个LAN上的主机或路由器的 IP 地址和MAC地址的映射问题。 如果所要找的主机和源主机不在同一LAN上,那么就要通过 ARP 找到一个位于本LAN上的某个路由器的MAC地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一网络来做。 从IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP协议就会自动地将该 IP 地址解析为链路层所需要的MAC地址。
使用 ARP 的四种典型情况 发送方是主机,要把IP数据报发送到: 发送方是路由器,要把IP数据报转发到:
什么我们不直接使用硬件地址进行通信? 两个原因: 硬件地址不统一 使用ARP对用户而言是透明的 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。 使用ARP对用户而言是透明的 连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
逆地址解析协议 RARP 逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。这种主机往往是无盘工作站,目前使用的不是很多。
4.2.5 IP 数据报的格式 一个 IP 数据报由首部和数据两部分组成。 在首部的固定部分的后面是一些可选字段,其长度是可变的。
位 4 8 16 19 24 31 首 部 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 生 存 时 间 协 议 首 部 检 验 和 源 IP 地 址 目 的 IP 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 首 部 数 据 部 分 发送在前 IP 数据报
位 4 8 16 19 24 31 固 定 部 分 版 本 区 分 服 务 总 长 度 标 识 标志 片 偏 移 首 部 生 存 时 间 4 8 16 19 24 31 固 定 部 分 版 本 首部长度 区 分 服 务 总 长 度 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 首 部 数 据 部 分 发送在前 IP 数据报
位 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 首 部 数 据 部 分 发送在前 IP 数据报
1. IP 数据报首部的固定部分中的各字段 版本——占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 位 4 8 16 19 24 31 版本——占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
首部长度——占 4 位, IP报文头的总长度=首部长度×4字节。 4 8 16 19 24 31 版 本 首部长度——占 4 位, IP报文头的总长度=首部长度×4字节。 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
在旧标准中叫做服务类型,但实际上一直未被使用过。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 位 4 8 16 19 24 31 版 本 区分服务——占 8 位,用来获得更好的服务 在旧标准中叫做服务类型,但实际上一直未被使用过。 1998 年这个字段改名为区分服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段(值取0) 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 三种服务,分别为: (1)为用户提供尽力而为服务(Best Effort,BE) (2)奖赏服务或加速转发 (Expedited Forwarding, EF) (3)保证服务或保证转发 (Assured Forwarding, AF)
单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过下层协议的最大传送单元 MTU。 4 8 16 19 24 31 总长度——占 16 位,指:首部+数据长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过下层协议的最大传送单元 MTU。 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
标识(identification) 占16 位,它是一个计数器, 用来产生数据报的标识。以便于下层分片后的 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标识(identification) 占16 位,它是一个计数器, 用来产生数据报的标识。以便于下层分片后的 IP报文能够重新正确地装配为原始的报文。 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
标志(flag) 占 3 位,目前只有前两位有意义。 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 标志(flag) 占 3 位,目前只有前两位有意义。 标志字段的最低位是 MF (More Fragment)。MF 1 表示后面“还有分片”。MF 0 表示最后一个分片。 标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF 0 时才允许分片。
片偏移(13 位)指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 片偏移(13 位)指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
【例4-1】 IP 数据报分片
【例4-1】 IP 数据报分片-上例的扩展
生存时间(8 位)记为 TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值(跳数)。 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 生存时间(8 位)记为 TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值(跳数)。
协议(8 位)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 协议(8 位)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程 协议名 ICMP IGMP TCP EGP IGP UDP IPv6 OSPF 字段值 1 2 6 8 9 17 41 89
传输层 TCP UDP ICMP IGMP OSPF 网络层 首部 数 据 部 分 协议字段指出应将数据 部分交给哪一个进程 IP 数据报
这里不采用 CRC 检验码而采用简单的计算方法。 位 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 首部检验和(16 位)字段只检验数据报的首部 不检验数据部分。 这里不采用 CRC 检验码而采用简单的计算方法。 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
发送端 接收端 字 1 16 位 字 1 16 位 数 据 报 首 部 字 2 字 2 16 位 16 位 … … 置为全 0 检验和 16 位 检验和 … … 字 n 字 n 16 位 16 位 16 位 反码算术 运算求和 16 位 反码算术 运算求和 取反码 IP 数据报 取反码 16 位 检验和 16 位 结果 若结果为 0, 则保留; 否则,丢弃该数据报 数据部分 不参与检验和的计算 数据部分
Example The Figure shows an example of a checksum calculation for an IPv4 header without options. The header is divided into 16-bit sections. All the sections are added and the sum is complemented. The result is inserted in the checksum field.
源地址和目的地址都各占 4 字节 位 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源地址和目的地址都各占 4 字节 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
2. IP 数据报首部的可变部分 IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。 选项字段的长度可变,从 1 个字节到 40 个字节不等(不是4的整数倍则用0填充为4字节的整数倍),取决于所选择的项目。 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。 实际上这些选项很少被使用。
4.2.6 IP层转发分组的流程 示例: 如下图:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。 对于连接网络的路由器,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目。这样就可使路由表大大简化。
在路由表中,对每一条路由,最主要的是 (目的网络地址,下一跳地址) 10.0.0.4 20.0.0.7 20.0.0.9 30.0.0.2 30.0.0.1 40.0.0.4 R1 R2 R3 网 1 10.0.0.0 网 2 20.0.0.0 网 3 30.0.0.0 网 4 40.0.0.0 1 路由器 R2 的路由表 目的主机所在的网络 下一跳地址 将网络简化为一条链路 20.0.0.0 直接交付,接口 0 30.0.0.0 直接交付,接口 1 10.0.0.0 20.0.0.7 40.0.0.0 30.0.0.1 10.0.0.4 20.0.0.7 20.0.0.9 30.0.0.2 30.0.0.1 40.0.0.4 R1 R2 R3 链路 1 链路 2 链路 3 链路 4
查找路由表 在路由表中,每一条路由最主要的是(目的网络地址,下一跳地址)两个信息,于是,根据目的网络地址就能确定下一跳路由器,这样做的结果是: IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
特定主机路由 一般情况,Internet所有的分组转发都是基于目的主机所在的网络,但多数情况也允许为特定的目的主机指明一个路由,即特定主机路由。 采用特定主机路由作用: 网络管理人员能更方便地控制网络和测试网络; 在需要考虑某种安全问题时采用。
默认路由(default route) 一般在以下几种情况下使用默认路由: 使用默认路由的优点: 使用默认路由示例 一个网络只有很少的对外连接; 一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接。 使用默认路由的优点: 可减少路由表占用的空间和搜索路由表所用的时间; 主机发送 IP 数据报时效率更高,更能体现其优点。 使用默认路由示例
N1网络中的任一台主机,只要通信的目的网络 不是 N1 和 N2,就一律选择默认路由, 把数据报先间接交付路由器 R1, 让 R1 再转发给下一个路由器。 N2 路由表 R2 目的网络 下一跳 N1 直接 N2 R2 默认 R1 R1 N1 因特网 实际网络中,记为0.0.0.0
注意: IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器;此过程不断重复进行,造成了一定的开销。 使用IP地址,屏蔽了底层的复杂性,但不可直接使用MAC地址,否则会有更多麻烦。(Why?)
分组转发算法 某路由器R收到一个IP数据报 R从数据报的首部提取目的主机的IP地址D, 得出目的网络地址为N 是 R将此数据报直接交付目的主机D 是 网络N与R直接相连? 否 R的路由表中有目的地址为D的特定主机路由? 是 R将此数据报传送给路由表中所指明的下一跳路由器 间接交付 否 R的路由表中有到达网络N的路由? 是 R将此数据报传送给路由表中所指明的下一跳路由器 否 R的路由表中有一个默认路由(0.0.0.0)? 是 R将此数据报传送给路由表中所指明的默认路由器 否 报告转发分组出错 本次转发结束
思考 ? 路由表一开始是如何建立的? 路由表中的内容应该如何更新?
4.3 划分子网和构造超网 问题:何为二级IP地址? 4.3.1 划分子网 1. 从两级 IP 地址到三级 IP 地址 在ARPANET的早期,IP地址的设计不够合理,表现在: IP 地址空间的利用率有时很低。 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。 两级的 IP 地址不够灵活,如:在申请到新的IP前,新增的网络不能连接到Internet上工作。 问题:何为二级IP地址?
三级的 IP 地址 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。 这种做法叫作划分子网(subnetting) 或子网寻址、子网路由选择等。划分子网已成为因特网的正式标准协议。
IP地址 ::= {<网络号>, <子网号>, <主机号>} (4-2) 划分子网的基本思路 划分子网纯属一个组织内部的事情。单位对外仍然表现为没有划分子网的网络。 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。 最后就将 IP 数据报直接交付目的主机。 IP地址 ::= {<网络号>, <子网号>, <主机号>} (4-2)
一个未划分子网的 B 类网络145.13.0.0 网络 145.13.0.0 … … … 我的网络地址 是 145.13.0.0 145.13.3.101 145.13.3.11 … 145.13.7.34 R2 145.13.3.10 145.13.7.35 网络 145.13.0.0 R1 … R3 145.13.7.56 … 所有到网络 145.13.0.0的分组均到达此路由器 145.13.21.23 145.13.21.8 145.13.21.9
划分为三个子网后对外仍是一个网络 145.13.3.101 145.13.3.11 145.13.7.34 145.13.3.10 … R2 145.13.7.35 子网 145.13.3.0 子网 145.13.7.0 R1 … 145.13.7.56 R3 子网 145.13.21.0 … 所有到达网络 145.13.0.0 的分组均到达 此路由器 145.13.21.23 网络 145.13.0.0 145.13.21.9 145.13.21.8
划分子网后变成了三级结构 当没有划分子网时,IP 地址是两级结构。 划分子网后 IP 地址就变成了三级结构。 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。
2. 子网掩码 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
IP 地址的各字段和子网掩码 net-id host-id 两级 IP 地址 145 . 13 . 3 . 10 145 . 13 . 3 . 10 子网号为 3 的网络的网络号 三级 IP 地址 主机号 net-id subnet-id host-id 145 . 13 . 3 . 10 子网掩码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 子网的 网络地址 145 . 13 . 3
(IP 地址) AND (子网掩码) =网络地址 网络号 net-id 主机号 host-id 三级 IP 地址 net-id host-id subnet-id 逐位进行 AND 运算 网络号 子网号 主机号 子网掩码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 子网的 网络地址 net-id subnet-id
默认子网掩码 A 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 255.0.0.0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 255.255.0.0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 255.255.255.0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
子网掩码是一个重要属性 子网掩码是一个网络或一个子网的重要属性。 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
【例4-2】已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址(此处网络地址含子网地址部分) 。 (a) 点分十进制表示的 IP 地址 141 . 14 . 72 . 24 (b) IP 地址的第 3 字节是二进制 141 . 14 . 0 1 0 0 1 0 0 0 . 24 (c) 子网掩码是 255.255.192.0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (d) IP 地址与子网掩码逐位相与 141 . 14 . 0 1 0 0 0 0 0 0 . 0 (e) 网络地址(点分十进制表示) 141 . 14 . 64 . 0
【例4-3】在上例中,若子网掩码改为255.255.224.0。试求网络地址,讨论所得结果。 (a) 点分十进制表示的 IP 地址 141 . 14 . 72 . 24 (b) IP 地址的第 3 字节是二进制 141 . 14 . 0 1 0 0 1 0 0 0 . 24 (c) 子网掩码是 255.255.224.0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 (d) IP 地址与子网掩码逐位相与 141 . 14 . 0 1 0 0 0 0 0 0 . 0 (e) 网络地址(点分十进制表示) 141 . 14 . 64 . 0 不同的子网掩码得出相同的网络地址。 但不同的掩码的效果是不同的。
4.3.2 使用子网掩码的分组转发过程 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。 4.3.2 使用子网掩码的分组转发过程 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。 但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。 因此分组转发的算法也必须做相应的改动。
在划分子网的情况下路由器转发分组的算法 (1) 从收到的分组的首部提取目的 IP 地址 D。 (5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。 (6) 报告转发分组出错。
【例4-4】已知互联网和路由器 R1 中的路由表。主机 H1 向 H2 发送分组。试讨论 R1 收到 H1 向 H2 发送的分组后查找路由表的过程。 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 H2 128.30.33.138 R2 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
请注意:H1 并不知道 H2 连接在哪一个网络上。 否则,就送交路由器 R1,并逐项查找路由表。 要发送的分组的目的 IP 地址:128.30.33.138 R1 的路由表(未给出默认路由器) 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 128.30.33.138 R2 H2 请注意:H1 并不知道 H2 连接在哪一个网络上。 H1 仅仅知道 H2 的 IP 地址是 128.30.33.138 因此 H1 首先检查主机 128.30.33.138 是否连接在本网络上 如果是,则直接交付; 否则,就送交路由器 R1,并逐项查找路由表。 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
主机 H1 首先将本子网的子网掩码 255. 255. 255. 128 与分组的 IP 地址 128. 30. 33 主机 H1 首先将本子网的子网掩码 255.255.255.128 与分组的 IP 地址 128.30.33.138 逐比特相“与”(AND 操作) 255.255.255.128 AND 128.30.33.138 的计算 128.30.33.13 H1 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 255 就是二进制的全 1,因此 255 AND xyz = xyz, 这里只需计算最后的 128 AND 138 即可。 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128 → 10000000 138 → 10001010 128.30.33.130 1 128.30.33.129 H2 逐比特 AND 操作后:10000000 → 128 128.30.33.138 R2 1 128.30.36.2 255.255.255.128 128. 30. 33.138 128. 30. 33.128 逐比特 AND 操作 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H1 的网络地址 H3 128.30.36.12
因此 H1 必须把分组传送到路由器 R1 然后逐项查找路由表 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 H2 128.30.33.138 R2 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
路由器 R1 收到分组后就用路由表中第 1 个项目的 子网掩码和 128.30.33.138 逐比特 AND 操作 R1 收到的分组的目的 IP 地址:128.30.33.138 R1 的路由表(未给出默认路由器) 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 不一致 128.30.33.130 1 128.30.33.129 R2 H2 128.30.33.138 255.255.255.128 AND 128.30.33.138 = 128.30.33.128 不匹配! (因为128.30.33.128 与路由表中的 128.30.33.0 不一致) 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
路由器 R1 再用路由表中第 2 个项目的 子网掩码和 128.30.33.138 逐比特 AND 操作 R1 收到的分组的目的 IP 地址:128.30.33.138 R1 的路由表(未给出默认路由器) 128.30.33.13 目的网络地址 子网掩码 下一跳 128.30.33.0 128.30.33.128 128.30.36.0 255.255.255.128 255.255.255.0 接口 0 接口 1 R2 子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128 H1 一致! 128.30.33.1 R1 子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128 128.30.33.130 1 128.30.33.129 128.30.33.138 R2 H2 255.255.255.128 AND 128.30.33.138 = 128.30.33.128 匹配! 这表明子网 2 就是收到的分组所要寻找的目的网络 1 128.30.36.2 子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0 H3 128.30.36.12
子网划分应用举例 例1: 设有200台机器,要分成4个子网来。 由要求,设每个子网有50台机器,使用的网络地址为192.168.10.0,C类的IP,默认子网掩码应为255.255.255.0,现我们要分子网,所以每个子网应该用64个IP(其中两个不可用),然后计算:子网掩码应该是256-64=192,那么最终子网掩码应该为:255.255.255.192。可以计算出,每个子网对应的IP地址分别为:0-63,64-127,128-191,192-255,这样我们就可以把四个区域分别设定到四个子网的机器上了。
子网划分应用举例 例2:已知主机地址,求网络及广播地址 一台主机的IP地址是202.112.14.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址。 方法一:把这个主机地址和子网掩码都换算成二进制数,两者进行逻辑与运算后即可得到网络地址。(137 and 224=128,128+32-1=159) 方法二:255.255.255.224的掩码所容纳的子网数有256-224=32个(含网络和广播地址),则具有这种掩码的网络地址一定是32的倍数。而网络地址是子网IP地址的开始,广播地址是结束,可使用的主机地址在这个范围内,因此略小于137而又是32的倍数的只有128,所以得出网络地址是202.112.14.128。而广播地址就是下一个网络的网络地址减1。而下一个32的倍数是160,因此可以得到广播地址为202.112.14.159。
子网划分应用举例 例3:根据主机数量进行子网地址的规划和计算子网掩码 如:一个子网有10台主机,则此子网就需要10+2=12个IP地址。12小于16(16=24),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240。 如果一个子网有14台主机和一台网关,则有分配地址时要注意错误:由于有网关,则主机数变为14+2+1=17,大于16,所以我们只能分配具有32个地址(32=25)空间的子网。这时子网掩码为:255.255.255.224。
子网划分应用举例 例4:用子网掩码实现多网共用网址 如果一个单位有多个分布在各地的网络,且每个网络的主机数量并不很多,那么申请多个网址不仅会造成IP地址的浪费,而且会付出较大的经济代价。在这种情况下,可以使多个子网共用一个网址,以节省IP地址和资金。 如:某单位有三个位于不同地点的子网(以下称为甲、乙、丙网),各网络的主机数分别为20、25和50。且此单位已申请了一个网址为202.119.115.0,请设计子网,以合理使用该IP。
[例4]解决过程(Part 1) 将甲和乙的子网掩码改为255.255.255.224(224=11100000B)。 用子网掩码的高三位来分割子网,共有八种组合,它们分别为: 最后我们选第七子网给甲网,第八子网给乙网,因为各个子网都支持30台主机,所以选择的子网足以满足甲网和乙网20台和25台的需要。 编号 子网ID 主机ID 1 000 00001~11110(1-30) 5 100 00001~11110(129-158) 2 001 00001~11110(33-62) 6 101 00001~11110(161-190 ) 3 010 00001~11110(65-94) 7 110 00001~11110 (193-222 ) 4 011 00001~11110(97-126) 8 111 00001~11110 (223-254 )
[例4]解决过程(Part 2) 丙网有50台主机,按上述分割方法无法满足它对IP地址的需要。这时,我们将它的子网掩码设成255.255.255.192,由于192的二进制值为11000000,按上述方法,它可以划分为两个子网,分别为: 第一子网:00000001-00111110即 1-62 第二子网:01000001-01111110即65-126 每个子网有62个IP地址可用,可将第二子网分配给丙网。至此,实现了多子网共用一个网址。
4.3.3 无分类编址 CIDR 1. 网络前缀 划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在 1992 年因特网仍然面临三个必须尽早解决的问题: B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕! 因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。 整个 IPv4 的地址空间最终将全部耗尽。
IP 编址问题的演进 1987年,RFC 1009就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码VLSM(Variable Length Subnet Mask)以进一步提高IP地址资源的利用率。 在VLSM的基础上又进一步研究出无分类编址方法以解决前述的前两个问题,它的正式名字是无分类域间路由选择CIDR (Classless Inter-Domain Routing)。
CIDR 最主要的特点 CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。 CIDR使用各种长度的“网络前缀” (network-prefix)来代替分类地址中的网络号和子网号,前缀用来指明网络,后面部分用来指明主机。 IP 地址从三级编址(使用子网掩码)又回到了两级编址。
无分类的两级编址 无分类的两级编址的记法是: IP地址 ::= {<网络前缀>, <主机号>} (4-3) CIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即:IP地址/n;n为网络前缀所占的位数(对应于三级编址中子网掩码中 1 的个数)。 CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
CIDR 地址块 128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的20是网络前缀的位数,所以这个地址的主机号是 12 位)。 这个地址块的起始地址是 128.14.32.0。 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。 128.14.32.0/20 地址块的最小地址:128.14.32.0 128.14.32.0/20 地址块的最大地址:128.14.47.255 注: (1) /20表示掩码为B::=11111111 11111111 11110000 00000000 (2) 设该地址块中最大IP地址为D::=x.y.z.w,则 D and B = 128.14.32.0,由此即得上述地址。 (3)或:128.14.32.0+212=128.14.47.255 全 0 和全 1 的主机号地址一般不使用。 20个1 (为什么?)
128.14.32.0/20 表示的地址(212 个地址) 最小地址 10000000 00001110 00100000 00000000 10000000 00001110 00100000 00000001 10000000 00001110 00100000 00000010 10000000 00001110 00100000 00000011 10000000 00001110 00100000 00000100 10000000 00001110 00100000 00000101 10000000 00001110 00101111 11111011 10000000 00001110 00101111 11111100 10000000 00001110 00101111 11111101 10000000 00001110 00101111 11111110 10000000 00001110 00101111 11111111 所有地址 的 20 位 前缀都是 一样的 最大地址
路由聚合(route aggregation) 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。 路由聚合也称为构成超网(supernetting)。 CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(有时也叫子网掩码)。 对于/20 地址块,它的掩码是 20 个连续的 1(主机位数是32-20=12个)。斜线记法中的数字就是掩码中1的个数。
CIDR 记法的其他形式 10.0.0.0/10 可简写为 10/10,也就是把点分十进制中低位连续的 0 省略。 10.0.0.0/10 隐含地指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0。此掩码可表示为 11111111 11000000 00000000 00000000 网络前缀的后面加一个星号 * 的表示方法, 如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。 255 192 掩码中有 10 个连续的 1
构成超网 前缀长度不超过23位的CIDR地址块都包含了多个C类地址。这些 C 类地址合起来就构成了超网。 ISP为了简化处理对CIDR 地址块中的地址所加的条件: 块中的地址连续; 块中地址个数为2n(n=0,1,…); 块的起始地址要能被地址个数整除。 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
CIDR 地址块划分举例 ISP 大学 X 因特网 三系 四系 二系 一系 206.0.64.0/18 206.0.68.0/22 206.0.68.0/23 206.0.70.0/24 206.0.71.0/25 206.0.71.128/25 206.0.68.0/25 206.0.68.128/25 206.0.69.0/25 206.0.69.128/25 206.0.70.0/26 206.0.70.64/26 206.0.70.128/26 206.0.70.192/26 206.0.71.0/26 206.0.71.64/26 206.0.71.128/26 206.0.71.192/26 三系 四系 二系 一系 单位 地址块 二进制表示 地址数 ISP 206.0.64.0/18 11001110.00000000.01* 16384 大学 206.0.68.0/22 11001110.00000000.010001* 1024 一系 206.0.68.0/23 11001110.00000000.0100010* 512 二系 206.0.70.0/24 11001110.00000000.01000110.* 256 三系 206.0.71.0/25 11001110.00000000.01000111.0* 128 四系 206.0.71.128/25 11001110.00000000.01000111.1* 128
CIDR 地址块划分举例 ISP 大学 X 因特网 206.0.64.0/18 因特网 206.0.68.0/22 206.0.68.0/23 206.0.70.0/24 206.0.71.0/25 206.0.71.128/25 206.0.68.0/25 206.0.68.128/25 206.0.69.0/25 206.0.69.128/25 206.0.70.0/26 206.0.70.64/26 206.0.70.128/26 206.0.70.192/26 206.0.71.0/26 206.0.71.64/26 206.0.71.128/26 206.0.71.192/26 三系 四系 二系 一系 这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。
2. 最长前缀匹配 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。 网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。 最长前缀匹配又称为最长匹配或最佳匹配。
最长前缀匹配举例 收到的分组的目的地址 D = 206.0.71.128 路由表中的项目: 206.0.68. 0 /22 ( ISP ) 206.0.71.128/25 (四系) 查找路由表中的第 1 个项目 第 1 个项目 206.0.68.0/22 的掩码 M 有 22 个连续的 1。 M = 11111111 11111111 11111100 00000000 因此只需把 D 的第 3 个字节转换成二进制。 M = 11111111 11111111 11111100 00000000 AND D = 206. 0. 01000100. 0 206. 0. 01000100. 0 与 206.0.68.0/22 匹配!
最长前缀匹配举例 收到的分组的目的地址 D = 206.0.71.128 路由表中的项目: 206.0.68. 0 /22 ( ISP ) 206.0.71.128/25 (四系) 再查找路由表中的第 2 个项目 第 2 个项目 206.0.71.128/25 的掩码 M 有 25 个连续的 1。 M = 11111111 11111111 11111111 10000000 因此只需把 D 的第 4 个字节转换成二进制。 M = 11111111 11111111 11111111 10000000 AND D = 206. 0. 71. 10000000 206. 0. 71. 10000000 与 206.0.71.128/25 匹配!
最长前缀匹配 D AND (11111111 11111111 11111100 00000000) = 206.0.68.0/22 匹配( ISP ) D AND (11111111 11111111 11111111 10000000) = 206.0.71.128/25 匹配(四系) 选择两个匹配的地址中更具体的一个,即选择最长前缀的地址(此例中为第二个地址)。
3. 使用二叉线索查找路由表 当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary tier)。 IP地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。
用 5 个前缀构成的二叉线索 32 位的 IP 地址 唯一前缀 01000110 00000000 00000000 00000000 0100 01010110 00000000 00000000 00000000 0101 01100001 00000000 00000000 00000000 011 10110000 00000010 00000000 00000000 10110 10111011 00001010 00000000 00000000 10111 如果多个地址的前缀一样,则可直接跳过查找后面地址,以提高查找速度,这是其中一种地址压缩技术。 1
综合应用题 某公司网络拓扑图如下图所示,路由器R1通过接口E1、E2分别连接局域网1、局域网2,通过接口L0连接路由器R2,并通过路由器R2连接域名服务器与互联网。R1的L0接口的IP地址是202.118.2.1;R2的L0接口的IP地址是202.118.2.2,L1接口的IP地址是130.11.120.1,E0接口的IP地址是202.118.3.1;域名服务器的IP地址是202.118.3.2。 互联网 E1 LAN1 R2 R1 L0 202.118.2.2 L1 130.11.120.1 L0 202.118.2.1 E2 LAN2 E0 202.118.3.1 域名服务器 202.118.3.2
综合应用题 R1和R2的路由表结构为: 将IP地址空间202.118.1.0/24划分为两个子网,分配给局域网1、局域网2,每个局域网分配的地址数不少于120个,请给出子网划分结果。说明理由或给出必要的计算过程。 请给出R1的路由表,使其明确包括到局域网1的路由、局域网2的路由、域名服务器的主机路由和互联网的路由。 请采用路由聚合技术,给出R2到局域网1和局域网2的路由。 目的网络IP地址 子网掩码 下一跳IP地址 接口
参考解答: (1)无类IP地址的核心是采用不定长的网络号和主机号,并通过相应的子网掩码来表示(即网络号部分为1,主机号部分为0)。本题中网络地址位数是24,由于IP地址是32位,因此其主机号部分就是8位。因此,子网掩码就是11111111 11111111 11111111 00000000,即255.255.255.0。 根据无类IP地址的规则,每个网段中有两个地址是不分配的:主机号全0表示网络地址,主机号全1表示广播地址。因此8位主机号所能表示的主机数就是28-2=254台。 该网络要划分为两个子网,每个子网要120台主机,因此主机位数X应该满足下面三个条件: X<8(在主机号长为8位的网络进行划分,所以X一定要<8位) 2X>120,因为根据题意需要容纳120台主机。 X是整数。 解上述方程,得到X=7,子网掩码就是255.255.255.128。 所以划分的两个网段是:202.118.1.0/25与202.118.1.128/25。
参考解答: (2)填写R1的路由表 填写到局域网1的路由。局域网1的网络地址和掩码在问题(1)已经求出来了,为202.118.1.0/25。则R1路由表应填入的网络地址为202.118.1.0,掩码为255.255.255.128。由于局域网1是直接连接到路由器R1的E1口上的,因此,下一跳地址填写直接路由(Direct)。接口填写E1. 填写到局域网2的路由表1。 局域网2的网络地址和掩码在问题(1)中已经求出来了,为202.118.1.128/25。则R1路由表应该填入的网络地址为202.118.1.128,掩码为255.255.255.128.由于局域网2是直接连接到路由器R1的E2口上的,因此,下一跳地址填写直接路由。接口填写E2。填写到域名服务器的路由。由于域名服务器的IP地址为202.118.3.2,而该地址为主机地址,因此掩码为255.255.255.255。同时,路由器R1要到DNS服务器,就需要通过路由器R2的接口L0才能到达,因此下一跳地址填写L0的IP地址(202.118.2.2)。
参考解答: 填写互联网路由。 综上,填写的路由表如下: R1路由表: 本题实质是编写默认路由。默认路由是一种特殊的静态路由,指的是当路由表中与包的目的地址之间没有匹配的表项时路由器能够做出的选择。如果没有默认路由器,那么目的地址在路由表中没有匹配表项的包将被丢弃。默认路由在某些时候非常有效,当存在末梢网络时,默认路由会大大简化路由器的配置,减轻管理员的工作负担,提高网络性能。默认路由叫做“0/0”路由,因为路由的IP地址0.0.0.0,而子网掩码也是0.0.0.0。同时路由器R1连接的网络需要通过路由器R2的L0口才能到达互联网络,因此下一跳地址填写L0的IP为202.118.2.2。 综上,填写的路由表如下: R1路由表: 目的网络IP地址 子网掩码 下一跳IP地址 接口 202.118.1.0 255.255.255.128 Direct E1 202.118.1.128 E2 202.118.3.2 255.255.255.255 202.118.2.2 L0 0.0.0.0
参考解答: (3)填写R2到局域网1和局域网2的路由表2。局域网1和局域网2的地址可以聚合为202.118.1.0/24,而R2去往局域网1和局域网2都是同一条路径。因此,路由表里面只需要填写到202.118.1.0/24网络的路由即可,如下表所示: R2路由表 : 目的网络IP地址 子网掩码 下一跳IP地址 接口 202.118.1.0 255.255.255.0 222.118.2.1 L0 注:以上为2009年考研题
综合应用题 某局域网采用CSMA/CD协议实现介质访问控制,数据传输速率为10Mbps,主机甲和主机乙之间的距离为2Km,信号传播速度是200000Km/s。请回答下列问题,并给出计算过程。 若主机甲和主机乙发送数据时发生冲突,则从开始发送数据时刻起,到两台主机均检测到冲突时刻止,最短需经多长时间?最长需经过多长时间?(假设主机甲和主机乙发送数据过程中,其他主机不发送数据) 若网络不存在任何冲突与差错,主机甲总是以标准的最长以大网数据帧(1518字节)向主机乙发送数据,主机乙每成功收到一个数据帧后,立即发送下一个数据帧,此时主机甲的有效数据传输速率是多少?(不考虑以太网帧的前导码)
参考解答: (1)当甲乙同时向对方发送数据时,两台主机均检测到冲突所需时间最短; 1km÷200000km/s×2=10-5s=0.01ms 当一方发送的数据马上要到达另一方时,另一方开始发送数据,两台主机均检测到冲突所需时间最长; 2km÷200000km/s×2=2×10-5s=0.02ms (2)发送一帧所需时间(传输时间):1518B÷10Mbps=1.2144ms 数据传播时间:2km÷200 000km/s=10-5s=0.01ms 有效的数据传输速率=10Mbps×1.2144ms÷1.2244ms=9.92Mbps 注:以上为2010年考研题
4.4 网际控制报文协议 ICMP 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。它是为了弥补IP不考虑差错校验和差错控制的缺点而设计的。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 ICMP 不是高层协议,而是 IP 层的协议。 ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
ICMP 报文的格式 8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型) 8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型) ICMP 的数据部分(长度取决于类型) ICMP 报文 IP首部 数 据 部 分 IP 数据报
4.4.1 ICMP 报文的种类 ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
Destination unreachable ICMP 差错报告报文共有 5 种 终点不可达(类型:3) Destination unreachable 当路由器不能给数据报找到路由器或主机不能传递数据报时,便丢弃数据报,由路由器或主机向信源发送 当路由器或主机由于拥塞而丢弃数据报时,向信源发送。目的:告诉源端(1)报文已丢弃,(2)放慢发送。 源点抑制(类型:4) Source quench 结点收到TTL=0的数据报而丢弃数据报或信宿不能在规定的时间内收到一个数据报的全部分段而丢弃已收到的分段时向主机发送 超时(类型:11) Time exceeded 参数问题(类型:12) Parameter problems 路由器或终点收到数据报首部字段有问题的数据报,丢弃数据报同时向信源发送 重定向(类型:5) Redirection 当路由器将改变路由时,为了让主机知道下次数据报应发送的路由器,向主机发送
ICMP 差错报告报文的数据字段的内容 IP 数据报的数据字段 收到的 IP 数据报 IP 数据报 首部 8 字节 数据字段的前8字节包含了TCP或UDP的端口号或TCP的序列号,这样源端就可以将差错通知这些协议。 ICMP 的 前 8 字节 IP 数据报 首部 8 字节 ICMP 差错报告报文 IP首部 ICMP 差错报告报文 装入 ICMP 报文的 IP 数据报 IP 数据报
不应发送 ICMP 差错报告报文的几种情况 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
ICMP 询问报文有两种 回送请求和回答报文:用于测试目的站是否可达及了解其状态。 时间戳请求和回答报文:用于进行时钟同步和测量时间。 主机或路由器向某特定目的的主机发出询问,对方收到后进行应答。 时间戳请求和回答报文:用于进行时钟同步和测量时间。 请某个主机或路由器回答当前的日期和时间(请求报文中有一个32位的字段,其中的数据表示从1900.1.1至当前的秒数)。 下面的几种 ICMP 报文不再使用 信息请求与回答报文 掩码地址请求和回答报文 路由器询问和通告报文
4.4.2 ICMP的应用举例 PING (Packet InterNet Groper) PING 用来测试两个主机之间的连通性。 PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过传输层的 TCP 或UDP。
PING 的应用举例 C:\>ping 127.0.0.1 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<10ms TTL=128 Ping statistics for 127.0.0.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
Traceroute 的应用举例 C:\>tracert www.baidu.com.cn Tracing route to ps_other.a.shifen.com [61.135.163.75] over a maximum of 30 hops: 1 <10 ms <10 ms <10 ms 192.168.0.254 2 * 51 ms 56 ms 172.17.18.2 3 48 ms 41 ms 54 ms 60.31.252.225 4 54 ms 44 ms 55 ms 202.99.226.213 5 53 ms 42 ms 55 ms 202.99.226.197 6 60 ms 60 ms 58 ms 219.158.6.245 7 112 ms 121 ms 117 ms 123.126.0.218 8 113 ms 115 ms 117 ms 61.148.155.226 9 108 ms 114 ms 104 ms 202.106.43.30 10 110 ms 116 ms 119 ms 61.135.163.75 Trace complete.
练习题 TCP/IP参考模型的网络层提供的是( )。 A A.无连接不可靠的数据报服务 B.无连接可靠的数据报服务 C.有连接不可靠的虚电路服务 D.有连接可靠的虚电路服务 某网络拓扑如下图所示,路由器R1只有到达子网192.168.1.0/24的路由。为使R1可以将IP分组正确地路由到图中所有子网,则在R1中需要增加的一条路由(目的网络,子网掩码,下一跳)是( ). A.192.168.2.0 255.255.255.128 192.168.1.1 B.192.168.2.0 255.255.255.0 192.168.1.1 C.192.168.2.0 255.255.255.128 192.168.1.2 D.192.168.2.0 255.255.255.0 192.168.1.2 在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是( ). A.0 B.1 C.2 D.4 以上选自2011年硕士研究生入学考试通考题 A C 192.168.1.1 192.168.1.0/24 192.168.2.0/25 192.168.2.128/25 192.168.1.2 192.168.2.1 192.168.2.130 R1 R2 C
4.5 因特网的路由选择协议 4.5.1 有关路由选择协议的几个基本概念 1. 理想的路由算法 4.5.1 有关路由选择协议的几个基本概念 1. 理想的路由算法 算法必须是正确的和完整的—能按路由表到达目的地。 算法在计算上应简单—不应增大网络负荷及额外开销。 算法要有自适应性—应能适应通信量和网络拓扑的变化。 算法应具有稳定性—不应得出不断变化的路由。 算法应是公平的—对所有用户都平等。 算法应是最佳的—相对某特定要求得出合理的选择。
关于“最佳路由” 不存在一种绝对的最佳路由算法。 路由选择是个复杂的问题 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 实际的路由选择算法,应尽可能接近于理想的算法。 路由选择是个复杂的问题 它是网络中的所有结点共同协调工作的结果。 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。
从路由算法的自适应性考虑 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
2. 分层次的路由选择协议 因特网采用分层次的路由选择协议。 2. 分层次的路由选择协议 因特网采用分层次的路由选择协议。 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。 为此原因,因特网将整个互联网划分为许多较小的自治系统(Autonomous system),记为AS。
自治系统 AS (Autonomous System) 在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。 相应的,路由选择协议被划分为两类。
因特网有两大类路由选择协议 内部网关协议 IGP (Interior Gateway Protocol) 在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。 外部网关协议EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
自治系统和内部网关协议、外部网关协议 自治系统之间的路由选择也叫做域间路由选择(interdomain routing), 自治系统 B 自治系统 A 用外部网关协议 (例如,BGP-4) R1 R2 用内部网关协议 (例如,RIP) 用内部网关协议 (例如,OSPF) 自治系统之间的路由选择也叫做域间路由选择(interdomain routing), 在自治系统内部的路由选择叫做域内路由选择(intradomain routing)
注意两点 因特网的早期 RFC 文档中未使用“路由器”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个名称当作同义词。 IGP和EGP是协议类别的名称。但RFC在使用EGP这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是EGP。因此在遇到名词 EGP 时,应弄清它是指旧的协议EGP还是指外部网关协议EGP这个类别。
因特网的路由选择协议 内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。 外部网关协议 EGP:目前使用的协议就是 BGP(Border Gateway Protocol)。
4.5.2 内部网关协议 RIP 1. 工作原理 RIP (Routing Information Protocol, 路由信息协议)是内部网关协议 IGP中最先得到广泛使用的协议。 RIP 是一种分布式的基于距离向量的路由选择协议。是Internet的标准协议,最大特点是简单。 RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
“距离”的定义 从一路由器到直接连接的网络的距离定义为 1。 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。 RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。 这里的“距离”实际上指的是“最短距离”。
“距离”的定义 RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 RIP 允许一条路径最多只能包含 15 个路由器,“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。 RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
RIP 协议的三个要点 仅和相邻路由器交换信息。 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 按固定的时间间隔交换路由信息,例如,每隔 30 秒。
路由表的建立 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 经过若干次更新后,所有的路由器最终都会知道到达本AS中任何一个网络的最短距离和下一跳路由器的地址。 RIP 协议的收敛(convergence)过程较快,收敛即在自治系统中所有的结点都得到正确的路由选择信息的过程。 路由表中最主要的信息:到某个网络的距离和应经过的下一跳的地址。 路由表更新的原则:找出到每个目的网络的最短距离。
2. 距离向量算法 路由器R0等待相邻路由器R1(设地址为 X)的路由更新RIP报文 是 否 是否已过180秒? 否 将RIP 报文中的所有项目的把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1 是 RIP更新报文中项目是否读完? 否 取出RIP报文中的一个项目(一行) 项目的目标网络是否出现在R0路由表中? 是 否 下一跳字段是否和R0中的一项相同? 否 是 否 项目中的距离<R0路由表中的距离? 是 把该项目加到R0路由表中 替换R0路由表中的项目 更新R0路由表
RIP更新路由表实例 Net2 4 Net3 8 Net6 Net8 3 Net9 5 Net2 5 C Net3 9 Net6 Net8 从C来的RIP报文 Net2 4 Net3 8 Net6 Net8 3 Net9 5 跳数加1、下一跳改为C后 下一跳字段均为C,故替换 Net2 5 C Net3 9 Net6 Net8 4 Net9 6 下一跳字段不同,但跳数少,故替换 更新后的路由表 旧的路由表 增加 Net1 7 A Net2 5 C Net3 9 Net6 Net8 4 E Net9 F Net1 7 A Net2 2 C Net6 8 F Net8 4 E Net9 更新算法 下一跳字段不同,但跳数多,故不变
路由器之间交换信息 RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
RIP的信息共享例 下图中,方框代表路由器或网关,云代表LAN(类型任意),数字为LAN的ID。RIP假设每条链路的费用为1,费用基于跳计数,传输距离是到达目的地所需链路数目的函数。 B NET55 NET14 C A NET78 F NET92 NET66 NET23 NET08 E D
RIP的信息共享 下图显示了算法的第一步,文本框内描述了路由器和它们邻居之间的关系。整个网络中的路由器通过一段时间后,最终会了解到互联网络中的每个其他路由器。 周期性地发送关于整个互联网的知识给A和C 周期性地发送关于整个互联网的知识给B和D NET55 NET14 B 周期性地发送关于整个互联网的知识给B、E和F 周期性地发送关于整个互联网的知识给A C A NET78 F NET92 NET66 NET23 NET08 E D 周期性地发送关于整个互联网的知识给E和C 周期性地发送关于整个互联网的知识给A和D
RIP路由表 1、创建表:在开始时,路由器会根据它所连接的网络(有一点注意:路由器连接到多少外端口就有多少个逻辑地址)创建如下格式的路由表(有些协议可能要求更多项),表中至少包含三类信息:网络ID(包的最终目的地)、费用(包到达那里必须进行的跳数)和下一个路由器的ID (包要到达特定的目标所需要经过的下一个路由器) ,通过引表,路由器就知道一个包通过路由器X到达路由器Y需要的开销。 网络ID 花费 下一跳 ……
RIP路由表—初始值 设在初始时,各路由器的路由表如下图所示(无第三列),由于路由器要进行定期的信息共享,所以经过一段时间后,路由表的第三列就会逐渐被更新,最终添上对应的信息。(箭头表示路由器发送基础表的方向) 14 1 -- 55 B NET55 NET14 55 1 -- 66 14 1 -- 23 78 78 1 -- 92 C A NET78 F NET92 NET66 NET23 08 1 -- 66 08 1 -- 23 NET08 E D
RIP路由表—更新路由表 下图显示了路由器A更新自己路由表的过程。当A从B接收到一个路由表时,它用这个信息来更新自己的路由表,更新的过程为:将B发来的路由表中的费用分别加1,得到A到对应网络的费用,然后再将此表与A自己的表合并,形成一个更复杂的新表。对于重复项,A将保留最小费用的版本,而将其它项删除。 A的旧表 14 1 -- 23 78 14 1 -- 2 B 23 55 78 14 1 -- 23 55 2 B 78 14 1 -- 55 14 2 B 55 1 跳 + = A的新表 合并以后 从B收到的 调整以后
RIP路由表—更新后的路由表 下图为经过一段时间的更新后得到的最终的路由表。 M B C A F D E NET55 NET14 NET78 08 3 A 14 1 -- 23 2 55 66 C 78 92 08 2 D 14 3 B 23 4 55 1 -- 66 78 92 NET55 08 2 E 14 1 -- 23 55 B 66 3 78 92 F NET14 B 08 3 A 14 2 23 55 66 4 78 1 -- 92 C A NET78 F NET92 08 1 -- 14 2 A 23 55 3 66 E 78 92 08 2 -- 14 3 E 23 4 55 1 C 66 78 92 NET66 NET23 NET08 E D
RIP2 协议简介 RIP2是于1998年11月公布的较新的RIP版本,较RIP性能上有些改进。 RIP2支持变长子网掩码和CIDR。
3. RIP2 协议的报文格式 4 字节 地址族标识符 路由标记 某网的网络地址 4 字节 某网的子网掩码 命令 版本 必为0 填自治系统号(RIP可能收到AS以外的路由选择信息),共216个,目前已用3万多个。对于鉴别报文,此字段为鉴别类型数据。 1:请求路由信息 2:对请求的响应或路由更新报文 4 字节 为了4字节的对齐 地址族标识符 路由标记 某网的网络地址 4 字节 某网的子网掩码 命令 版本 必为0 下一跳路由器地址 RIP 报文 首部 路由部分 RIP2首部 距离(跳数) (1-16) RIP2路由部分 路由信息(20 字节/路由) 可重复出现最多 25 个。 对于鉴别报文,第1个路由信息余下的16字节为鉴别数据。 IP 数据报 IP 首部 UDP首部 UDP 用户数据报
RIP 协议的优缺点 RIP 协议最大的优点就是实现简单,开销较小。 缺点: 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
RIP协议缺点:坏消息传播的慢 “”表示“直接交付” “1”表示“从本路由器到网 1” “1”表示“距离是 1” 正 常 情 况 网 1 1 1 网 2 1 2 R1 网 3 R1 R2 “”表示“直接交付” “1”表示“从本路由器到网 1” “1”表示“距离是 1” R1 说:“我到网 1 的距离是 1,是直接交付。”
RIP协议缺点:坏消息传播的慢 “R1”表示 “1”表示“从本路由器到网 1” 经过 R1 “2”表示“距离是 2” 正 常 情 况 网 1 1 1 网 2 1 2 R1 网 3 R1 R2 “R1”表示 经过 R1 “1”表示“从本路由器到网 1” “2”表示“距离是 2” R2 说:“我到网 1 的距离是 2,是经过 R1。”
RIP协议缺点:坏消息传播的慢 R1 说:“我到网 1 的距离是 16 (表示无法到达),是直接交付。” 正 常 情 况 网 1 1 1 网 2 1 2 R1 网 3 R1 R2 R2 R1 网 1 网 3 网 2 网 1出了故障 1 16 1 2 R1 R1 说:“我到网 1 的距离是 16 (表示无法到达),是直接交付。” 但 R2 在收到 R1 的更新报文之前,还发送原来的报文, 因为这时 R2 并不知道网 1出了故障。
RIP协议缺点:坏消息传播的慢 正 常 情 况 网 1 1 1 网 2 1 2 R1 网 3 R1 R2 R2 R1 网 1 网 3 网 2 网 1出了故障 1 16 1 2 R1 1 3 R2 R1 收到 R2 的更新报文后,误认为可经过 R2 到达网1,于是更新自己的路由表,说:“我到网 1 的距离是 3,下一跳经过 R2”。然后将此更新信息发送给 R2。
RIP协议缺点:坏消息传播的慢 R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。 正 常 情 况 网 1 1 1 网 2 1 2 R1 网 3 R1 R2 R2 R1 网 1 网 3 网 2 网 1出了故障 1 16 1 2 R1 1 3 R2 1 4 R1 R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。
RIP协议缺点:坏消息传播的慢 这就是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 RIP 的一个主要缺点。 正 常 情 况 网 1 1 1 网 2 1 2 R1 网 3 R1 R2 网 1 网 2 网 3 R1 R2 网 1出了故障 1 16 1 2 R1 1 3 R2 1 4 R1 1 5 R2 … … 1 16 R2 1 16 R1 这样不断更新下去,直到R1和R2到网1的距离都增大到16时,R1 和 R2 才知道网 1 是不可达的。
4.5.3 内部网关协议 OSPF OSPF (Open Shortest Path First)是为了克服RIP的缺点,在1989年提出的一种路由协议。 1. OSPF协议的基本特点: “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。 “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF。 OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。 是分布式的链路状态协议(Link state protocol)。RIP是距离向量协议。
三个要点 向本AS中所有路由器发送信息,这里使用的方法是洪泛法(Flooding)或扩散法;RIP是仅向相邻的路由器发送信息 Flooding :通过所有输出端口向所有相邻路由器发送信息,其它路由器又再将此消息发往相邻路由器(不发给刚发来信息的路由器),最后每个路由器都得到一份相同信息的拷贝(主要是当网络拓扑发生变化的时候分发LSA 和同步link state database )。 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。而RIP发送的是到所有网络的距离和下一跳的路由。 “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。度量表示费用、带宽、时延等,由网管人员决定。 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。而RIP是定期交换路由表信息的。
链路状态数据库(link-state database) 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。 OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。 每一路由器使用库的数据,能构造出自己的路由表,进而知道全网共有多少路由器以及哪些路由器是相连的、代价是多少等。 注:RIP协议的每一路由器知道所有网络的距离以及下一跳的路由器,但不知道全网的拓扑结构。
OSPF 的区域(Area) 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。 区域也不能太大,在一个区域内的路由器最好不超过 200 个。 划分区域的好处: 将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,减少了整个网络上的通信量。 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
OSPF 使用层次结构的区域划分 在上层的区域叫作主干区域(backbone area)。其作用是用来连通其他在下层的区域。主干区域的标识符规定为0.0.0.0。 分层的优点: 减少了在每一个区域内交换的路由信息的通信量,使OSPF能够适用于规模很大的自治系统中。 分层的不足: 交换信息的种类增多了; OSPF协议更加复杂。
OSPF 划分为两种不同的区域 主干区域 (Backbone area); 区域(Area)。 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 R1 R6 网 6 R3 R7 网 1 R5 R9 网 7 网 2 R4 R2 网 3 网 8 R8 网 4 网 5 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2
主干路由器 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2 主干区域内的路由器称主干路由器(Backbone router),它可以同时是区域边界路由器。其中1个主干路由器称为AS边界路由器(如本例中的R6),专门和本AS外的其它AS交换路由信息。 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 R1 R6 网 6 R3 R7 网 1 R5 R9 网 7 网 2 R4 R2 网 3 网 8 R8 网 4 网 5 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2
区域边界路由器 从其它区域来的信息通过区域边界路由器(Area border router)进行交换,每个区域至少要有一个区域边界路由器。 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 R1 R6 网 6 R3 R7 网 1 R5 R9 网 7 网 2 R4 R2 网 3 网 8 R8 网 4 网 5 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2
OSPF 直接用 IP 数据报传送 OSPF 不用 UDP 而是直接用 IP 数据报传送。 OSPF 构成的数据报很短,有两个好处: 可减少路由信息的通信量。 可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF 的其他特点 OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价,如对实时服务设置成高代价等。因此,OSPF 对于不同类型的业务可计算出不同的路由。 链路的代价可设为1~65525中任何一数,很灵活; 商用中一般根据链路带宽计算链路代价的,而RIP则无此灵活性。 如果到同一目的网络有多条相同代价的路径,则可以将通信量分配给这几条路径。这叫作多路径间的负载平衡(Load balancing)。RIP只能找出某个网络的一条路径。 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。 支持可变长度的子网划分和无分类编址 CIDR。 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。 OSPF规定,此序号的增长不得超过每5秒1次,全部序号可供使用约600年。
路由器标识符(标志发送该分组的路由器的接口的IP地址) 鉴别(类型字段为0时不用,为1时填入8字节的口令字符) OSPF 分组 位 8 16 31 版本(当前为2) 类型(1~5) 分组长度(含首部的分组长,单位字节) 路由器标识符(标志发送该分组的路由器的接口的IP地址) 区域标识符(分组属于的区域的标识符) 检验和 鉴别类型(0:不用,1:口令) 鉴别(类型字段为0时不用,为1时填入8字节的口令字符) 鉴别 OSPF 分组首部 类型 1 至类型 5 的 OSPF 分组 24 字节 IP 数据报 IP数据报首部 OSPF 分组
2. OSPF 的五种分组类型 类型1,问候(Hello)分组:发现和维持邻站的可达性。 每10s交换一次。如果40s未收到某邻站的Hello分组,则认为该站不可达,要立即修改链路状态数据库并重新计算路由表。 以下的分组是用于进行链路状态数据库同步使用的,两个同步的路由器称为“完全邻接的”(Fully adjacent)路由器: 类型2,数据库描述(Database Description)分组:向邻站给出的自己链路状态库中所有链路状态项目的摘要信息。 类型3,链路状态请求(Link State Request)分组:向对方请求发送某些链路状态的详细信息。 类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。 是OSPF中最复杂、核心的部分。路由器使用这些分组将链路状态通知给邻站。 共有5种不同的链路状态(见下页)。 类型5,链路状态确认(Link State Acknowledgment) 分组:对链路更新分组的确认。
5种不同的链路状态 Link State Advertisement :LSA 是描述网络拓扑和邻接的路由器的数据信息单元。当Hello 建立后,LSA 就传送给其他的路由器。有5 种类型的LSA : Type-1:路由器的LSAs ,描述在同一个area 的所有路由器的状态和成本。由OSPF路由器产生。 Type-2:网络的LSAs ,描述连接到网络上的所有路由器的状态和成本,跨越area 的。由指定的路由器 (designated router)产生。 Type-3:概要的LSAs ,描述到目的端点(在其他的area )的路由信息。由边界路由器产生。 Type-4:概要的LSAs ,描述到AS边界路由器的路由信息。也是由边界路由器产生。 Type-5 :AS External LSAs ,描述OSPF 网络之外的路由信息。由AS边界路由器产生。
思考 当一个路由器刚开始工作时,它只能通过Hello分组得知它有哪些相邻的路由器在工作,以及将数据发往相邻路由器的“代价”。如果所有路由器都把自己的本地链路状态对全网进行广播,则各路由器只要将这些信息综合起来就可以得出链路状态数据库。这样开销显然太大。 OSPF如何做呢?
OSPF的基本操作 问候 确定可达性 问候 数据库描述 数据库描述 达到数据库的同步 数据库描述 数据库描述 链路状态请求 新情况下的同步 路由器刚开始工作时,它只能通过Hello分组得知它有哪些相邻的路由器在工作,以及将数据发往相邻路由器的“代价” 问候 确定可达性 问候 达到数据库的同步 数据库描述 OSPF让每个路由器用类型2 (数据库描述)分组和相邻路由器交换本数据库中已有的链路状态摘要信息(其中主要指出有哪些路由器的链路状态信息及序号已写入了数据库)。 数据库描述 数据库描述 数据库描述 经过以上信息的交换后,路由器就使用类型3(链路状态请求)分组向对方请求发送自己缺少的某些链路状态项目的详细信息。经过一系列的这样的交换,则全网同步的链路数据库就建立了。 新情况下的同步 链路状态请求 链路状态更新 链路状态确认
OSPF 使用的是可靠的洪泛法 t1 当一个路由器状态发生变化后,该路由器就使用链路状态更新分组(使用洪泛法向全网更新链路状态) 更新报文 R R R ACK报文 t R
OSPF 的其他特点 OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
指定的路由器(designated router) 若有N个路由器连接在一个局域网上,则每个路由器要向其它(N-1)个路由器发送链路状态信息,因此共在(N-1)2个链路状态要在这个以太网上传送。OSPF协议对这种多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。 指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。 指定路由器是一个运行OSPF协议的路由器,它为一个多点接入网络产生LSAs,在运行OSPF时有其它特殊的功能。每个多点接入OSPF网络最少有两个附加路由器,有一个路由器是被OSPF Hello协议推选的。这个指定路由器能够使多点接入网络需要的邻接的数量减少,进而减少路由协议通信的数量和链路状态数据库的大小。
简要回顾 RIP适用于较小的AS; OSPF可用于规模较大的AS。OSPF将AS又划分为多个Area: 主干区域:标识为0.0.0.0,其内的路由器为主干路由器,可以同时为边界路由器,负责与本AS内Area之间数据交换、和其它AS的数据交换。 非主干区域:标识为a.b.c.d OSPF 使用五种类型的分组实现邻接路由器之间的路由信息交换:Hello分组、用于进行链路状态数据库同步使用数据库描述分组、链路状态请求分组、链路状态更新分组(使用洪泛法,OSPF核心部分)和链路状态确认分组。经过一系列分组交换后,就建立起了全网同步的链路数据库。 OSPF的收敛速度很快(响应网络变化的时间小于 100 ms )。
Dijkstra算法简介 Dijkstra算法使用由节点和弧组成的图,计算网络中两个点之间的最短路径。 节点有两种类型:网络和路由器。 弧是路由器和网络之间的连接。 费用只应用到从路由器到网络的弧上,而从网络到路由器弧上的费用总是为0,如下图所示。 14 78 23 A B F E D C 55 92 08 66 4 2 3 1 5
Dijkstra算法简介-最短路径树 Dijkstra算法通过四步完成为每个路由器查找最短路径树。以下为某路由器R查找由它出发到达某网络的最短路径过程: 下页为节点A应用Dijkstra算法得到最短路径树的过程。每个节点边上的数字为累加费用而非单条边的费用。 创建树 R将自身作为树根,附加从自身出发所能达到的所有邻居节点。节点和弧在此步中都是临时的。 比较树的临时弧,识别出具有最小累加费用的弧,此弧和它所连接的节点成为最短路径树的固定部分。 考察数据库,找出这个选定的节点能到达的每个节点,并将这些节点和弧临时加到树上。 不是 网络中每个节点是否都成为了树的固定部分? 是 完成
Dijkstra算法简介-最短路径树 14 1 A 3 78 2 23 根是A,加入网络14,78,23
Dijkstra算法简介-最短路径树 1 B 14 1 A 3 78 2 23 14固定,加入B
Dijkstra算法简介-最短路径树 1 B 3 55 14 1 A 3 78 2 23 B固定,加入55
Dijkstra算法简介-最短路径树 1 B 3 55 14 1 A 3 78 2 23 E 2 23固定,加入E
Dijkstra算法简介-最短路径树 1 B 3 55 14 1 A 3 78 2 23 E 4 2 08 E固定,加入08
Dijkstra算法简介-最短路径树 1 B 3 55 14 1 A 3 3 78 F 2 23 E 4 2 08 78固定,加入F
Dijkstra算法简介-最短路径树 B A F E F固定,加入92 1 3 55 14 1 3 3 6 78 92 2 23 4 2 08 F固定,加入92
Dijkstra算法简介-最短路径树 B C A F E 55固定,加入C 1 3 55 3 14 1 3 3 6 78 92 2 23 4 08 55固定,加入C
Dijkstra算法简介-最短路径树 B C A F E C固定,加入66 1 3 55 3 14 1 3 3 6 78 5 92 2 66 23 E 4 2 08 C固定,加入66
Dijkstra算法简介-最短路径树 B C A F E D 08固定,加入D 1 3 55 3 14 1 3 3 6 78 5 92 2 66 23 E 4 2 4 08 D 08固定,加入D
Dijkstra算法简介-最短路径树 B C A F E D D固定,加入66,但因9>6,因此此链路被删除 1 3 55 14 3 78 F 6 92 5 2 66 23 E 4 9 2 4 08 D D固定,加入66,但因9>6,因此此链路被删除
Dijkstra算法简介-最短路径树 B C A F E D 66固定 1 3 55 3 14 1 3 3 6 78 5 92 2 66 23 E 4 2 4 08 D 66固定
Dijkstra算法简介-最短路径树 B C A F E D 92固定 1 3 55 3 14 1 3 3 6 78 5 92 2 66 23 E 4 2 4 08 D 92固定
Dijkstra算法简介--路由表 现在,每个路由器可以使用最短路径树来构造自己的路由表。每个路由器使用相同的算法和相同的链路状态数据库来计算自己的最短路径树和路由表:每个路由器的结果不同,下表为路由器A所构造的路由表。 在链路状态路由中,链路状态数据库对于所有的路由器都是相同的,但是最短路径树和路由表对每一个路由器都是不同的。 网络 花费 下一跳 08 4 E 14 1 -- 23 2 55 3 B 66 5 78 92 6 F
4.5.4 外部网关协议 BGP BGP(Border Gateway Protocol )是于1989年公布的新的外部网关协议。 BGP 是不同AS的路由器之间交换路由信息的协议。 BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278。 为方便,以后将 BGP-4 简写为 BGP。 思考:不同的AS之间的路由选择为什么不能使用前述的RIP或OSPF协议?
BGP 使用的环境不同 IGP主要是设法使数据报在一个AS中尽可能有效地从源站传送到目的站,不需要考虑其它方面的策略,而BGP使用的环境不同: 因特网的规模太大,使得AS之间路由选择非常困难。对于AS之间的路由选择,要寻找最佳路由是很不现实的。合理的做法是在 AS 之间交换“可达性”信息。 不同的AS各自运行自己选定的内部路由选择协议和“代价”度量方法,当一条路径通过几个不同 AS 时,很难计算出有意义的代价。 若使用链路状态协议,则每个路由器都要维持一个庞大的链路状态数据库,使用Dijkstra算法计算最短路径耗时太长。 AS之间的路由选择要考虑有关策略,如政治、安全和经济方面的因素,力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
BGP 发言人(BGP speaker) “ BGP 发言人”是在配置BGP时为某AS选择的BGP 边界路由器或非BGP 边界路由器,用于与其他AS中的 BGP 发言人要交换路由信息 。 一般,两个 BGP 发言人都是通过一个共享网络连接在一起的 。 两个AS的 BGP 发言人按以下方式交换路由信息: 建立 TCP 连接(Port:179)[能提供可靠的服务,简化路由选择协议] 在此连接上交换 BGP 报文以建立 BGP 会话(session) 利用 BGP 会话交换路由信息(一般格式: <目的站,AS有序列表> )。 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。
BGP 发言人和 AS 的关系 每个BGP发言人要运行BGP协议和AS所使用的内部网关协议。 BGP BGP 发言人 AS1 发言人 AS2
AS 的连通图举例1 BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。 当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。 下图表示从上页图中AS1上的一个BGP发言人构造出的AS连通图,它是树形的,无回路。 AS1 AS2 AS3 AS4 AS5
AS 的连通图举例2 AS1 10.1.0.0/24 AS3 10.2.1.0/24 AS6 AS5 10.5.1.0/24 AS2 10.1.1.0/24 AS5 10.4.1.0/24 AS6 10.5.1.0/24 AS4 10.3.1.0/24 AS4的BGP路由表信息 10.1.0.0/24 AS5,3,1 10.1.1.0/24 AS5,3,2 10.2.1.0/24 AS5,3 10.4.1.0/24 AS5 10.5.1.0/24 AS5,6 AS6的BGP路由表信息 10.1.0.0/24 AS5,3,1 10.1.1.0/24 AS5,3,2 10.2.1.0/24 AS5,3 10.3.1.0/24 AS5,4 10.5.1.0/24 AS5
BGP 发言人交换路径向量示例 自治系统 AS2 的 BGP 发言人通知主干网的 BGP 发言人:“要到达网络 N1, N2, N3 和 N4 可经过 AS2。” 本地 ISP(AS4) N1, N2 本地 ISP(AS5) N3, N4 地区 ISP (AS2) 主干网 (AS1) 本地 ISP(AS6) N5 地区 ISP (AS3) 本地 ISP(AS7) N6, N7
BGP 发言人交换路径向量示例 主干网收到通知后,就发出通知:“要到达网络 N1, N2, N3 和 N4 可沿路径(AS1,AS2)。” 地区 ISP (AS2) 本地 ISP(AS4) N1, N2 本地 ISP(AS5) N3, N4 主干网 (AS1) 本地 ISP(AS6) N5 地区 ISP (AS3) 本地 ISP(AS7) N6, N7
BGP 发言人交换路径向量示例 主干网还可发出通知:“要到达网络 N5, N6 和 N7 可沿路径(AS1, AS3)。” 本地 ISP(AS4) N1, N2 地区 ISP (AS2) 本地 ISP(AS5) N3, N4 主干网 (AS1) 本地 ISP(AS6) N5 本地 ISP(AS7) N6, N7 地区 ISP (AS3)
BGP 协议的特点 交换路由信息较少,其的结点数量级是AS数的量级,较这些AS中的网络数少很多。 要在许多AS之间寻找一条较好的路径,就是要寻找正确的BGP发言人(或边界路由器),而每个AS中BGP发言人的数目又很少,故可使AS之间的路由选择不致过分复杂。 支持 CIDR,故BGP 的路由表要包括:目的网络前缀、下一跳路由器、到达该目的网络所要经过的各AS序列。 使用路径向量信息后,可较易地避免生产循环路由。如:一个BGP发言人收到了其他BGP发言人发来的路径通知,它可通过检查本AS是否在此通知的路径中来判断是否会产生循环,若在,则不采用此路径。 在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分,以节省网络带宽和减少路由器的处理开销。
BGP 报文的首部 字节 16 2 1 标 记 长 度 类 型 BGP 报文通用首部 BGP 报文主体部分 TCP首部 BGP 报文 字节 16 2 1 1—4,对应于4种类型的报文 标 记 长 度 类 型 BGP 报文通用首部 BGP 报文主体部分 TCP首部 BGP 报文 IP 首部 TCP 报文
16位全球唯一号,由ICANN地区登记机构登记,是发送路由器所在的AS号 以秒计算的保持为邻站关系的时间;协商为最小值。 *BGP-4 共使用四种报文 (1) OPEN报文,用来与相邻的另一个BGP发言人建立关系。 字节: 19 1 2 2 4 1 变长 BGP首部 版本 本AS号 保持时间 BGP标识符 可选参数长度 可选参数 以字节为单位的可选参数长度 1字节,目前值为4 通常为该路由器IP 16位全球唯一号,由ICANN地区登记机构登记,是发送路由器所在的AS号 以秒计算的保持为邻站关系的时间;协商为最小值。
*BGP-4 共使用四种报文 (2) UPDATE报文,用来新增某一路由的信息(一次仅一条),以及列出要撤消的多条路由(路由器只在路径改变时,才发送Update报文)。 新的可达目的地 变长,列出所要撤消的路由 2字节,指明下一字段长度 变长,定义在这个报文中增加的路径的属性 2字节,指明下一字段长度 BGP首部 不可行路由长度 撤消的路由 路径属性总长度 路径属性 目标网络 以前通告过,现要撤销的目的地 要通告的新的目的地 目的地址的表示:压缩的掩码地址表示法 IP地址(1-4字节) 长度(1字节) 1~8 9~16 17~24 >24 缺省路由 1字节 2字节 3字节 4字节 (1)路径属性中包含的信息: 1)到目的地的下一跳地址 2)到目的地的路径上的各个AS编号 3)路径信息来源:由其他AS而得或由发送端的AS学习而得。 (2) 路径信息的作用: 1)接收端可以检查是否存在回路。 2)接收端可据此实现策略限制 。 3)接收端由此知道报文的源站。 (3) 路径信息的构成:(类型,长度,值)
*BGP-4 共使用四种报文 (3) KEEPALIVE报文,用来确认打开报文和周期性地证实邻站关系。 只有BGP的19字节长的通用首部。 (4) NOTIFICATION报文,用来发送检测到的差错。一旦发现错误,BGP 发Notification报文,然后关闭TCP连接 共有3个字段: 差错代码(1字节),共有6大类差错; 差错子代码(1字节),约20小类; 差错数据(给出有关差错的诊断信息)。 注:在 RFC 2918 中增加了 ROUTE-REFRESH 报文(4字节长,不采用BGP报文格式),用来请求对等端重新通告。 BGP首部 差错代码 差错子代码 差错数据
BGP协议的流程(5个定时器) 两个对等的路由器建立一个 TCP连接(最长使用时间120s); 一个AS发言人发送OPEN,另一AS回应KEEPALIVE,建立 BGP邻居关系(进行参数协商、通告其AS编号等),否则发送NOTIFICATION报文;(BGP连接的实效间隔为90s) 用UPDATE报文交换完整的RIB(路由信息库) ; 如果要通告新的可达目的地或撤销先前的可达目的地,则使用UPDATE报文进行增量更新; 注: 对等实体连续发送两个关于某一目的站路由通告的最小时间间隔为120s BGP发言人连续发送其AS内部路由通告的最小时间间隔为15s 使用KEEPALIVE报文报告活动性,维护邻居关系(间隔为30s) ; 上述过程如果发生错误,使用NOTICATION报文向对方报告。
BGP的有限状态机(6个状态) Idle Connect Active Open Confirm Open Sent Established TCP连接尝试 TCP连接失败 Idle Connect Active TCP 连 接 已 建 立 连接出错,发送NOTICATION TCP连接已建立 被拒绝,发送NOTICATION 出错 Open Confirm Open Sent Established 连接被接受 收到Open报文
BGP功能总结 每个发言人向外通告经过聚类后的可达性路由信息。 路由信息可以是AS内部的,也可以是来自其它AS 。 通过相邻AS之间交换路由信息,使得每个AS都拥有一个AS级的连通图。
简要回顾 BGP是AS之间交换路由的协议; 运行BGP协议的路由器交换的是AS之间的可达性信息,信息格式:<目的站,AS有序列表>; BGP协议特点:交换路由信息较少、支持 CIDR、刚运行时,邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分; BGP协议固定首部:19字节,使用TCP协议传送其四种报文: OPEN、KEEPALIVE、UPDATE和NOTIFICATION。 BGP流程中涉及5个定时器:建立一个 TCP连接最长使用时间120s、BGP连接的实效间隔为90s、对等实体连续发送两个关于某一目的站路由通告的最小时间间隔为120s、BGP发言人连续发送其AS内部路由通告的最小时间间隔为15s、维护邻居关系间隔为30s; BGP运行中涉及6个状态。
4.5.6 路由器在网际互连中的作用 转发分组是网络层的主要工作。 1. 路由器的结构 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。 将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。 转发分组是网络层的主要工作。
典型的路由器的结构 路由选择处理机 3——网络层 2——数据链路层 1——物理层 路由 选择 分组 转发 交换结构 路由选择协议 路由表 根据路由选择算法得出 路由 选择 路由表 根据路由表得出 输入端口 输出端口 1 2 3 3 2 1 分组处理 转发表 … … 转发表 分组 转发 输入端口 输出端口 1 2 3 交换结构 3 2 1 转发表
“转发”和“路由选择”的区别 “转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。 “路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化 情况,动态地改变所选择的路由。 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。 在讨论路由选择的原理时,一般不区分转发表和路由表。
输入端口对线路上收到的分组的处理 数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。 输入端口的处理 从 线 路 接 收 分 组 网络层处理 分组排队 交 换 结 构 数据链路层 处理 物理层处理 查表和转发
输出端口将交换结构传送来的分组发送到线路 当交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。 输出端口的处理 向 线 路 发 送 分 组 网络层处理 分组排队 交 换 结 构 数据链路层 处理 物理层处理 缓存管理
分组丢弃 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
2. 交换结构* 总线 I1 O1 I1 O1 I2 存 储 器 I2 O2 O2 I3 I3 O3 O3 (a) 通过存储器 (b) 通过总线 I1 互连网络 I2 I3 O2 (c) 通过互连网络 O1 O3
4.6 IP 多播 … … … 4.6.1 IP多播的基本概念—在Internet上进行的多播 视频服务器 M 不使用多播时需要 发送 90 次单播 90 个 R1 30 个 30 个 30个 R2 R3 R4 30 个 30 个 30 个 … … … 共有 90 个主机接收视频节目
多播路由器(增加了能识别多播数据报的软件)只需复制3个分组,分别向3个路由器转发出去。 LAN具有硬件多播功能,不需要复制分组。 多播可明显地减少网络中资源的消耗 视频服务器 M 发送 1 次多播 多播路由器(增加了能识别多播数据报的软件)只需复制3个分组,分别向3个路由器转发出去。 1 个 R1 LAN具有硬件多播功能,不需要复制分组。 复制 1 个 1 个 1 个 R2 R3 R4 1 个 1 个 多播 多播 多播 1 个 多播组成员 共有 90 个 … … …
关于多播地址 从1992年起开始试验的多播主干网(MBONE—Multicase BackbOne In the InterNEt)可将分组传播到地点分散但属于一个组的许多主机。但同一时间可能有多个主机加入多播组,因此:多播组中众多的目的主机的IP地址不能够全部加入到多播数据报的首部。 多播数据报的目的地址写入的是多播组的标识符(设法使此标识符和加入到这个多播组的主机的IP地址关联起来)。 此标识符为IP地址中的D类地址(224.X.X.X ~239.255.255.255),每个D类地址标志一个多播组,共有228个多播组。 多播数据报使用D类IP地址作为目的地址,且首部协议字段值为2,使用IGMP协议。
IP 多播的一些特点 多播使用组地址—— IP 使用 D 类地址支持多播(但不能随便使用)。多播地址只能用于目的地址,而不能用于源地址。 永久组地址——由因特网号码指派管理局 IANA (Internet Assigned Numbers Authority)负责指派。 有两类组地址:永久和临时组地址。永久组地址不需要每次都建立组。以下是由 IANA所分配的几个永久组地址的例子: 224.0.0.0 基地址(保留); 224.0.0.1 在本子网上所有参加多播的主机和路由器; 224.0.0.2 在本子网上所有参加多播的路由器; …… 224.0.1.0~238.255.255.255 全球范围内均可使用的路由器; 239.0.0.0~239.255.255.255 限制在一个组织的范围。
IP 多播的一些特点 动态的组成员。 主机组中的成员是动态的。临时组地址则是在每一次使用前都必须创建主机组。 一个进程可请求其主机参加某个特定的组,或退出该组。 当一个主机新加入某一个主机组时,它就向多播地址中的所有主机发送一个 IGMP 报文,声明其组员关系。本地的多播路由器收到此报文后,就将此报文转发到 Internet 中其他的多播路由器。当主机上最后一个进程退出某个组时,该主机即不再属于那个组了。每一个主机都知道当前它的各进程属于哪些组。 本地的多播路由器要周期性地向本地网络上的主机进行轮询,以确定哪些主机仍留在组内。 若经过几次轮询在一个组内已没有主机是其中的成员,多播路由器就认为该网络中已经没有主机属于该组,以后也就不再向其他的多播路由器通告组内成员的状况。
IP 多播的一些特点 使用硬件进行多播(在LAN上)。 多播数据报采用“尽力交付”方式。 多播由特殊的多播路由器来实现。多播路由器可以和一般的路由器处于同一地点,也可以放在不同地点。在进行多播时,每一个多播路由器用地址 224.0.0.1 在其局域网上的主机发送硬件多播(即在数据链路层),要求这些主机回答其进程现在属于哪些组。每个主机对所有感兴趣的 D 类地址发回响应。 多播数据报采用“尽力交付”方式。 当某一进程向一个 D 类地址发送数据报时,就是向该组中的每个主机发送同样的数据报,但都是“尽最大努力交付”,而某些组内成员可能收不到这个数据报。 对多播数据报不产生ICMP差错报文(故Ping命令无响应)。
4.6.2 在局域网上进行硬件多播 因特网号码指派管理局 IANA拥有的以太网地址块的高 24 位为00-00-5E,因此 TCP/IP 协议使用的以太网多播地址块的范围是:从 00-00-5E-00-00-00到00-00-5E-FF-FF-FF。 MAC地址第1字节最低位为1时为多播地址,这种地址占了IANA分配到地址的一半,故IANA拥有的以太网多播地址的范围为01-00-5E-00-00-00到01-00-5E-7F-FF-FF,这样,以太网中只有23位用作多播地址。这只能和D类IP地址中的23位有一一对应的关系,而D 类IP地址可供分配的有28位,可见在这28位中的前5位不能用来构成以太网硬件地址。 例如,IP多播地址 224.128.64.32(即E0-80-40-20)和另一个 IP 多播地址 224.0.64.32(即E0-00-40-20)转换成以大网的硬件多播地址都是 01-00-5E-00-40-20。由于多播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此到了 IP 层还需要进行过滤,将不是本主机要接收的数据报丢弃。
D 类 IP 地址与以太网多播地址的映射关系 表示多播 这 5 位不使用 D 类 IP 地址 和以太网硬件地址的23位对应 8 16 24 8 16 24 31 D 类 IP 地址 1110 0 1 0 0 5 E 00000001 00000000 01011110 0000000 00000000 00000000到1111111 11111111 11111111 表示多播 最低 23 位来自 D 类 IP 地址 48 位以太网地址 00-00-00~7F-FF-FF
4.6.3 网际组管理协议 IGMP和多播路由选择协议 1. IP多播需要两种协议 为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP(Internet Group Management Protocol)。 连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
IGMP 使多播路由器知道多播组成员信息 128.56.24.34 B 135.27.74.52 NET2 IGMP 130.12.14.56 R1 A C IGMP R2 多播组 226.15.37.123 IGMP R3 IGMP D R4 NET3 NET4 130.12.14.43 NET1 A、B、C、D参加了一个多播组,但NET4中没有这个多播组的成员。这些路由器是利用IGMP协议知道多播组中的成员的,故多播数据报只传送到R1、R2、R3而不会转发到R4。
IGMP 的本地使用范围 上图强调了IGMP的本地使用范围,几个注意的问题: IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。 IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。 仅有IGMP协议是不能完成多播任务的,连接在LAN上的多播路由器必须和Internet上的其它多播路由器协同工作,才可能将多播数据报以最小的代价传送到所有的组成员—用到多播路由选择协议。
多播路由选择协议比单播路由选择协议复杂得多 N1 多播组①有主机A,B,C 多播组②有主机D,E,F A ① N3 R N2 G ① F ② B C D E ① ① ② ② 1、路由器R向多播组①转发分组 2、G加入多播组① 3、路由器R必须向N3转发分组 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。注:单播路由选择通常是在网络拓扑发生变化时才需要更新路由。
多播路由选择协议比单播路由选择协议复杂得多 N1 多播组①有主机A,B,C 多播组②有主机D,E,F A ① N3 R N2 G F ② B C D E ① ① ② ② 1、F向E发送多播数据报时 2、E向F发送多播数据报时 3、A向多播组②发送多播数据报时 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
多播路由选择协议比单播路由选择协议复杂得多 N1 多播组①有主机A,B,C 多播组②只有主机D,E A ① N3 R N2 G F B C D E ① ① ② ② N3网络没有任何多播组成员,但G也可以向其它多播组发送多播数据报。如:给多播组①发送多播数据报。 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
2. 网际组管理协议 IGMP 关于IGMP 1989 年公布的 RFC 1112(IGMPv1)早已成为了因特网的标准协议。 1997 年公布的 RFC 2236(IGMPv2,建议标准)对 IGMPv1 进行了更新。 2002 年 10 月公布了 RFC 3376(IGMPv3,建议标准),宣布 RFC 2236(IGMPv2)是陈旧的。
IGMP 是整个网际协议 IP的一个组成部分 与 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务。 故,我们不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。
IGMP 的工作可分为两个阶段 第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器。 第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。 只要有一个主机对某个组响应,那么多播路由器就认为这个组是活跃的。 如果某组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。
IGMP 采用的一些具体措施 在主机和多播路由器之间的所有通信都是使用 IP 多播。 IGMP报文尽可能使用硬件多播完成,所以,在支持硬件多播的网络上,没有参加IP多播的主机不会收到IGMP报文。 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次。 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。 网络上有多个多播路由器并不会引起IGMP通信量增大。
IGMP 采用的一些具体措施(续) 在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。因此,当主机同时参加了几个多播组,则主机对每个多播组选择不同的随机数,对应于最小时延的响应最先发送。 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应(即:每个组只要有1个主机响应即可),自己就可以不再发送响应了,以抑制不必要的通信量。
IGMP 采用的一些具体措施(续) 几点说明: 因LAN上的组成员转发数据报是使用硬件多播,多播路由器只需要知道网络上是否至少还有1个主机是本组成员即可,对于询问报文,每个组只要有1个主机响应即可。故:多播路由器不需要保留组成员关系的准确记录。 如果一个主机上的多个进程都加入了某个多播组,则此主机对发给此多播组的多播数据报只接收一个副本,然后给每个进程发送一个本地复制的副本。 因任何应用进程(可以是多播组以外的)都可以在任何时候向任何一个多播组发送多播数据报,故:多播数据报的发送者和接收者都不知道一个多播组的成员有多少以及这些成员是哪些主机;同时,Internet中的路由器和主机也不知道哪个应用进程要向哪个多播组发送多播数据报。
3. 多播路由选择 多播路由选择协议尚未标准化(是建议标准)。 一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组(如收听广播)。 多播路由选择实际上就是要找出以源主机为根结点的多播转发树。 在多播转发树上,每个路由器向叶节点方向转发收到的多播数据报,路由器不会收到重复的多播数据报。 对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。
转发多播数据报使用的方法 (1) 洪泛与剪除 此法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。 一开始,路由器转发多播数据报使用洪泛的方法。为了避免兜圈子,采用了叫做反向路径广播 RPB (Reverse Path Broadcasting)的策略(将源点看作终点计算路径)。 路由器收到多播数据报时,先检查是否从源点经最短路径传送来的。若是,就向所有其他方向转发刚才收到的多播数据报(进入的方向除外),否则就丢弃而不转发。 如果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的 IP 地址最小。
反向路径广播 RPB 和剪除 不是最短路径来 源点 转发多播数据报 R1 收到后即丢弃 R2 R3 剪除没有 组成员的树枝 R5 R4 R8 设各路由器之间的距离都是1 转发多播数据报 R1 收到后即丢弃 R2 R3 不是最短路径来 剪除没有 组成员的树枝 R5 R4 R8 R6 R7 路径相同但R4的IP小
(2) 隧道技术(tunneling) 加IP头部后形成单播 IP 数据报,通过隧道 隧道技术适用于多播组的位置在距离上分散的情况。 网 2 (支持多播) 网 1 (支持多播) 多播数据报 不支持多播 的网络 R1 R2 多播数据报 IP首 IP首 多播数据报 隧道 加IP头部后形成单播 IP 数据报,通过隧道
(3) 基于核心的发现技术 该方法对于多播组的大小在较大范围内变化时都适合。 该方法是对每一个多播组 G 指定一个核心(core)路由器RC ,给出它的 IP 单播地址。 核心路由器按照前面讲过的方法创建出对应于多播组 G 的转发树。 若路由器R1向此核心路由器RC发送数据报,则它在途中的每一个路由器都要检查其内容。当数据报到达参加G的路由器R2时,R2就处理此数据报。 若R1发出的是一个多播数据报,其目的地址是G的组地址,R2就向多播组G的成员转发这个多播数据报。 若R1发出的是一个请求加入G的数据报,R2就将此信息加入到它的路由中,并用隧道技术向R1转发每一个多播数据报的一个副本。 通过这种方法,参加G的路由器就从核心向外增多了,扩大了多播转发树的覆盖范围。
几种多播路由选择协议 目前还没有在整个因特网范围使用的多播路由选择协议,以下是一些建议使用的多播路由选择协议: (1) 距离向量多播路由选择协议 DVMRP (Distance Vector Multicast Routing Protocol),是因特网上使用的第一个多播路由选择协议。 (2) 基于核心的转发树 CBT (Core Based Tree) ,使用核心路由器R作为转发树的根节点。一个大的AS可划分为几个区域,每个区域选择一个核心路由器。 (3) 开放最短通路优先的多播扩展 MOSPF (Multicast Extensions to OSPF) ,是OSPF的扩充,使用于一个机构内。它使用多播链路状态路由选择创建出基于源点的多播转发树。
几种多播路由选择协议 (4) 协议无关多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode) ,适用于组成员的分布非常分散的情况。它使用和CBT同样的方法构成多播转发树。 使用“协议无关”是强调:虽然在建立多播转发树时是使用单播数据报来和远程路由器联系,但这并不要求使用特定的单播路由选择协议。 (5) 协议无关多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode) ,适用于组成员非常集中的情况,如组成员在一个机构内。 该方法使用洪泛方式转发数据报,而非CBT 。
4.7 虚拟专用网 VPN 和网络地址转换 NAT 4.7.1 虚拟专用网 VPN 本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。(但任意选定时可能会造成二义性等问题) 全球地址——全球唯一的IP地址,必须向因特网的管理机构申请。
RFC 1918 指明的专用地址(private address) 专用地址又称为可重用地址(Reusable address),包括如下三类: 10.0.0.0 ~10.255.255.255 172.16.0.0 ~ 172.31.255.255 192.168.0.0 ~ 192.168.255.255 注: 这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。 专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
虚拟专用网VPN (Virtual Private Network) 分布在距离较远的不同地点的一个机构的多个部门的专用网要经常通信,有两种实现方法: 租用通信线路(费用高); 利用公用的因特网作为本机构各专用网之间的通信载体—VPN(像真的专用网一样)。 VPN只是在效果上和真正的专用网一样,但要解决以下问题: 保密性问题; 每个场所需要购买专门的软、硬件,并进行配置,以使每一场所的VPN知道其它场所的地址。
用隧道技术实现虚拟专用网 网络地址 = 10.1.0.0 网络地址 = 10.2.0.0 (本地地址) (本地地址) 本地地址 全球地址 Y 10.2.0.3 X 10.1.0.1 125.1.2.3 194.4.5.6 隧道 部门 B 部门 A R2 R1 因特网 使用隧道技术 网络地址 = 10.1.0.0 (本地地址) 网络地址 = 10.2.0.0 (本地地址)
用隧道技术实现虚拟专用网 加密的从 X 到 Y 的内部数据报 源地址:125.1.2.3 目的地址:194.4.5.6 外部数据报的数据部分 数据报首部 Y 10.2.0.3 X 10.1.0.1 125.1.2.3 194.4.5.6 隧道 部门 B 部门 A R2 R1 因特网 使用隧道技术 部门 A 部门 B X Y R1 R2 125.1.2.3 194.4.5.6 10.1.0.1 10.2.0.3 虚拟专用网 VPN
内联网 intranet 和外联网 extranet(都是基于 TCP/IP 协议) 由部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网(intranet),表示部门 A 和 B 都是在同一个机构的内部。 一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网(extranet)。 部门 A 部门 B X Y R1 R2 125.1.2.3 194.4.5.6 10.1.0.1 10.2.0.3 虚拟专用网 VPN
远程接入VPN(remote access VPN) 在外地工作的员工拨号接入因特网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。
4.7.2 网络地址转换 NAT 当专用网内部的一些主机已经分配到本地IP地址,现想用本网内的某个全球IP地址访问Internet时,可使用网络地址转换来实现。 NAT (Network Address Translation) 方法于1994年提出。 需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球地址 IPG。 所有使用本地地址的主机在和外界通信时都要在 NAT 路由器上将其本地地址转换成 IPG 才能和因特网连接。
网络地址转换的过程 内部主机 X 用本地地址 IPX 和因特网上主机 Y 通信所发送的数据报必须经过 NAT 路由器。 NAT 路由器将数据报的源地址 IPX 转换成全球地址 IPG,但目的地址 IPY 保持不变,然后发送到因特网。 NAT 路由器收到主机 Y 发回的数据报时,知道数据报中的源地址是 IPY 而目的地址是 IPG。 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPX,转发给最终的内部主机 X。
NAT路由器的工作原理 因特网 全球IP地址 172.38.1.5 主机B 213.18.2.4 主机A 192.168.0.3 源IP地址
练习题 某主机的MAC地址为00-15-C5-C1-5E-28,IP地址为10.2.128.100(私有地址)。图a是网络拓扑,图b是该主机进行Web请求的1个以太网数据帧前80个字节的十六进制及ASCII码内容。 请参考图中的数据回答以下问题。 (1)Web服务器的IP地址是什么?该主机的默认网关的MAC地址是什么? (2)该主机在构造题图b的数据帧时,使用什么协议确定目的MAC地址?封装该协议请求报文的以太网帧的目的MAC地址是什么? (3)假设HTTP/1.1协议以持续的非流水线方式工作,一次请求-响应时间为RTT,rfc.html页面引用了5个JPEG小图像,则从发出图b中的Web请求开始到浏览器收到全部内容为止,需要多少个RTT? (4)该帧所封装的IP分组经过路由器R转发时,需修改IP头部哪些字段? 10.2.128.100 101.12.123.15 10.2.128.1 MTU=1500B 图a 网络拓扑 0000 00 21 27 51 ee 15 c5 c1 5e 28 08 45 .!|!Q... ..^(..E. 0010 01 ef 11 3b 40 80 06 ba 9d 0a 02 64 aa ...:@... .....d@. 0020 62 20 04 ff 50 e0 e2 fa 7b f9 f8 05 18 b ...P.. ..{...P. 0030 f0 1a c4 47 54 2f 72 66 63 2e 68 ......GE T/rfc.h 0040 74 6d 6c 48 31 0d 41 tmlHTTP/ 1.1..Ac 图b 以太网数据帧(前80字节)
练习题解答: (1)64.170.98.32 00-21-27-21-51-ee 以太网帧头部6+6+2=14字节,IP数据报首部目的IP地址字段前有4*4=16字节,从以太网数据帧第一字节开始数14+16=30字节,得目的IP地址40 aa 62 20(十六进制),转换为十进制得64.170.98.32。以太网帧的前六字节00-21-27-21-51-ee是目的MAC地址,本题中即为主机的默认网关10.2.128.1端口的MAC地址。 (2)ARP FF-FF-FF-FF-FF-FF ARP协议解决IP地址到MAC地址的映射问题。主机的ARP进程在本以太网以广播的形式发送ARP请求分组,在以太网上广播时,以太网帧的目的地址为全1,即FF-FF -FF-FF-FF-FF。 (3)6 HTTP/1.1协议以持续的非流水线方式工作时,服务器在发送响应后仍然在一段时间内保持这段连接,客户机在收到前一个响应后才能发送下一个请求。第一个RTT用于请求web页面,客户机收到第一个请求的响应后(还有五个请求未发送),每访问一次对象就用去一个RTT。故共1+5=6个RTT后浏览器收到全部内容。
练习题解答: (4)源IP地址0a 02 80 64 改为65 0c 7b 0f 生存时间(TTL)减1 校验和字段重新计算 私有地址和Internet上的主机通信时,须有NAT路由器进行网络地址转换,把IP数据报的源IP地址(本题为私有地址10.2.128.100)转换为NAT路由器的一个全球IP地址(本题为101.12.123.15)。因此,源IP地址字段0a 02 80 64变为65 0c 7b 0f。IP数据报每经过一个路由器,生存时间TTL值就减1,并重新计算首部校验和。若IP分组的长度超过输出链路的MTU,则总长度字段、标志字段、片偏移字段也要发生变化。 注意,图b中每行前4bit是数据帧的字节计数,不属于以太网数据帧的内容。 以上为2011年硕士研究生入学考试计算机基础通考题