第 13讲 网络层(4) 1/51
知识回顾 IP地址结构 子网划分 CIDR及可变长子网掩码VLSM技术 一个快速计算IP地址的方法 子网汇聚——超网 2/51
本讲内容 理解ICMP协议的功能 会使用ping命令 的作用 理解路由算法原则及分层次的目的 理解自治系统概念 掌握内部网关协议RIP的工作原理 了解内部网关协议OSPF协议的工作原理 3/51
网际控制报文协议 ICMP 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 ICMP 不是高层协议,而是 IP 层的协议。 ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。 4/51
ICMP 报文的格式 8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型) 8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型) ICMP 的数据部分(长度取决于类型) ICMP 报文 首 部 数 据 部 分 IP 数据报 5/51
ICMP 报文的种类 ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。 6/51
ICMP 差错报告报文共有 5 种 终点不可达 源点抑制(Source quench) 时间超过 参数问题 终点不可达分为:网络不可达、主机不可达、协议不可达、端口不可达、数据包需要分片但DF比特已置为1,以及源路由失败等六种情况,其代码字段分别置为0到5。 源点抑制(Source quench) 当路由器或主机由于拥塞而丢弃数据报时,就向源结点发送源站抑制报文,使源结点知道应当将数据报的发送速率放慢 时间超过 当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源结点发送时间超过报文 参数问题 当路由器或目的主机收到的数据报的首部中有字段的值不正确时,就丢弃该数据报,并向源结点发送参数问题报文。 改变路由(重定向)(Redirect) 7/51
ICMP 差错报告报文的数据字段的内容 IP 数据报的数据字段 收到的 IP 数据报 IP 数据报 首部 8 字节 ICMP 的 前 8 字节 IP 数据报 首部 8 字节 ICMP 差错报告报文 首部 ICMP 差错报告报文 装入 ICMP 报文的 IP 数据报 IP 数据报 8/51
不应发送 ICMP 差错报告报文 的几种情况 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。 每个操作系统对TTL值得定义都不同,这个值甚至可以通过修改某些系统的网络参数来修改,例如Win2000默认为128,通过注册表也可以修改。而Linux大多定义为64。不过一般来说,很少有人会去修改自己机器的这个值的,这就给了我们机会可以通过ping的回显TTL来大体判断一台机器是什么操作系统 9/51
ICMP 询问报文有两种 回送请求和回答报文 时间戳请求和回答报文 下面的几种 ICMP 报文不再使用 信息请求与回答报文 PING 用来测试两个主机之间的连通性。 PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。 时间戳请求和回答报文 下面的几种 ICMP 报文不再使用 信息请求与回答报文 掩码地址请求和回答报文 路由器询问和通告报文 10/51
PING 的应用举例 11/51
Traceroute 的应用举例 12/51
路由问题的直观描述(1) 有一个人要从滁州到北京出差, 请考虑有多少种方案可以选择?并请说明您选择的理由. 火车: 滁州站→北京站, K162, 13h34m, 254元; 1478, 16h57m, 237元; 1462, 17h5m, 147元 火车: 滁州站→南京站→北京站,D350,约10小时,280元-580元,…… 火车: 滁州站→蚌埠站→北京站, …… 飞机: 滁州→合肥机场→北京机场,约5小时,1000+ 飞机: 滁州→南京机场→北京机场, …… 13/51
路由问题的直观描述(2) 总结 思考 这是一个路径选择问题 什么样的方案最好? 符合自己的要求就是最好! 选择必须有依据, 如价格, 时间, 舒适度, 方便性(中转次数较少), …… 思考 数据包在网络中的传输同样存在路径选择问题 如何选择?或者说选择的依据是什么? 特别强调服务质量的情况下; 强调链路效率的情况下 14/51
路由选择协议的几个基本概念 理想的路由算法 静态路由选择策略 动态路由选择策略 算法必须是正确的和完整的。 算法在计算上应简单。 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。 算法应具有稳定性。 算法应是公平的。 算法应是最佳的。 静态路由选择策略 即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。 动态路由选择策略 即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。 15/51
最佳路由 不存在一种绝对的最佳路由算法。 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 实际的路由选择算法,应尽可能接近于理想的算法。 路由选择是个非常复杂的问题 它是网络中的所有结点共同协调工作的结果。 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。 在研究路由选择时,需要给每一条链路指明一定的代价。 这里“代价”并不是指“钱”,而是由一个或几个因素综合决定的一种度量(metric),如链路长度、数据率、链路容量、是否要保密、传播时延等,甚至还可以是一天中某一个小时内的通信量、结点的缓存被占用的程度、链路差错率等。 16/51
分层次的路由选择协议 因特网采用分层次的路由选择协议 内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。 内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。 外部网关协议 EGP:目前使用的协议就是 BGP。 17/51
自治系统(autonomous system) 因特网将整个互联网划分为许多较小的自治系统 AS。 一个自治系统是一个互联网,其最重要的特点就是自治系统有权自主地决定在本系统内应采用何种路由选择协议。 一个自治系统内的所有网络都属于一个行政单位(例如,一个公司,一所大学,政府的一个部门,等等)来管辖。 一个自治系统的所有路由器在本自治系统内都必须是连通的。 18/51
自治系统和内、外部网关协议 自治系统 A 自治系统 B 自治系统 C R3 IGP EGP R2 IGP IGP IGP IGP IGP H1 IGP H2 IGP IGP IGP IGP 内部网关协议 IGP (例如,RIP) 外部网关协议 EGP (例如,BGP-4) 内部网关协议 IGP (例如,OSPF) 19/51
内部网关协议 RIP 工作原理 路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。 仅和相邻路由器交换信息。 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 按固定的时间间隔交换路由信息,例如,每隔 30 秒。 20/51
“距离”的定义 从一路由器到直接连接的网络的距离定义为 1。 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。 RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。 RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 RIP 允许一条路径最多只能包含 15 个路由器。 “距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。 RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。 21/51
距离向量算法 收到相邻路由器(其地址为 X)的一个 RIP 报文: (1) 先修改此 RIP 报文中的所有项目:将“下一跳”字段中的地址都改为 X,并将所有的“距离”字段的值加 1。 (2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤: 若项目中的目的网络不在路由表中,则将该项目加到路由表中。 否则 若下一跳字段给出的路由器地址是同样的,则将收到的项目替换原路由表中的项目。 若收到项目中的距离小于路由表中的距离,则进行更新, 否则,什么也不做。 (3) 若 3 分钟还没有收到相邻路由器的更新路由表,则将此相邻路由器记为不可达的路由器,即将距离置为16(距离为16表 示不可达)。 (4) 返回。 22/51
路由表的建立 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。 RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。 23/51
路由器之间交换信息 RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。 例4-5. 24/51
RIP 协议的优缺点 RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。 25/51
RIP 协议问题 “”表示“直接交付” “1”表示“从本路由器到网 1” “1”表示“距离是 1” 正 常 情 况 1 1 网 1 网 2 1 2 R1 网 3 R1 R2 “”表示“直接交付” “1”表示“从本路由器到网 1” “1”表示“距离是 1” R1 说:“我到网 1 的距离是 1,是直接交付。” 26/51
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。” 27/51
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 并不知道 R1 出了故障。 28/51
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。 29/51
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”。 30/51
这就是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 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是不可达的。 31/51
内部网关协议 OSPF OSPF 协议的基本特点 “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。 “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。 是分布式的链路状态协议。 32/51
三个要点 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。 “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。 33/51
链路状态数据库 (link-state database) 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。 OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。 34/51
划分区域 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。 每一个区域都有一个 32 bit 的区域标识符(用点分十进制表示)。 区域也不能太大,在一个区域内的路由器最好不超过 200 个。 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。 OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。 35/51
OSPF 划分为两种不同的区域 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 区域 0.0.0.1 区域 0.0.0.3 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 36/51
主干路由器 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2 R1 网 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 37/51
区域边界路由器 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2 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 38/51
OSPF 直接用 IP 数据报传送 OSPF 不用 UDP 而是直接用 IP 数据报传送,可见 OSPF 的位置在网络层。 数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。 39/51
OSPF 的其他特点 OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡。 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。 支持可变长度的子网划分和无分类编址 CIDR。 每一个链路状态都带上一个 32 bit 的序号,序号越大状态就越新。 40/51
OSPF 的其他特点(续) OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。 41/51
OSPF 分组 比特 8 16 31 版 本 类 型 分 组 长 度 路 由 器 标 识 符 区 域 标 识 符 检 验 和 鉴 别 类 型 8 16 31 版 本 类 型 分 组 长 度 路 由 器 标 识 符 区 域 标 识 符 检 验 和 鉴 别 类 型 鉴 别 鉴 别 24 字节 OSPF 分组首部 类型 1 至类型 5 的 OSPF 分组 IP数据报首部 OSPF 分组 IP 数据报 42/51
OSPF 的五种分组类型 类型1,问候(Hello)分组。 类型2,数据库描述(Database Description)分组。 类型3,链路状态请求(Link State Request)分组。 类型4,链路状态更新(Link State Update)分组, 用洪泛法对全网更新链路状态。 类型5,链路状态确认(Link State Acknowledgment) 分组。 43/51
OSPF的基本操作 问候 确定可达性 问候 数据库描述 数据库描述 达到数据库的同步 数据库描述 数据库描述 链路状态请求 新情况下的同步 链路状态更新 链路状态确认 44/51
OSPF 使用的是可靠的洪泛法 t1 t2 t3 t4 更新报文 R R R ACK报文 R 45/51 t
OSPF 支持三种网络的连接 (1) 两个路由器之间的点对点连接 (2) 具有广播功能的局域网 (3) 无广播功能的广域网 46/51
本讲小结 理解路由算法的设计原理 理解自治系统的意义 理解内部网关协议RIP的工作原理 了解内部网关协议OSPF的工作原理 47/51
作业 查阅资料,完成调查报告,内容包括: 1. 何为路由环路? 2. RIP协议通过几种方式避免路由环路,其具体过程请详细描述。 1. 何为路由环路? 2. RIP协议通过几种方式避免路由环路,其具体过程请详细描述。 3. OSPF协议通过何种方式建立邻居关系。 4. OSPF协议的路由算法的简单描述。 48/51