计算机网络:第四章 - 网络层 564次阅读 计算机网络 2022-09-09 目录 [TOC] ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 一、网络层 ## 网络层功能概述 * 主要任务:把**分组**从源端传到目的端,为分组交换网上的不同主机提供通信服务。 * 传输单位:**IP 数据报/分组**; * 功能: * 功能一:路由选择与分组转发 。 > 路由选择就是找路,通过路由选择算法找到**最佳路径** > * 功能二:异构网络互联。 > 网络的异构性指的是传输介质、数据编码方式、链路控制协议以及不同的数据单元格式和转发机制,这些特点分别在物理层和数据链路层中定义。 > * 功能三:拥塞控制。 * 若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。 * 方式一:开环控制(静态方法,类似数据链路层中的信道划分介质访问控制) * 方式二:闭环控制(动态方法,类似数据链路层中的随机访问介质访问控制) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 二、IPv4 > IP 协议:不可靠,无连接,采用分组交换技术 **IP 分组 / IP 数据报是数据传送的基本单元** ## (一)IPv4 分组 * IPv4,即现在普遍使用的 IP 协议(版本为 4)。 * **IP 协议定义数据传送的基本单元——IP 分组/IP 数据报及其确切的数据格式。** * IP 协议:**不可靠**(对于出错的分组**丢弃**并发送一个 ICMP 差错报文),**无连接(分组交换的数据报方式就是无连接的),采用分组交换技术(数据报方式)**。 ### 1、TCP/IP 协议栈 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.1.1_1%29.png) * ARP 协议为 IP 协议服务。 * IP 协议为 ICMP 和 IGMP 协议服务。 > 在 TCP/IP 参考模型中,物理层和数据链路层一起称为网络接口层。即,对应下图 > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.1.1_2%29.png) ### 2、IPv4 分组的格式 > 在网络层章节,IP 数据报和分组不用做太详细区分。 #### (1)IP 数据报格式 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.1.2.1_1%29.png) 一个 IP 分组由首部和数据两部分组成。 * 数据部分:传输层的传输单元报文段,因为含有 TCP、UDP 段。 * 首部固定部分(20B):对于任何一个 IP 数据报,它的大小都相同为 **20 字节**(根据下图可得 32b*5 行=160b=20B),一定要有。 * 首部可变部分(0~40B):可有可无,大部分情况下没有。 #### (2)IP 数据报首部格式 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.1.2.1_2%29.png) ##### ① 首部固定部分各组成信息 > **重要字段含义** 1. 版本(字段占 4 位 - 4bit) * 指 IP 的版本,类型为 IPv4 / IPv6。 2. 首部长度(字段占 4 位) * 指首部的长度,即占 32 bit 字的数目; * 单位:32 位,即 4B(字节); * 字段内存放的最小值为 0101(即),最大值是 1111(即十进制 15); * 首部长度的最小值为 20B,最大值为 60B; > 字段长度为 4 位,所以 字段长度 = 单位 * 字段值 > > * 20B / 4B=5,即字段最小值 5,首部长度最小值 20B(即只有固定部分,可变部分不使用)。 > * 15*4B=60B,即字段最大值 15,首部长度最大值 60B。 > 3. 总长度(字段占 16 位) * 指 IP 数据报,即“ 首部长度和数据部分之和 ”(字段值 * 单位),单位为 1 字节(1B)。 * 数据报总长度上限值为 65535 * 1B = 216 - 1 = 65535B。 > 实际上不会达到上限值,因为长度过大时会分组,以满足数据链路层的 MTU(最大数据传输单元)的要求。 > 4. 标识(字段占 16 位) * 用于标识 IP 数据报; > IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器加 1,并将此值赋给标识字段。(但不是序号,因为 IP 是无连接服务) > * 若数据报需要分片,则每个分片的标识相同,接收端收到后将同一标识的分片组合成原数据报; 5. 标志(字段占 3 位) * 但目前只有两位有意义(x _ _ ) * 最低位为 MF,MF = 1 表后面“ 还有分片 ” ;MF = 0 表示 “ 最后一个分片 / 没分片 ”; * 中间位为 DF,只有 DF = 0 时才允许分片。 > 例:001-后边还有分片;010-最后一个分片; > * 最高位保留不用。 6. 片偏移(字段占 13 位) * 指,数据分片后,某个分片在原始数据中的相对位置; * 以 8 个字节为偏移单位,即“除最后一个分片外,每个分片的长度一定是 **8B(64 位)的整数倍**”; > 分片后,现数据部分字节第一位对应于原数据字节的位置除以 8,得出片偏移。 > 7. 生存时间 - TTL(字段占 8 位) * IP 分组的保质期。即表示分组在网络中的寿命,以确保分组不会永远在网络中循环。 * 每经过一个路由器生存时间就-1,直到变成 0 则丢弃。 > 先减 1,再发送(ICMP 协议中有应用) > 8. 协议(字段占 8 位) * 指出分组携带的数据使用何种协议。即,运输层报文段传下来的协议。 > 需要重点记住:TCP 字段值为 6(记:面向连接),UDP 字段值为 17(记:无连接不可靠) > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.1.2.2.1_1%29.png) 9. 首部检验和(字段占 16 位) * 只检验分组的首部。 > 为什么叫首部检验和呢? > > 因为检验首部使用的方法是使用二进制的求和,在数据传输过程中,数据报每经过一个路由器,路由器都要重新计算一下首部检验和。 > > 因为有些字段(例如生存时间,标志等)都可能发生变化,需要通过首部检验和检验一下发生变化后的数据报有没有出错,如果出错则丢弃。 > 10. 源 IP 地址(字段占 4 位) * 标识发送方的 IP 地址 11. 目的 IP 地址(字段占 4 位) * 标识接收方的 IP 地址 > **不重要字段含义** * 区分服务(占 8 位):指示期望获得哪种类型的服务。 ##### ② 可变部分信息如下: * 可选字段: * 0 ~ 40B(可有可无,大小来源:首部最大 60B - 固定部分 20B)。 * 用来支持排错、测量以及安全等措施。 * 填充: * 全 0,把首部补成 4B 的整数倍。 > 因为首部的长度单位是 4B。 > ## (二)IP 数据报分片 ### 1、最大传送单元 MTU(Maximum Transfer Unit) * 最大传送单元(MTU): * 一个数据链路层数据报能承载的最大数据量。 即,链路层数据帧可封装数据的上限。 * 以太网的 MTU 是 1500 字节。 * 分片: * **IP 数据报/分组**的总长度超过某链路的 MTU 值,就需要将 IP 数据报分装在多个较小的 IP 数据报中,这些较小的数据报称为片。 * 目的:是为了在链路层传输的数据帧的长度不超过 MTU 值。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.2.1_1%29.png) ### 2、分片原理 > 使用 UDP 很容易导致 IP 分片,而很难强迫 TCP 发送一个需要进行分片的报文。 分片和重新组装的过程对传输层是透明的,其原因是当 IP 数据报进行分片之后,只有当它到达下一站时,才可进行重新组装,且它是由目的端的 IP 层来完成的。分片之后的数据报根据需要也可以再次进行分片。 ### 3、MTU 原理 当两台远程 PC 互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的 MTU 各不相同,就好比一长段的水管,由不同粗细的水管组成(MTU 不同 )通过这段水管最大水量就要由中间最细的水管决定。 对于网络层的上层协议而言(这里以 TCP/IP 协议族为例),它们对水管粗细不在意它们认为这个是网络层的事情。网络层 IP 协议会检查每个从上层协议下来的数据包的大小,并根据本机 MTU 的大小决定是否作“分片”处理。 分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在 IP 数据包包头里面加上一个标签:DF(Donot Fragment)。这样当这个 IP 数据包在一大段网络(水管里面)传输的时候,如果遇到 MTU 小于 IP 数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路 MTU 都是 1500 或者大于 1500。 ### 4、TCP 与 UDP 的分片问题 #### (1)TCP 分片 * MSS(Maxitum Segment Size)最大分段大小,它是 TCP 协议里面的一个概念。 * TCP 在建立连接的时候,会协商双方的 MSS 值,通常这个 MSS 会控制在 MTU 以内:最大 IP 包大小减去 IP 和 TCP 协议头的大小。(其最终目的:就是尽量避免 IP 分片) * 这样 TCP 就可以在自己这一层,把用户发送的数据,预先分成多个大小限制在 MTU 里的 TCP 包。每个 TCP 的分片包,都完整了包含了 TCP 头信息,方便在接收方重组。 > 如果某些情况导致:已经分好的 TCP 分片,还是大于了 MTU,那就在 IP 层中,再执行一次分片。 > 这个时候如果数据丢了,那也只需要重传这一个 TCP 的分片,而不是整个原始的 50k 数据。 * 对于 TCP 协议而言就不一样了,这个协议是面向连接的协议,对于 TCP 协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些 TCP 应用对分片有要求---不能分片(DF)。 #### (2)UDP 分片 * 对于 UDP 协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达不甚关心,所以一般 UDP 应用对分片没有特殊要求。 * 若收到的 IP 数据报首部中: * MF = 0 且有 UDP 字段,则未分片。 * MF = 1 且有 UDP 字段,则为第一片。 * MF = 1 且无 UDP 字段,则为中间片。 * MF = 0 且无 UDP 字段,则为最后一片。 ### 5、数据报分片流程 > 片在目的地的网络层被重现组装。目的主机使用 IP 首部中的标识、标志、片偏移来完成对片的重组。 * 标识 * 创建一个 IP 数据报时,源主机为该数据报加上一个标识号。 * 当一个路由器需要将一个数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号。 * 当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的分片。 * 标志:该分片后面是否还有新的分片 * 片偏移:确定某片在原数据报中的相对位置。 ### 6、计算片偏移 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.2.6_1%29.png) 片偏移分析过程:分片长度不超过 1420B,首部为 20B,所以每个分片数据部分不超过 1400B。原始 IP 数据报数据部分为 3800B,可以分为 3 个分片:第一和二分片数据部分 1400B,第三个分片数据部分 1000B。另外分片的首部长度与原始数据报的首部长度相同都为 20B。 * 片偏移 = 数据部分起始字节/单位 8B * 计算第一个分片片偏移:数据部分起始字节为 0~1399B,0B/8B = 0。 * 计算第二个分片片偏移:数据部分起始字节为 1400~2799B,1400B/8B = 175。 * 计算第三个分片片偏移:数据部分起始字节为 2800~3799B,2400B/8B = 350。 ## (三)IPv4 地址 ### 1、IP 地址 * 连接到因特网上的**每台主机(或路由器)都分配 一个 32 比特的全球唯一标识符**。(即,**标识路由器主机的接口**) > 4 字节,8 位 1 段,共 4 段 > * **IP 地址 :: = { < 网络号 > , < 主机号 > }** ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.3.1_1%29.png) ### 2、IP 编址的历史阶段 * 分类的 IP 地址 -> 子网的划分 -> 构成超网(无分类编址方法-CIDR) ## (四)分类的 IP 地址 ### 1、互联网中的 IP 地址 * 黄色区域(为一个冲突域):网络号为 222.1.3.0,主机号分别是 222.1.3.1、222.1.3.2、222.1.3.3 * 图中的每一个路由器有三个 IP 地址,因为**路由器的每个接口都有一个 IP 地址**,且可以隔离冲突域。 * 绿色区域也可以称为网络,叫做无编号网络(有 IP 地址,但是由一段线构成)。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.4.1_1%29.png) ### 2、分类的 IP 地址 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.4.2_1%29.png) * A 类地址 * 网络号范围 1 ~ 126:网络号占 8 位,第一位必须为 0。 * 第一个网络号全 0:0.0.0.0 表示本网。 * 最后一个网络号 127.0.0.0 表示环回地址。 * 私有 IP 地址:**10**.0.0.0~**10**.255.255.255 共一个网段(网络号)。 * B 类地址 * 网络号范围 128~191:网络号占 16 位,前两位必须为 10。 * 第一个网络号 128.0 不可指派。 * 私有 IP 地址:**172.16**.0.0~**172.31**.255.255 共 16 个网段。 * C 类地址 * 网络号范围 192~223:网络号占 24 位,前三位必须为 110。 * 第一个网络号 192.0.0 不可指派。 * 私有 IP 地址:**192.168.0**.0~**192.168.255.**255 共 256 个网段。 * D 类地址 * 为多播地址:在一对多通信的时候使用的地址。(IP 组播地址会讲到) * E 类地址 * 保留为今后使用 ### 3、特殊 IP 地址 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.4.3_1%29.png) ### 4、私有 IP 地址 也称为可重用地址。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.4.4_1%29.png) * 路由器对目的地址是私有 IP 地址的数据报一律不进行转发。 * 要与外部互联网建立通信,需要通过网络地址转换 NAT。 * 此处网段看的是网络号的最后一段。 ### 5、不同类的 IP 地址特点 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.4.5_1%29.png) * A 类: * 最大可用网络数为什么减 2:网络号全 0 时和 127 时为特殊 IP 地址。 * 为什么每个网络中的最大主机数减 2:主机号全 0(只表示网络)和主机号全 1(广播地址)为特殊 IP 地址。 * B 类:最大可用网络数为什么减 1:128.0 网络号(B 类第一个网络号)不可指派(但现在已经指派出去了)。 * C 类:最大可用网络数为什么减 1:192.0.0(C 类第一个网络号)网络号不可指派。 ### 6、网络地址转换 NAT #### (1)网络地址转换(NAT) * 指通过将专用网络转换为公用地址,从而对外隐藏内部管理的 IP 地址。 * 在专用网(私有 IP 地址)连接到因特网的路由器上安装 NAT 软件,安装了 NAT 软件的路由器叫 NAT 路由器,它至少有一个有效的外部全球 IP 地址。 #### (2)网络地址转换过程 * 使用本地地址的主机和外界通信时,NAT 路由器使用 NAT 转换表将本地地址转换成全球地址(或相反)。 * NAT 转换表中存放着 { 本地 IP 地址:端口 } 到 { 全球 IP 地址:端口 } 的映射。 * 通过此方法可让多个私有 IP 地址映射到同一个全球 IP 地址。 ## (五)补充概念 ### 有类和无类网络,超网和子网 * **有类网络**:也叫主类网络或标准网络,就是指把 IP 地址能归结到的 A 类、B 类、C 类 IP,使用的是标准的默认子网掩码。 * **无类网络**:相对于有类网络,无类网络 IP 地址的掩码是变长的。在有类网络的基础上,拿出一部分主机 ID 作为子网 ID。 * **超网**:把多个小网络组合成一个大网络,称为超网(SuperNetting),也可以说子网掩码长度小于相对应的有类网络的叫超网。 * **子网**:有类网络划分成更小后的网络,称为子网(Subnet),也可以说子网掩码长度大于相对应的有类网络的叫子网。 ## (六)子网掩码 * 无论是二级 IP 地址还是三级 IP 地址,只要是网络号就全写 1,只要是主机号就全 0。 > 子网号也全写 1,注意并不是第三个字节八位都是子网号都写 1,而是**主机号当中较高的位数作为子网号才写 1。** > * 同样的 IP 地址和不同的子网掩码可以得出相同的网络地址。 但是不同的掩码效果是不同的,因为它们的子网号和主机号的位数是不一样的,从而可划分的子网数和每个子网中的最大主机数都是不一样的。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.6_1%29.png) 当一个网络不划分子网时,使用默认的子网掩码: * **A 类**默认的子网掩码:**255**.0.0.0 * **B 类**默认的子网掩码:**255.255**.0.0 * **C 类**默认的子网掩码:**255.255.255**.0 > 习题 > 1、已知目的 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0, 求网络地址。如果子网掩码是 255.255.224.0,求网络地址。 > > 此题为已知目的地址,求子网网络地址。对于第一问: > > * 分析: > > * 子网掩码与 IP 地址逐位相与,就得到子网网络地址。 > * 因为子网掩码前两个字节都是全 1,IP 地址的前两个字节与子网掩码前两个字节相与后不变,所以只需要求 IP 地址的 72 与子网掩码 192 的相与结果。 > * 计算:IP 地址的 72 转为二进制是:01001000,子网掩码 192 转为二进制是 11000000,相与后得 01000000 即 64。所以子网网络地址为 141.14.64.0。 > * 第二问同理得子网网络地址为 141.14.64.0。 > > 2、某主机的 IP 地址为 180.80.77.55,子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是( )。 A.180.80.76.0 B. 180.80.76.255 C. 180.80.77.255 D. 180.80.79.255 > > 此题为求同一子网内的目的地址。 > > 1. 确定主机号:该主机发送广播分组,所以目的地址的主机号全 1。 > 2. 确定网络号:因为主机 IP 地址是 180 开头,该网络是 B 类网络,前两个字节为网络号。故该子网的网络号是 180.80.0.0。 > 3. 计算子网号:子网掩码的 252 二进制为 11111100,可以推出子网号是前 6 位,后 10 位是主机号。 > > 于是主机的子网号也是前 6 位(在同一子网内),即 77 的二进制 01001101 的前六位是子网号为 010011,所以目的地址的子网号也是 010011 即 76。 > 4. 得出目的地址:又目的地址的主机号全 1,所以目的地址后 10 位全 1。 > > 目的地址的后 16 位是 0100111111111111,前 8 位转为十进制是 79。故目的地址可以是 180.80.79.255。 ## (七)子网划分 ### 1、基本思想: * 对于该网络的外层来看,还是一个大的网络,只有该网络内部才可以看到其进行了子网划分。 即:**子网划分纯属是一个网络单位内部的事情,与其他同级或上级网络无关**。 * **把主机号当中较高的位数作为子网号**。 * 由于主机号不能全 0 或全 1,所以主机号至少为两位。 * 子网号能否全 0 全 1 要看情况。 * 子网号借 n 位,则可获得 2^n^ 个子网;每借一位,主机号少一个高位。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.7.1_1%29.png) ### 2、子网划分的任务包括: ①、确定子网掩码的长度。 ②、确定子网下的主机可用地址范围(第一个可用 IP 和最后一个可用 IP)。 ③、确定网络地址(主机位全为 0)和广播地址(主机位全为 1),不能分配计算机主机用。 ### 3、计算子网数 & 每个子网的主机数 设子网位数为 n,主机位数为 m: * **子网数 = 2**n; * 一个子网中的可用主机数,**主机数 = 2**m **- 2** ; > 主机号全 0 全 1,分别为“本网络”、“广播地址” > ### 4、等长子网划分 等长子网划分就是将一个有类网络等分成多个网络,也就是等分成多个子网,所有子网的子网掩码都相同。 * **平均划分,需要 n 个子网,就往后借 log**2**n 个位**。 > 划分为 2 个子网,要借 1 位主机位; > > 划分为 4 个子网,要借 2 位主机位; > > 划分为 8 个子网,要借 3 位主机位; > * 如果要分配 n 个子网络,则需要的子网位数 k 应满足 2k >= n。 * 这样每个子网号都是 k 位,且主机号位数都相同。 步骤: 1. **平均划分,需要 n 个子网,就往后借 log**2**n 个位**; 2. **子网掩码网络位数增加 log**2**n 个 1**; 3. **写出每个子网的网络地址。即 IP 地址中主机位全 0 至全 1,其中全 0 本网段,全 1 广播。** ### 5、使用子网掩码时路由器的分组转发算法 路由表每一行中有: * 目的网络地址; * 目的网络子网掩码; * 下一跳地址。 算法过程: 1. 提取目的 IP 地址,记为 D。 2. 判断是否直接交付: * 用 D 和各网络中的子网掩码分别进行“ 与 ”运算,若得结果(子网网络地址)与某一个子网地址相匹配,则将分组直接交付。 * 否则下一步。 3. 特定主机路由: * 路由表中有一行特定主机路由,若其中有 D,则将分组传送个路由表中所指明的下一跳路由器。 * 否则下一步。 4. 检查路由表中有无其他路径: * 对路由表中的每一行中的子网掩码和 D 逐位“ 与 ”运算,若结果与该行的目的地址相匹配,则将分组传送给该行指明的下一条路由器。 * 否则下一步。 5. 默认路由 0.0.0.0: * 如果还是没有对应的网络,就把分组交给默认路由(默认路由的子网掩码也是全 0),默认路由会依次发给其他一个路由器,然后循环以上操作。如果在分组的生存时间内还没找到,就丢弃。 6. 丢弃,报告转发分组出错。 ## (八)VLSM 可变长子网掩码 ### 1、概念 VLSM(Variable Length Subnet Mask,可变长子网掩码)规定了在一个有类(A、B、C 类)网络内包含多个子网掩码的能力,以及**对一个子网的再进行子网划分**的能力。 > 每一个 IP 地址都包含了 2 部分:网络号和主机号。在有类网络中,32bit 的 IP 地址被分为 4 段,每段 8bit 来表示。这使得作为网络号的前缀必须是 8 位,16 位或者 24 位。当网络号是 24 位的时候,主机号只有 8 位,也就是说,可分配的最小的地址块是 256 个(28=256,而实际可分配的主机地址还要减去两个,一个是网络地址,一个是广播地址,最后为 254 个),这个数量对于大多数企业来说是不够的。 > > 而比这个大一点的 IP 地址块是网络号为 16 位的时候,这个时候可分配的地址块是 65536(216=65536),这个数量对于大多数公司又太多了。这导致无论公司选择哪种类型的网络,都可能对 IP 地址造成大量的浪费。 IP 地址如果只使用有类(A、B、C 类)来划分,会造成大量的浪费或者不够用。VLSM 的诞生有效的解决了这个问题,可以在有类网络的基础上,**通过对 IP 地址的主机号进行再划分,把一部分划入网络号,就能划分各种类型大小的网络了**。网络号也不再仅局限在 8、16 和 24 位这几个数,而是灵活变化的大小了。 ### 2、CIDR 与 VLSM 的区别 * 在使用 CIDR 聚合地址时,将原来有类 IP 地址中的网络位划出一部分作为主机位使用。 * 在使用 VLSM 划分子网时,将原来有类 IP 地址中的主机位按照需要划出一部分作为网络位使用。 * **CIDR**:子网掩码往**左边**移,**掩码 netmask 缩短**了。 * **VLSM**:子网掩码往**右边**移,**掩码 netmask 增长**了。 * **CIDR** 是把几个有类网络**合成一个大的网络(超网)**,用于**路由地址聚合**。 * **VLSM** 是把一个有类网络**分成几个小型网络(子网)**,用于**更高效划分子网**。 > 在某种程度上来说,CIDR 和 VLSM 它们之间可以看做是**逆过程**。 > **CIDR 是把几个小网络聚合成一个大网络来做表示,而 VLSM 则是把一个大网络继续细分为几个小网络进行 IP 地址分配。 > CIDR 能让路由器的路由条目得到有效的减少,从而减少路由通告,降低路由器负担,而 VLSM 则是充分利用 IP 进行地址分配来解决 IP 地址不被浪费的问题,节约 IP 地址空间,更为有效的使用。** ## (九)无分类编址 CIDR ### 1、无分类编址 CIDR 概念 又称为无分类域间路由选择 CIDR,是构成超网的一种技术实现。 CIDR 采用 **8-30 位可变网络 ID**(最大可用的只能为 30 位,即**保留 2 位给主机位**) #### (1)特点 1. 消除了传统的 A 类,B 类和 C 类地址以及划分子网的概念。 2. .融合子网地址与子网掩码,方便子网划分。 3. 即从一个 IP 地址就可以得知一个 CIDR 地址块。 > 有其 IP 地址可以知道该地址块的,可指派地址数、最小地址、最大地址、子网掩码 > #### (2)CIDR 记法 * 称“斜线记法”,表达方式为“ **IP 地址 / 网络前缀所占比特数** ”。 即:**IP 地址 ::= {< 网络前缀 >, < 主机号 >} / 网络前缀所占位数** > 网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续 1 的部分。 > * IP 地址后加上“/ ”,然后写上**网络前缀(可以任意长度)的位数**。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.1.2_1%29.png) > 128.14.32.0 / 20:表示前 20 位是网络号,后 12 位是主机号。 > > * IP:128.14.32.5 / 20 ;子网掩码:255.255.240.0 > * 两者逐位与后,从首位开始、连续相同的部分为网络前缀。 > * 结果为 128.14.32.0 / 20 #### (3)构造超网 * 将网络前缀都相同的连续 IP 地址组织“CIDR 地址块”,即**取 IP 地址的交集(相同部分)**。 * 一个 CIDR 地址块可以表示很多地址,这种地址的聚合称为路由聚合,或构成超网。 > 将多个 IP 地址融合为一个新的 IP 地址。 > #### (4)计算地址块 * 将 IP 地址用点分十进制法表示出; * 画出网络前缀部分,剩余部分即为主机号; * 最小地址、最大地址:令主机号分别为全 0 和全 1。 * 子网掩码:网络前缀的位数全等 1,剩余主机号位数全用 0 表示。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.1.4_1%29.png) ### 2、构成超网 * **划分子网**:将大网络**切割**成几个子网,**少 -> 多** * **构成超网**:将多个子网**聚合**成一个大子网,**多 -> 少** * 将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。 * 方法:**将网络前缀缩短**。 * **所有网络地址取交集,就是超网的地址**。 * **交集部分为网络号,剩余部分为主机号**。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_1%29.png) **以例题来理解构造超网:** > 示例:某企业有一个网段,该网段有 200 台主机,使用 192.168.0.0 255.255.255.0 网段。 > > 后来计算机数量增加到 400 台,为后来增加的 200 台主机使用 192.168.1.0 255.255.255.0 网段,如下图: > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_2%29.png) > > 那么有没有更好的办法,让这两个 C 类网段的计算机认为在一个网段? > > 这就需要将 192.168.0.0/24 和 192.168.1.0/24 两个 C 类网络合并。 > > # 一、合并网段 > > 网段合并:子网掩码向前移动 1 位,使得网络部分保持前部分相同。 > >> 子网掩码往左移 1 位,能够合并 2 个连续的网段,但**不是任何连续的网段都能合并**。 >> >> ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_3%29.png) >> > > 合并网段之后,如下图,这样所有主机相互通信就不再经过路由器转发了。 > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_4%29.png) > > * ①、合并之后网段为:192.168.0.0/23,IP 分配如下图: > * ②、合并之后 IP 地址 192.168.0.255/23 也是可以给计算机使用的,因为主机部分往左增加了一位 0(并不是全 1),如下图: > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_5%29.png) > > # 二、不是任何连续的网段都能合并 > > 示例,如下两个连续的网段是不能合并(往前移动 1 位,网络部分不能保持相同)的。 > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_6%29.png) > > 如果非要合并,就要往前移动 2 位,这时候网络部分保持相同,这样一来,等于合并了 4 个网段,如下图: > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_7%29.png) > > # 三、哪些连续的网段能够合并 > > ## 1、判断 2 个网段是否能够合并 > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_8%29.png) > > 子网掩码往左移动相应位数后,网络部分保持相同才能合并。 > **结论:**判断连续的 2 个网段是否能够合并,只要第一个网络号能被 2 整除,就能够通过左移 1 位子网掩码合并。 > > ## 2、判断 4 个网段是否能够合并 > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_9%29.png) > > **结论:**判断连续的 4 个网段是否能够合并,只要第一个网络号能被 4 整除,就能够通过左移 2 位子网掩码合并。 > > 依次类推,要想判断连续的 8 个网段是否能够合并,只要第一个网络号能被 8 整除,这 8 个连续的网段就能够通过左移 3 位子网掩码合并。 > > # 四、网段合并的规律 > > 子网掩码左移 1 位能够将能够合并两个网段,左移 2 位,能够合并四个网段,左移 3 位,能够合并 8 个网段。 > > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.2_10%29.png) > > # 五、判断一个网段是超网还是子网 > > ①、通过左移子网掩码合并多个网段,右移子网掩码将一个网段划分成多个子网,使得 IP 地址打破了传统的 A 类、B 类、C 类的界限。 > > ②、判断一个网段到底是子网还是超网,就要看该网段是 A 类网络、还是 B 类网络、还是 C 类网络,默认 A 类子网掩码/8,B 类子网掩码是/16,C 类子网掩码是/24。 > > ③、如果该网段的子网掩码比默认子网掩码长,就是子网,如果该网段的子网掩码比默认子网掩码短,则是超网。 ### 3、变长子网划分 VLSM 规定了如何在一个进行了子网划分的网络中,不同子网使用不同的子网掩码。这对于网络内部不同网段需要不同大小子网的情形来说很有效,这种划分子网的方式叫变长子网划分。 变长子网划分其实就是**在等长子网的划分上,分别取不同等分子网中的某个或者多个子网**。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.3_1%29.png) #### 变长子网划分总结 1. 变长子网划分规律 * **如果一个子网地址块是原来网段的(1/2)**^n^**,子网掩码就在原网段的基础上右移 n 位,不等长子网,子网掩码也不同**。 2. 点到点网络的子网掩码 * 每个子网是原来网络的(1/2)×(1/2)×(1/2)×(1/2)×(1/2)×(1/2),也就是(1/2)^6,子网掩码往右移动 6 位。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.9.3_2%29.png) #### 子网划分步骤 ##### (1)确定划分子网数 子网数 = 2n,n 代表子网掩码往右移动的位数 > 要划分 2 个子网,子网掩码需要往右移动 1 位,21=2 > 要划分 4 个子网,子网掩码需要往右移动 2 位,22=4 > 要划分 8 个子网,子网掩码需要往右移动 3 位,23=8 > ……… 子网数只能为 2 倍的关系划分。 ##### (2)确定子网划分后的地址 每个子网地址块大小(IP~block~)= 2(8-n) 每个子网可用地址个数(IP~num~)= 2(8-n)-2 ① 子网的网络地址 = 从 0 到 255,取每段地址块的首个值 ② 子网的广播地址 = 下一个子网的网络地址-1 ③ 子网的可用地址 = 子网的网络地址到子网的广播地址区间 ##### (3)确定子网掩码 **划分后的子网掩码 CIDR = 原网络的子网掩码 CIDR+n**,如要写成十进制:256-2(8-n) 如还有不明白的,请参照上面给出的 VLSM 可变长子网掩码对应 CIDR 值这个图就一目了然。 ### 4、最长前缀匹配(最佳匹配) 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组织。 在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。 匹配方法:跟网络掩码按位相与。 > 构成超网是将前缀缩短,把具体的网络变成了宽泛的网络。 > > 在实际转发时,应该找最具体的网络,而不是最宽泛的网络。 ### 5、CIDR 地址块中子网号可以全 0 全 1 * CIDR 地址块中子网号可以全 0 全 1。 * 地址个数需要减 2(主机号全 0 表示网络,主机号全 1 表示广播地址)。 ## (十)地址解析协议 - ARP 协议 ### 1、局域网内部发送数据的过程 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.10.1_1%29.png) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.10.1_2%29.png) **1 号主机给 3 号主机发送数据过程:** * 传输层:把报文切割为报文段 * 网络层:对报文段进行封装成分组,添加 1 号主机 **IP 地址(源)**和 3 号主机 **IP 地址(目的)**。 * 数据链路层:对分组进行封装成数据帧,添加**源 MAC 地址和目的 MAC 地址**,现在不知道目的主机是哪一个,如何添加目的 MAC 地址呢?——ARP 协议 > 将得到的 MAC3 添入,然后加一个尾部 FCS,构成数据帧,再放入物理层上传输。 > * 物理层:形成数字信号或模拟信号,放到链路上传播 #### (1)ARP 高速缓存 * 对于每一个主机及路由器,都会有 ARP 高速缓存,存放的是**局域网内部**主机 IP 地址与 MAC 地址的映射。 #### (2)ARP 协议过程 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.10.1.2_1%29.png) 1. 广播一个 ARP 的分组请求:广播分组包括:1 号主机 IP 地址;**目的 MAC 地址所对应的主机的 IP 地址**;1 号主机 MAC 地址;目的 MAC 地址(全 1,表示广播地址,别和 IP 地址主机号的全 1 混淆了)。**交换机**会在所有端口转发广播地址,故 2 号主机、3 号主机和路由器端口都会收到 1 号主机的广播分组。 2. 单播 ARP 响应分组:3 号主机根据 IP 地址知道这是发送给自己的,于是单播一个 ARP 响应分组给 1 号主机(单播:直接到 1 号主机)。该响应分组包括 3 号主机的 IP 地址和 3 号主机的 MAC 地址的映射。 ### 2、不同局域网之间发送数据过程(目的地址为默认网关的 MAC 地址) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.10.2_1%29.png) **不在一个局域网内部,1 号主机和 5 号主机通信过程:** 1. ARP 高速缓存存储的是局域网内部 IP 地址与 MAC 地址的映射,1 号主机 IP 地址与 5 号主机 IP 地址相与,发现与 5 号主机不在同一网段内。 2. **目的地址为默认网关的 MAC 地址:**1 号主机查询默认网关(与外界沟通的路由器)的 MAC 地址 MAC6,并添入到目的地址。 * ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.10.2_2%29.png) * 得到 MAC6 的过程: ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.10.2_3%29.png) * 1 号主机广播 ARP 请求分组,因为要的到路由器的 MAC 地址,所以目的 IP 地址为路由器的 IP 地址。 * 路由器单播 ARP 响应分组,得到 MAC 地址 MAC6。 3. 到 IP6 路由器后,IP 地址不变,再次通过 **ARP 协议**得到第二个路由器的 MAC 地址 MAC8,源地址就变成 MAC7,目的地址就变成 MAC8。 4. 到第二个路由器后,还是通过 **ARP 协议**得到 MAC5。源地址就变成 MAC9,目的地址就变成 MAC5。 ### 3、ARP 协议总结 #### (1)为什么使用 ARP 协议 * 由于在实际网络的链路上传送数据帧时,最终必须使用 MAC 地址。 #### (2)ARP 协议功能 * 完成主机或路由器 IP 地址到 MAC 地址的映射。解决下一跳走哪的问题。 #### (3)ARP 协议使用过程 1. 检查 **ARP 高速缓存**,有对应表项则写入 MAC 帧,没有则用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧封装并**广播 ARP 请求分组**,同一局域网中所有主机都能收到该请求。 2. 目的主机收到请求后就会向源主机**单播一个 ARP 响应分组**,源主机收到后将此映射写入 ARP 缓存。 > ARP 缓存也有生存周期 TTL:10-20min 更新一次 > #### (4)ARP 协议 4 种典型情况 * 1.主机 A 发给**本网络**上的主机 B:用 ARP 找到主机 B 的硬件地址; * 2.主机 A 发给**另一网络**上的主机 B:用 ARP 找到本网络上一个**路由器(网关)的硬件地址**; * 3.路由器发给**本网络**的主机 A:用 ARP 找到主机 A 的硬件地址; * 4.路由器发给**另一网络**的主机 B:用 ARP 找到本网络上的一个**路由器的硬件地址**。 #### (5)ARP 协议为 IP 协议提供服务 ARP 协议是处于链路层和网络层中间的协议,因为它结合了 IP 地址和 MAC 地址。主要划分到网络层,为 IP 协议提供服务。 从 IP 地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。 只要主机或路由器和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 就会自动地将这个 IP 地址解析为数据链路层所需要的硬件地址。 ## (十一)DHCP 协议 > (**动态获取 IP 地址**等、应用层协议) ### 1、概念 * 动态主机配置协议 DHCP 是应用层协议,使用客户/服务器方式,客户端和服务端通过**广播方式**进行交互,基于 **UDP**。 ### 2、功能 * DHCP 提供即插即用联网的机制,主机可以从服务器**动态获取 IP 地址**、子网掩码、默认网关、DNS 服务器名称与 IP 地址,允许**地址重用**,支持**移动用户加入网络**,支持**在用地址续租**。 ### 3、流程 1. 主机广播 DHCP 发现报文: 试图找到网络中的服务器,服务器获得一个 IP 地址。 > “有没有 DHCP 服务器呀?” > 2. DHCP 服务器广播 DHCP 提供报文:服务器拟分配给主机一个 IP 地址及相关配置,先到先得。 > “有!”“有!”“有!” > 3. 主机广播 DHCP 请求报文:主机向服务器请求提供 IP 地址。 > “我用你给我的 IP 地址啦?” > 为什么这里还用广播呢?通知其他 DHCP 服务器,不要再等我了,把你的 IP 地址给其他人吧。 4. DHCP 服务器广播 DHCP 确认报文: 正式将 IP 地址分配给主机。 > “用吧! ” > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.11.3_1%29.png) ## (十二)ICMP 协议 > (保障 IP 数据报转发、网络层协议) ### 1、互联网控制报文协议 ICMP #### (1)作用 * 为了更有效地转发 IP 数据报和提高交付成功的机会。 #### (2)功能 * 差错(或异常)报告 > 实际通信过程中,总会有分组出错,对于出错的分组丢弃并发送一个 **ICMP 差错报文**。 > * 网络探询 #### (3)报文种类 * ICMP 差错报文、ICMP 询问报文。 #### (4)报文格式 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.12.1.4_1%29.png) * 首部检验和只检验首部,ICMP 报文的检验和检验数据部分。 ### 2、ICMP 差错报文(5 种) #### (1)分类 1. 终点不可达 * 即,**无法交付**。 * 当路由器或主机不能交付数据报时就向源点发送**终点不可达报文**。 2. 源点抑制(**取消**) * 即,**拥塞丢数据时告诉源点慢点发**。 * 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送**源点抑制报文**,使源点知道应当把数据报的发送速率放慢。 3. (3)时间超过 * 即,**TTL=0 和不完整**。 * 当路由器收到生存时间 TTL=0 的数据报时,除丢弃该数据报外,还要向源点发送**时间超过报文**。 * 当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送**时间超过报文**。 4. 参数问题 * 即,**首部字段有问题**。 * 当路由器或目的主机收到的数据报的**首部中有的字段的值不正确**时,就丢弃该数据报,并向源点发送**参数问题报文**。 5. 改变路由(重定向) * 即,**值得更好的路由**。 * 路由器把**改变路由报文**发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。 #### (2)ICMP 差错报文组成 * **ICMP 差错报文**是 **IP 数据报**的**数据部分**。 * ICMP 报文的前 8 字节(类型)+ 出错的 IP 数据报首部 + 数据字段前 8 字节。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%282.12.2_1%29.png) #### (3)发送 ICMP 差错报文的情况 * 对于**出错的 IP 数据报**丢弃并发送一个 **ICMP 差错报文**。 #### (4)不应发送 ICMP 差错报文的情况 * 对 **ICMP 差错报告报文**不再发送 ICMP 差错报告报文。 * 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。(只对第一个分片发送) * 对具有组播地址(一点对部分点,与广播区分:一点对所有)的数据报都不发送 ICMP 差错报告报文。 * 对具有特殊地址(如 127.0.0.0 环回地址或 0.0.0.0 本网内主机地址)的数据报不发送 ICMP 差错报告报文。 ### 3、ICMP 询问报文(4 种) 1. 回送请求和回答报文 * **测试目的站是否可达以及了解其相关状态**。 > 主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。 > * 具体应用:PING 2. 时间戳请求和回答报文 * **用来进行时钟同步和测量时间**。 > 请某个主机或路由器回答当前的日期和时间。 > 3. 掩码地址请求和回答报文(不再使用) 4. 路由器询问和通告报文(不再使用) ### 4、ICMP 的应用 #### (1)PING 测试两个主机之间的连通性,使用了 **ICMP 回送请求和回答报文**。 > PING 工作在应用层,它直接使用网络层的 ICMP,而为使用传输层的 TCP、UDP。 #### (2)Traceroute 跟踪一个分组从源点到终点的路径,使用了 **ICMP 时间超过差错报告报文**。 > Traceroute 工作在网络层。 工作原理: * 现有源主机和目的主机,中间有多个路由器。源主机发送一连串数据报,数据报之间的差别就是 TTL 不同。 * 第一个数据报 TTL 设置为 1,当第一个数据报到达第一个路由器时,TTL-1=0 丢弃并返回给源主机一个 ICMP 时间超过报文。 * 第二个数据报 TTL 设置为 2,当第二个数据报到达第二个路由器时,TTL=0 丢弃并返回给源主机一个 ICMP 时间超过报文。 * 其他数据报依次类推,这样就可以算出该分组从源主机到目的主机的路径。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 三、IPv6 ## (一)为什么有 IPv6? 1. 32 位的 IPv4 地址空间已分配殆尽,无分类编址 CIDR 和网络地址转换 NAT 方法治标不治本。 2. 改进首部格式 > 之前的 IPv4 首部部分 20 字节的字段太多,通过改进首部格式达到快速处理/转发数据报。 > 3. 支持 QoS > QoS ( Quality of Service,服务质量)指个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。 > ## (二)IPv6 数据报格式 > (首部 40B,首部单位 8B) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%283.2_1%29.png) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%283.2_2%29.png) * 版本:指明了协议版本,IPv6 的版本就是 6。 * 优先级:区分数据报的类别和优先级。 * 流标签:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签。 * 有效载荷长度:有效载荷的大小(扩展首部 + 数据) * 下一个首部:标识下一个扩展首部或上层协议首部。 > 假如有一个数据报,携带基本首部和 3 个扩展首部(1、2、3),每个扩展首部内都有一个字段:下一个首部字段。基本首部也有下一个首部字段。基本首部的下一个首部标识的是扩展首部 1,扩展首部 1 的下一个首部标识的是扩展首部 2...最后一个扩展首部指向数据部分。数据部分是运输层传来的报文段。 > * 跳数限制:相当于 IPv4 的 TTL。 如果达到 0,路由器丢弃数据报并返回一个 ICMP 时间超过差错报文。 * 源地址(128 位) * 目的地址(128 位) ## (三)IPv6 & IPv4 1. IPv6 将地址从 **32 位(4B)**扩大到 **128 位(16B)**,**更大的地址空间**。 2. IPv6 将 IPv4 的**校验和字段彻底移除**,以减少每跳的处理时间。 3. IPv6 将 IPv4 的**可选字段移出首部**,变成了**扩展首部**,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。 4. IPv6 支持**即插即用**(即自动配置),**不需要 DHCP 协议**。 5. IPv6 首部长度必须是 **8B 的整数倍**,IPv4(一种八片首饰)首部是 4B 的整数倍。 6. IPv6 **只能在主机处分片**,IPv4 可以在路由器和主机处分片。即使 IPv6 的分组很长,在路由器也无法分片,如果超过 MTU,只能在路由器处丢弃,并返回 ICMPv6 差错报文。 7. ICMPv6:附加报文类型“分组过大”。 8. IPv6 支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。 9. IPv6 取消了协议字段(数据使用什么协议),改成下一个首部字段。 10. IPv6 取消了总长度字段,改用有效载荷长度字段。 11. IPv6 取消了区分服务字段。 ## (四)IPv6 地址表示形式 一般形式冒号十六进制记法:(每 4 位 bit 用一个 16 进制表示,24=16,一个 16 进制数刚好可以表示完 4 位。每 4*4=16 位=2B 一组,用冒号隔开) > 4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170 压缩形式:4BF5:0000:0000:0000:BA5F:039A:000A:2176 -> 4BF5:0:0:0:BA5F:39A:A:2176。 零压缩形式:一连串连续的 0 可以被一对冒号取代,**双冒号表示法**在一个地址中仅可出现一次。 > FF05:0:0:0:0:0:0:B3 -> FFO5::B3 ## (五)IPv6 基本地址类型 * 单播:一对一通信 可做源地址 + 目的地址 * 多播:一对多通信 可做目的地址 (取代了 IPv4 的广播) * 任播:一对多中的一个通信 可做目的地址 (通常是离发送方最近的主机) ## (六)IPv6 向 IPv4 过渡的策略 ### 1、双栈协议 * 双协议栈技术就是指在一台设备上**同时启用 IPv4 协议栈和 IPv6 协议栈**。 * 这样的话,这台设备既能和 IPv4 网络通信,又能和 IPv6 网络通信。 * 如果这台设备是一个**路由器**,那么这台路由器的不同接口上,**分别配置了 IPv4 地址和 IPv6 地址**,并很可能分别连接了 IPv4 网络和 IPv6 网络。 * 如果这台设备是一个**计算机**,那么它将**同时拥有 IPv4 地址和 IPv6 地址**,并具备同时处理这两个协议地址的功能。 ### 2、隧道技术 * 通过使用互联网络的基础设施在网络之间传递数据的方式。 * 使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。 * 隧道协议将其它协议的数据帧或包**重新封装**然后通过隧道发送。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 四、路由算法与路由协议概述 ## (一)路由算法 最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%284.1_1%29.png) ## (二)路由算法的分类 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%284.2_1%29.png) > 动态路由算法所优化的出的路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。 ## (三)分层次的路由选择协议 ### 1、自治系统 AS(使用内部网关协议) * 在单一的技术管理下的一组路由器,而这些路由器使用一种 **AS 内部的路由选择协议(内部网关协议)**和共同的度量以确定分组在该 **AS 内**的路由,同时还使用一种 **AS 之间的路由协议(外部网关协议 EGP)**以确定在 **AS 之间**的路由。 * 一个 **AS 内**的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。 ### 2、路由选择协议 * 内部网关协议 IGP:一个 AS 内使用的,具体协议有:RIP(距离向量路由算法)、OSPF(链路状态路由算法) * 外部网关协议 EGP:AS 之间使用的,具体协议有:BGP 采用分层路由后,路由器被划分为区域,每个路由器知道如何将分组路由到自己所在区域内的 目标地址,但对于其他区域内的结构毫不知情。当不同的网络相互连接时,可将每个网络当作一个独立的区域,这样做的好处是一个网络中的路由器不必知道其他网络的拓扑结构。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%284.3.2_1%29.png) ## (四)路由器交付 路由选择分为**直接交付**和**间接交付**, * 当发送站与目的站在同一网段内,就使用**直接交付**(对应 RIP 协议局域网内发送数据过程); * 反之使用**间接交付**(对应 RIP 协议不同局域网之间发送数据过程)。 * 直接交付是在同一网段内,不涉及路由器。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 五、路由选择协议(路由器之间的协议) ## (一)内部网关 RIP 协议与距离向量算法 > RIP 是应用层协议,它使用 UDP 传送数据。 ### 1、RIP 协议 #### (1)RIP 协议(路由信息协议) * 是一种分布式的基于**距离向量算法**的路由选择协议,是因特网的协议标准,最大优点是简单。 #### (2)记录最佳距离 * RIP 协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的**唯一最佳距离记录**(即一组距离)。 #### (3)距离(最多 15 个路由) * 通常为“跳数”,即从源端口到目的端口所**经过的路由器个数**,经过一个路由器跳数 +1。 * 特别的,从一路由器到直接连接的网络距离为 1(也有的书是 0)。 * RIP 允许一条路由**最多只能包含 15 个路由器**,因此距离为 **16 表示网络不可达**。所以 RIP 协议只适用于小互联网。 **例:** ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.1.1.3_1%29.png) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.1.1.3_2%29.png) ### 2、和谁交换?多久交换一次?交换什么? #### (1)和谁交换? * 仅和**相邻路由器**交换信息。 #### (2)交换什么? * 路由器交换的信息是**自己的路由表**(路由器把自己的路由表信息放到一个 RIP 报文里面,发送给相邻路由器)。 #### (3)多久交换一次? * **每 30 秒**交换一次路由信息,然后路由器根据新信息更新路由表。 * 若超过 180s 没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。 #### (4)交换过程: * 路由器刚开始工作时,只知道直接连接的网络的距离(距离为 1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 * 经过若干次更新后,**所有路由器**最终都会知道到达**本自治系统**任何一个网络的**最短距离和下一跳路由器的地址**,即“收敛”。 * 路由表怎么更新的?——距离向量算法 ### 3、距离向量算法 每个路由器项目都有三个关键数据:< 目的网络 N,距离 d,下一跳路由器地址 >。 对于每个相邻路由器发送过来的 RIP 报文,执行以下步骤: (1)对地址为 X 的相邻路由器发来的 RIP 报文,先修改此报文中的所有项目: * **把“下一跳”字段中的地址都改为 X,并把所有“距离”字段的值加 1**。 (2)对修改后的 RIP 报文中的每个项目,执行如下步骤: 1. 当原来的路由表中没有目的网络 N 时,把该项目添加到路由表中。 2. 当原来的路由表中有目的网络 N 时,且下一跳路由器的地址是 X 时,用收到的项目替换原路由表中的项目。 即,目的网络和下一跳路由器地址与原表相同,直接替换。 3. 当原来的路由表中有网络 N ,且下一跳路由器的地址不是 X 时: 1. 如果收到的项目中的距离 d 小于路由表中的距离,那么就用**收到的项目替换原路由表中的项目**; 2. 否则什么也不做。 即,目的网络与原表相同,下一跳路由表与原表不同,哪个距离短用哪个。 (3)如果 180 秒(RIP 默认超时时间为 180 秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置 16(距离 16 表示不可达)。 (4)返回。 > ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.1.3_1%29.png) ### 4、RIP 协议的报文格式(使用 UDP 传输数据) RIP 报文包含的信息就是路由表的全部信息,每两个路由表之间交换信息其实就是交换的 RIP 报文。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.1.4_1%29.png) ### 5、RIP 协议特点:好消息传得快,坏消息传的慢 * 优点:实现简单、开销小、收敛过程较快。 * 缺点:当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此信息传送到所有的路由器,“慢收敛”。 ## (二)内部网关 OSPF 协议与链路状态算法 ### 1、OSPF 协议(考纲为网络层协议) #### (1)开放最短路径优先 OSPF 协议 * “开放”标明 OSPF 协议不是受某一家厂商控制,而是公开发表的; * “ 最短路径优先”是因为使用了 Dijkstra(迪杰斯特拉)提出的**最短路径算法 SPF**。(该算法十分重要,多次出现) #### (2)OSPF 最主要的特征 * 使用分布式的**链路状态协议**。 #### (3)OSPF 的特点: 和谁交换? * 使用洪泛法(洪水泛滥)向自治系统内**所有路由器**发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。 * **类似广播**——最终整个区域内所有路由器都得到了这个信息的一个副本。 * 而 RIP 仅和**相邻路由器**交换信息。 交换什么? * 发送的信息就是与本路由器**相邻的所有路由器的链路状态**(本路由器和哪些路由器相邻,以及该链路的度量/代价——费用、距离、时延、带宽等)。 * 而 RIP 交换的信息是**自己的路由表**。 多久交换? * **只有当链路状态发生变化时**,路由器才向所有路由器洪泛发送此信息进行交换。 * 而 RIP 是每 30s 路由表交换一次。 #### (4)基本工作原理 * 由于各路由器间频繁地交换链路状态信息,因此所有路由器都能建立一个**链路状态数据库**,即**全网拓扑图**。它在全网范围内是一致的,称为链路状态数据库的同步。 * 然后,每个路由器根据这个全网拓扑结构图,使用 Dijkstra 最短路径算法计算从自己到各目的网络的最优路径,以此构造自己的路由表。 * 此后,当链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路由器。 > 算然 Dijkstra 算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储“下一跳”地址。 > > (只有到了下一跳路由器,才能知道再下一跳应当怎样走) > ### 2、链路状态路由算法 **OSPF 的五个重要分组:** (1)每个路由器发现它的邻居结点【**HELLO 问候分组**】,并了解邻居节点的网络地址。 (2)设置到它的每个邻居的成本度量 metric。 (3)构造【**DD 数据库描述分组**】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。 * 路由器知道了拓扑结构图,就知道全网有多少个路由器以及哪些路由器是相连的还有代价是多少。把这些信息作为摘要信息放到 DD 数据库描述分组中, 发给邻站。 (4)如果 DD 分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【**LSR 链路状态请求分组**】请求自己没有的和比自己更新的信息。 (5)收到邻站的 LSR 分组后,发送【**LSU 链路状态更新分组**】进行更新。 (6)更新完毕后,邻站返回一个【**LSAck 链路状态确认分组**】进行确认。 若: 网络拓扑不是一成不变的,**只要一个路由器的链路状态发生变化**: > 进行以下步骤: (5)泛洪发送【LSU 链路状态更新分组】进行更新。 (6)更新完毕后,其他站返回一个【LSAck 链路状态确认分组】进行确认。 (7)使用 **Dijkstra** 根据自己的**链路状态数据库**构造到其他节点间的**最短路径**。 ### 3、OSPF 的区域(自治系统划分的小范围) 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个**自治系统再划分**为若干个更小的范围,叫做**区域**。 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。 区域也不能太大,在一个区域内的路由器最好**不超过 200 个**。适用于规模比较大的自治系统。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.2.3_1%29.png) > * R3、R4、R7 既叫做主干路由器,也叫做区域边界路由器。 > * R6 叫做自治系统边界路由器,连接其他自治系统。 ### 4、OSPF 分组格式(直接用 IP 数据报传送) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.2.4_1%29.png) > OSPF 直接用 IP 数据报传送。考纲上写 OSPF 是网络层协议,也有人说是传输层协议,因为它是在网络层封装为 IP 数据报的。 ### 5、OSPF 其他特定 1. 每隔 **30min**,要刷新一次数据库中的链路状态。 2. 由于一个路由器的链路状态**只涉及到与相邻路由器**的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 3. OSPF 不存在坏消息传的慢的问题,它的**收敛速度很快**。 ## (三)外部网关 BGP 协议和路径向量算法 ### 1、BGP 协议(应用层协议) > Border Gateway Protocol:边界网关协议 #### (1)和谁交换? 与**其他 AS 的邻站 BGP 发言人**交换信息。 * 在配置 BGP 时,每一个自治系统 AS 的管理员都要选择至少一个路由器来作为 AS 的发言人。一般来说,两个 BGP 发言人都是通过一个共享的网络连接在一起的,BGP 发言人往往就是自治系统边界路由器。 #### (2)交换什么? BGP 发言人之间交换的**网络可达性的信息**,即要到达某个网络所要经过的一系列 AS。 #### (3)多久交换? **发生变化时**更新有变化的部分。 BGP 只能力求寻找一条能够达到目的网络且比较好的路由,而并非寻找一条最佳路由。它是应用层协议,是基于 TCP 的,采用的是路径向量路由选择协议。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.3.1.3_1%29.png) ### 2、BGP 协议交换信息的过程 BGP 所交换的**网络可达性的信息**就是要**到达某个网络所要经过的一系列 AS**。 当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由(不需要最好,因为网络环境复杂)。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.3.2_1%29.png) > 对于 AS1 自治系统来说,有一个边界路由器作为 BGP 发言人,即使用 BGP 协议,同时也使用内部网关协议 RIP 或 OSPF。 **BGP 发言人交换路径向量(交换一组路径的信息可以看作交换路径的一个向量):** * 自治系统 AS2 的 BGP 发言人通知主干网 AS1 的 BGP 发言人:“要到达网络 N1、 N2、N3 和 N4 可经过 AS2。” * 主干网也可以发出通知(因为只要是相邻的邻站,就可以交换信息):“ 要到达网络 N5、N6 和 N7 可沿路径(AS1, AS3)。” ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.3.2_2%29.png) ### 3、BGP 协议报文格式(借助传输层 TCP 传送) 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先**建立 TCP 连接**,即通过 TCP 传送, 然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。 > 为什么使用 TCP 而不是 UDP,因为使用 TCP 可以提供更加可靠的服务,简化路由选择协议 **BGP 是应用层协议**(看到报文就知道是应用层协议),借助**传输层 TCP** 传送。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.3.3_1%29.png) ### 4、BGP 协议特点 #### (1)BGP 路由表 BGP 支持**无分类路由选择 CIDR**,因此 BGP 的路由表也就应当包括目的**网络前缀、下一跳路由器**,以及到达该目的网络所要经过的**各个自治系统序列**。 #### (2)交换内容 * 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。 * 但以后只需要在**发生变化时更新有变化的部分(多久交换)**。 * 这样做对节省网络带宽和减少路由器的处理开销都有好处。 ### 5、BGP-4 的四种报文 #### (1)OPEN(打开)报文 * 用来与相邻的另一个 BGP 发言人建立关系(BGP 报文需要借助 TCP 连接,OPEN 报文就是在实现连接的建立),并认证发送方。 #### (2)UPDATE (更新)报文 * 通告新路径或撤销原路径。 #### (3)KEEPALIVE(保活/确认存活)报文 * 在无 UPDATE 时(可能很长一段时间都不会给对方发送报文,又想知道对方是不是在线),周期性证实邻站的连通性;也作为 OPEN 的确认。 #### (4)NOTIFICATION (通知)报文 * 报告先前报文的差错;也被用于关闭连接。 ## (四)三种路由协议比较 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%285.4_1%29.png) **RIP 是一种分布式的基于距离向量的内部网关路由选择协议**,通过**广播 UDP 报文(传输层)**来交换路由信息。 **OSPF 是一个内部网关协议**,要**交换的信息量较大,应使报文的长度尽量短**,所以不使用传输层协议(如 UDP 或 TCP),而是直接采用**网络层 IP**。 **BGP 是一个外部网关协议**,在不同的自治系统之间交换路由信息,由于网络环境复杂,**需要保证可靠传输**,所以采用**传输层 TCP**。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 六、IP 组播 ## (一)IP 数据报的三种传输方式 ### 1、单播 单播用于发送数据包到单个目的地,且每单播发送一份单播报文都使用一个单播 IP 地址作为目的地址。是一种**点对点**传输方式。 * 单播所占的资源和带宽比较多,因为在发送者和每一接收者之间需要单独的数据信道。 ### 2、广播 广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种**点对多点**传输方式。 > (源地址是单播 IP 地址,目的地址是全 1 广播地址) ### 3、组播(多播) 当网络中的某些用户**需要特定数据时**,组播数据发送者**仅发送一次数据**,借助**组播路由协议**为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始**复制和分发**,是一种**点对多点**传输方式。 > (到最后一步,一个数据报才会被复制成多个数据报,分发给各主机) * 组播提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自**不同的物理网络**(需要有组播路由器的支持,组播路由器就是运行组播协议的路由器,组播路由器既可以运行组播协议也可以运行单播协议)。 * 问题来了,发送的时候,怎么知道哪些主机是一个组播组呢?——IP 组播地址 组播需要路由器的支持才能实现,能够运行组播协议的路由器称为**组播路由器**。 ## (二)IP 组播地址 ### 1、IP 组播地址(接收组播数据报) > 分析: > > * 我们知道,在因特网中进行通信时,每个主机都有一个全球唯一的 IP 地址。 > * 如果组播组中的某个主机想接收组播数据报,组播数据报如何才能传到该主机中呢? > * 组播数据报的目的地址肯定不能只写该主机的 IP 地址,因为这样写,只会发给这一个主机,其他的同处于多播组的主机收不到该数据报。 > * 因此,需要在**该主机中产生一个 IP 组播地址**,来接收组播数据报。 #### (1)IP 组播地址 * IP 组播地址让源设备能够将组播数据报发送给一组设备。 即属于多播组的设备将被分配同一个**组播组 IP 地址(一群共同需求主机的相同标识)**。 #### (2)组播地址范围 * 组播地址范围为 224.0.0.0~239.255.255.255(D 类地址),一个 D 类地址表示一个组播组。 只能用作分组的目的地址。源地址总是为单播地址。 #### (3)IP 组播数据报特点 * 1.组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于 UDP。 * 2.对组播数据报不产生 ICMP 差错报文。 * 3.并非所有 D 类地址都可以作为组播地址。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%286.2.1_1%29.png) IP 组播可以分为两个部分,一部分是**因特网范围内组播**,一部分是**局域网内部硬件组播**。 现在大部分主机都是通过连接局域网然后再连接因特网,所以最后通过因特网范围内组播之后还是要进入到局域网内的硬件组播。 ### 2、硬件组播与组播 MAC 地址 #### (1)硬件组播 硬件组播说的其实就是在局域网范围内,对于一个组播数据报,应该怎么发给这些主机或者说给哪些主机。 #### (2)组播 MAC 地址如何得到? 比如现在发来一个单播数据报,进入局域网后应该交给哪个主机?要看主机的 MAC 地址。 同单播地址一样,组播 IP 地址也需要**相应的组播 MAC 地址**在本地网络中实际传送帧。 组播 MAC 地址(48 位=6B)以十六进制值 **01-00-5E(固定)打头**,余下的 6 个十六进制位是根据 **IP 组播组地址(D 类 IP 地址)**的**最后 23 位**转换得到的。 TCP/IP 协议使用的以太网多播 MAC 地址的范围是:从 **01-00-5E-00-00-00** 到 **01-00-5E-7F-FF-FF** #### (3)不同 IP 地址可能映射成同一 MAC 地址 可以发现,IP 地址不能使用的 5 位可以构成 2^5^=32 个 IP 地址。如果这 32 个主机后面 23 位一样,那么这 32 个 IP 地址映射到多播 MAC 地址上就是一样的。也就是说,会导致 32 个不同的 IP 地址映射成了同一个 MAC 地址。如何解决?——进行过滤 #### (4)过滤 收到多播数据报的主机,还要**在 IP 层利用软件进行过滤**,把不是本主机要接收的数据报丢弃。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%286.2.2.4_1%29.png) ## (三)IGMP 协议与组播路由选择协议 ### 1、IGMP 协议(网络层)和组播路由选择协议概述 这两个协议其实就是在因特网范围内组播组要使用到的一些协议。 #### (1)IGMP 协议 * 在**一个路由器内部**所使用的协议。 * **为什么使用 IGMP 协议:**对于一个连在局域网上的组播路由器,查询它所连的局域网上是不是还有主机参加或退出了某个组播组。也就是一个组播路由器通过使用 IGMP 协议就可以知道它所连的局域网中,是不是还有可以接收组播数据报的主机。 #### (2)组播路由选择协议 * 一看到路由选择,就知道是一个在**多个路由器之间**进行路径选择的问题。 * **为什么使用组播路由选择协议:**如果只有 IGMP 协议,无法完成组播的任务。因为连接在局域网上的组播路由器还必须要和因特网上的其他路由器进行信息交换,才能够把组播数据报用一个最小的代价(最优路径)来传送给组播组中的全部成员。这时就需要使用**组播路由选择协议**。 ### 2、网际组管理协议 IGMP > Internet group management protocol:网际组管理协议 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%286.3.2_1%29.png) #### (1)IGMP 协议作用 IGMP 协议让路由器知道**本局域网**上是否有主机(的进程)参加或退出了某个组播组。 > 上图,有四个标明了 IP 地址的主机加入了组播组,组播 IP 地址是 226.15.37.123。每个路由器通过使用 IGMP 协议可以判断如果如果接收到一个组播组,要不要给我局域网中的主机。 ICMP 和 IGMP 都使用 IP 数据报传递报文。 #### (2)IGMP 工作的两个阶段 ROUND 1: * **主机向组播组地址发送 IGMP 报文表示要加入:**某主机要加入组播组时,该主机向组播组的组播地址发送一个 IGMP 报文,声明自己要成为该组的成员。 * **加入后,也要告诉其他在组播组中的路由器呀:本地组播路由器**收到 IGMP 报文后,要利用**组播路由选择协议把这**组成员关系发给因特网上的其他组播路由器。 ROUND 2: * **定期探询,各主机是否还是组播组成员:**本地组播路由器周期性探询(发送 IGMP 询问报文)本地局域网上的主机,以便知道这些主机是否还是组播组的成员。既然是询问,结果就有两种! * **探询结果 1——有主机响应:**只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的。 * **探询结果 2——无响应,则不再发送该成员关系:**如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。(有一个细节:组播组中有一台主机响应,该主机相当于代表一样告诉组播路由器我们还有一个组播组在这,那么该组播组内其他主机就不需要响应了) 成员关系:组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员。 但是并不知道这一组成员有多少个,可以通过组播路由选择协议知道。 **成员关系:**组播路由器知道的成员关系只是所连接的**局域网**中**有无组播组的成员**。 但是并不知道这一组成员有多少个,可以通过组播路由选择协议知道。 ### 3、组播路由选择协议 一个组播组中的成员是动态变化的,比如突然加入或者突然离开。就像看电视一样,换台。组播路由选择协议目的是找出以源主机为根节点的组播转发树。 **组播转发树**:组播路由协议目的是找出以源主机为根节点的**组播转发树**。 * 构造树可以避免在路由器之间兜圈子。 * 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%286.3.3_1%29.png) **组播路由选择协议常使用的三种算法:** * 基于链路状态的路由选择 * 基于距离-向量的路由选择 * 协议无关的组播(稀疏/密集) :可以建立在任何协议之上的 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 七、移动 IP ## (一)移动 IP 相关术语 1、**即使物理位置发生变化,但是网络 IP 地址仍然不变**:移动 IP 技术是移动结点(计算机/服务器等)以固定的网络 IP 地址,实现跨越不同网段的漫游功能,并保证了基于网络 IP 的网络权限在漫游过程中不发生任何改变。 2、**移动结点**:具有永久 IP 地址的移动设备。 3、**归属代理(本地代理)**:一个移动结点拥有的旧“居所”称为**归属网络**,在归属网络中代表移动节点执行移动管理功能的**实体**叫做归属代理。 4、**外部代理(外地代理)**:在外部网络中帮助移动节点完成移动管理功能的**实体**称为外部代理。 5、**永久地址(归属地址 / 主地址)**:移动站点在归属网络中的**原始地址**。 6、**转交地址(辅地址)**:移动站点在外部网络使用的**临时地址**。 ## (二)移动 IP 通信过程 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%287.2_1%29.png) * 本地代理可以是路由器也可以是主机 * 主机 A 移动到了一个新网络,叫做外部网络/被访网络。 **A 与 B 通信过程:** 1、A 刚进入外部网络: * 1.在外部代理登记获得一个转交地址(A 的临时地址,该地址的网络号与外部网络一样),离开时注销。 * 2.外地代理向本地代理登记转交地址。(此时,本地代理收到要发送给 A 的数据报,就往转发地址转发) 2、B 给 A 发送数据报: * 1.本地代理截获数据报。 * 2.本地代理再封装数据报,新的数据报**目的地址是转交地址**,发给外部代理(隧道)。 * 3.外部代理拆封数据报并发给 A。(外部代理路由器如何把数据报发给 A:在一个局域网内进行通信,用的都是 MAC 地址,当 A 首次与外部代理通信时,外部代理就会记录下 A 的 MAC 地址) 3、A 给 B 发送数据报: * A 用自己的主地址作为数据报源地址,用 B 的 IP 地址作为数据报的目的地址。 4、A 再移动到下一个网络: * 1.在新外部代理登记注册一个转交地址。 * 2.新外部代理给本地代理发送新的转交地址(覆盖旧的)。 * 3.通信 5、A 回到了归属网络: * 1.A 向本地代理注销转交地址。 * 2.按原始方式通信。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 八、网络层设备 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。 ## (一)路由器组成与功能 ### 1、路由器组成 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%288.1.1_1%29.png) **路由选择处理机**:根据所选定的**路由选择协议**构造出**路由表**,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。 **交换结构**:根据转发表(路由表得来)对分组进行转发。 **转发 VS 路由选择**:转发在**路由器内部**,把一个分组从一个输入端口转发到一个输出端口;路由选择在**路由之间**选一个合适的路径,把数据从源主机发送到目的主机。 **分组分为路由交换信息的分组和数据分组**:不是所有分组都从一个输入端口转发到一个输出端口,若收到 RIP/OSPF 分组(路由器之间交换信息的分组)等, 则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出。 ### 2、输入输出端口对线路上收到的分组的处理 #### (1)输入端口对线路上收到的分组的处理过程: ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%288.2.1_1%29.png) * **在交换结构中进行分组处理:**若收到 RIP/OSPF 分组(路由器之间交换信息的分组)等, 则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出。 * **为什么分组要排队:**查表和转发时会产生时延,可以看出输入端口中的**查找和转发功能**在路由器的交换功能中是最重要的。 #### (2)输出端口的处理过程 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%288.2.2_1%29.png) * 缓存区域就是队列,如果交换结构转发到输出端口的速度超出链路发送的速度,可以在缓存区域排队。 * 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。 * **路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。** ### 3、三层设备的区别 * **路由器:**可以互联两个不同网络层协议的网段。 * **网桥:**可以互联两个物理层和链路层不同的网段。 * **集线器:**傻瓜设备,不能互联两个物理层不同的网段。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%288.2.3_1%29.png) ## (二)路由表与路由转发 **路由表(下一跳走哪):路由表**根据**路由选择算法**得出的,主要用途是路由选择,总用软件来实现。 ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/%E6%8A%80%E6%9C%AF%E5%9F%9F/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/Unit4/CNET.Unit3.%288.2_1%29.png) **默认路由:**只要发送的分组在路由表中找不到对应的下一跳 IP 地址,就应该发给默认路由。 **转发表:转发表**由**路由表**得来,可以用软件实现,也可以用特殊的硬件来实现。转发表必须包含完成转发功能所必需的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些 MAC 地址信息的映射。 ## (三)路由器安全(根据题目补充内容,信息安全) **安全管理措施:**为了保证路由器最基本的安全,需要在路由器上采取**设置访问控制列表**和**升级 IOS 进行安全补漏**的安全管理措施。(路由器安全是针对黑客入侵的逻辑安全) * IOS:互联网操作系统 IOS(Internetwork Operating System) ![](https://picture-host-1304031833.cos.ap-beijing.myqcloud.com/SiYuan/SplitLine/SplitLine-01.gif) # 参考资料 > **版权声明**:个人学习记录,本博客所有文章均采用 CC-BY-NC-SA 许可协议。转载请注明出处!若有侵权,请留言联系! > > * 2022 天勤计算机考研高分笔记-计算机网络 > * 2022 王道计算机考研复习指导-计算机网络 如果您觉得文章对您有帮助,请点击文章正下方的小**红心**一下。您的鼓励是博主的最大动力! 2 最后一次更新于2022-10-23 计算机网络
0 条评论