【计算机网络】网络层 :总结 ( 功能 | 数据交换 | IP 数据报 | IPv4 地址 | IPv6 地址 | 路由选择协议 | 路由算法 )★★★

tech2022-09-20  103

文章目录

一、网络层功能二、数据交换方式 ★三、IP 数据报 ★四、 IPv4 地址 ★★1 . IP 地址 发展 :2 . 分类 IP 地址3 . NAT 转换4 . 子网划分5 . 子网掩码6 . 子网掩码 计算示例7 . CIDR 无分类编址 五、重要协议 ( ARP | DHCP | ICMP | IGMP ) ★1 . ARP 协议2 . DHCP 协议3 . ICMP 协议4 . IGMP 协议 六、IPv6 协议七、路由选择协议 ★RIP 协议RIP 协议 信息交换OSPF 协议OSPF 协议 信息交换 八、路由算法 ★距离向量算法距离向量算法示例 1距离向量算法示例 2链路状态路由算法

一、网络层功能


网络层功能 :

① 路由与转发 : 路由选择 与 分组转发 ; 根据路由选择算法 , 选择最佳路径 , 将分组转发出去 ;

② 异构网络互连 : 实现 WIFI 网络 , 4G/5G 基站网络 , 光纤宽带网络 , 双绞线局域网 等 网络互相通信 ;

③ 拥塞控制 : 所有节点 都 来不及接受分组 , 丢弃大量分组 , 此时网络处于拥塞状态 , 此时要采用一定措施缓解该拥塞状态 ; 流量控制 是 接收方 接受能力不足 , 让发送方慢点发 ; 拥塞控制 是全局性概念 ;

开环控制 : 静态 ; 网络传输之前 , 将所有可能产生拥塞的情况都进行控制 ;

闭环控制 : 动态 ; 网络运行过程中 , 根据发生的各种问题 , 动态处理 ;

参考博客 : 【计算机网络】网络层 : 网络层简介 ( 功能 | 拥塞控制 )

二、数据交换方式 ★


1 . 数据交换方式 :

① 电路交换

② 报文交换

③ 分组交换

数据报方式 : 为 网络层 提供 无连接服务 ;虚电路方式 : 为 网络层 提供 连接服务 ;

2 . 电路交换、报文交换、分组交换 对比 :

① 存储转发 : 报文交换 和 分组交换 , 采用 存储转发 ;

② 电路交换使用场景 : 传输数据量巨大 , 传送时间远大于呼叫时间 , 此时使用电路交换 , 电路交换的传输时延最小 ;

③ 信道利用率 : 报文交换 和 分组交换 的信道利用率 高于 电路交换 ;

④ 时延 : 分组交换 > 报文交换 ;

3 . 分组交换、报文交换 计算示例 :

存储转发 , 是将整个报文 / 分组 存储完毕后 , 才能转发 , 数据分组越小 , 速率越快 ;

链路速率 : 所有的链路传输速率是 1000 1000 1000 比特 / 秒 ; 源主机 -> 交换设备 , 交换设备 -> 交换设备 , 交换设备 -> 目的主机 , 每个链路的速率都是 1000 比特 / 秒 ;

报文交换 : 报文长度 10000 10000 10000 比特 ;

分组交换 : 每个分组 10 10 10 比特 ;

忽略条件 : 忽略 其它 传播延迟 , 头部开销等问题 ;

求 从开始发送开始 , 到所有数据传播完毕截止 , 计算传播总时间 ;

报文交换 :

链路 1 1 1 : 从源主机 发送到 链路上 需要 : 10000 1000 = 10 \cfrac{10000}{1000} = 10 100010000=10 秒 ; 需要将整个报文完整的传输到 交换设备 1 1 1 上 , 花费 10 10 10 秒 , 才能开始转发 ;链路 2 2 2 : 从 交换设备 1 1 1 发送到 交换设备 2 2 2 需要 : 10000 1000 = 10 \cfrac{10000}{1000} = 10 100010000=10 秒 ; 需要将整个报文完整的传输到 交换设备 2 2 2 上 , 花费 10 10 10 秒 , 才能开始转发 ;链路 3 3 3 : 从交换设备 2 2 2 发送到 目的主机 需要 : 10000 1000 = 10 \cfrac{10000}{1000} = 10 100010000=10 秒 ; 需要将整个报文完整的传输到 交换设备 3 3 3 上 , 花费 10 10 10 秒 , 才能开始转发 ;总共花费了 30 秒时间 ;

分组交换 :

每个分组 大小 10 10 10 比特 , 一个分组发送时延 : 10 1000 = 0.01 \cfrac{10}{1000} = 0.01 100010=0.01 秒 ;这里只考虑最后一个分组 , 从源主机发送出来 , 到达目的主机的时延 , 即 从 第一个分组开始发送计时, 到最后一个分组传输完毕就是所有分组传输结束 ;第一个分组开始发送 到 最后一个分组开始发送 的时间 : 10000 1000 = 10 \cfrac{10000}{1000} = 10 100010000=10 秒 ;最后一个分组 从 交换设备 1 1 1 到 交换设备 2 2 2 用了 0.01 0.01 0.01 秒 ;最后一个分组 从 交换设备 2 2 2 到 目的主机 用了 0.01 0.01 0.01 秒 ;分组交换使用的总时间是 10.02 10.02 10.02 秒 ;

参考博客 :

【计算机网络】网络层 : 数据交换方式 ( 电路交换 | 报文交换 | 分组交换 )★【计算机网络】网络层 : 分组交换方式 ( 数据报方式 | 虚电路方式 )

三、IP 数据报 ★


1 . IP 数据报 首部格式 :

版本 : 4 4 4 比特 , [ 0 , 3 ] [ 0 , 3 ] [0,3] 位 , IPv4 / IPv6 , 目前使用的是 IPv4 版本 ;

首部长度 : 4 4 4 比特 , [ 4 , 7 ] [ 4 , 7 ] [4,7] 位 , 单位是 4 4 4 字节 , 最小值是 5 5 5 , 那么最小的首都大小是 5 × 4 = 20 5 \times 4 = 20 5×4=20 字节 ;

区分服务 : 8 8 8 比特 . [ 8 , 15 ] [ 8 , 15 ] [8,15] 位 , 期望获取的服务类型 , 一般情况下不使用 ;

总长度 : 16 16 16 比特 , [ 16 , 31 ] [ 16, 31 ] [16,31] 位 , 首部长度 + 数据部分 的总长度 ; 单位是 1 1 1 字节 ; 长度最大值是 2 1 6 − 1 = 65535 2^16 - 1 = 65535 2161=65535 字节 ;

生存时间 : 8 8 8 比特 , [ 32 , 39 ] [32 , 39] [32,39] 位 , IP 分组保质期 , 每经过一个路由器 , 生存时间 − 1 -1 1 , 如果生存时间变为 0 0 0 , 直接丢弃 ; 防止 无法交付的数据包 , 无限制的再网络上传输 ;

协议字段 : 8 8 8 比特 , [ 40 , 47 ] [40 , 47] [40,47] 位 , 数据部分使用的协议 ; 下面是协议名称 与 字段值的对应关系 ;

ICMP : 1IGMP : 2TCP : 6EGP : 8IGP : 9UDP : 17IPv6 : 41ESP : 50OSPF : 89

首部检验和 : 检验首部的字段 ;

源地址 / 目的地址 : 长度都是 32 位 , IPv4 的地址长度是 32 位 ;

可选字段 : 范围是可变的 , 取值范围 0 0 0 40 40 40 字节之间 , 用于排错 , 测量 , 安全措施等 ;

填充字段 : 都是 0 0 0 , 用于将首部补全成 4 4 4 字节的整数倍位数 ;

2 . IP 数据报 分片 : 要根据 首部的 标识 , 标志 , 片偏移 进行相应处理 :

标识 : 同一个 IP 数据报 的分片 , 使用相同的标识 ; IP 数据报大小超过 MTU 时 , 将数据报分片 , 分片完成的 IP 数据报分片 , 其标识都是相同的 ;

标志 : 由 3 3 3 位组成 , [ 48 , 50 ] [ 48 , 50 ] [48,50] , 只有 2 2 2 位有意义 ;

最高位 : 是保留位 , 没有意义 ;中间位 : DF 位 , Don’t Fragment ; DF = 1 时 , 禁止分片 ; DF = 0 时 , 允许分片 ;最低位 : MF 位 , More Fragment ; MF = 1 时 , 后面还有分片 ; MF = 0 时 , 本分片就是该分组的最后一个分片 , 后面没有分片 ;只有 DF = 0 时 , MF 才有意义 ;

片偏移 : 较长的分组的分片 , 中间的某个分片 , 在原来的 IP 分组中的相对位置 ; 单位是 8 8 8 字节 ; 也就是说除了最后一个分片 , 每个分片的长度是 8 8 8 字节的整数倍 ;

3 . 分片机制 示例 :

IP 数据报 : 首部 20 20 20 字节 , 数据部分 3800 3800 3800 字节 ;

将其进行分片处理 : 每个分片不超过 1420 1420 1420 字节 ;

标识 : 666 666 666 ;

标志 : DF = 0 , 表示允许分片 ; MF = 0 , 表示后续没有分片 ;

片偏移量 : 0 0 0

分片后的结果是 : 分成 三片 ;

第一片 :

分片数据 : 首部 1 1 1 ( 20 20 20 字节 ) + 1400 1400 1400 字节数据部分 ;标识 : 666 666 666 , 同一个分组的分片 , 标识相同 ;标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;片偏移量 : 片偏移量 是 0 , 单位是 8 8 8 字节 , 本片偏移量相当于 0 0 0 字节 ;

第二片 :

分片数据 : 首部 2 2 2 ( 20 20 20 字节 ) + 1400 1400 1400 字节数据部分 ;标识 : 666 666 666 , 同一个分组的分片 , 标识相同 ;标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;片偏移量 : 片偏移量 是 175 , 单位是 8 8 8 字节 , 本片偏移量相当于 1400 1400 1400 字节 ;

第三片 :

分片数据 : 首部 3 3 3 ( 20 20 20 字节 ) + 1000 1000 1000 字节数据部分 ;标识 : 666 666 666 , 同一个分组的分片 , 标识相同 ;标志 : DF = 0 , 允许分片 ; MF = 0 , 后续没有分片 ;片偏移量 : 片偏移量 是 350 , 单位是 8 8 8 字节 , 本片偏移量相当于 2800 2800 2800 字节 ;

片偏移量是从数据部分开始计数 , 数据部分的开始位置是 0 0 0 字节 , 其单位是 8 8 8 字节 , 片偏移量 1 1 1 代表 8 8 8 字节 ;

4 . IP 数据报首部中的相关数据长度单位 : 速记 : 一种 ( 总长度 ) 八片 ( 片偏移 ) 的 首 ( 首部长度 ) 饰 ( 四 )

总长度单位 : 1 1 1 字节 ;片偏移单位 : 8 8 8 字节 ;首部长度单位 : 4 4 4 字节 ;

参考博客 :

【计算机网络】网络层 : IP 数据报格式 ( IP 数据报首部格式 )【计算机网络】网络层 : IP 数据报分片 ( 数据分片机制 | 分片示例 | 三种数据长度单位 )

四、 IPv4 地址 ★★


1 . IP 地址 发展 :

第一阶段 : 分类的 IP 地址

第二阶段 : 子网的划分

第三阶段 : 构成超网 , 无分类编址方法

2 . 分类 IP 地址

IP 地址 : 由 4 4 4 字节构成 , 表示路由器主机的接口 ;

IP 地址组成 : 网络号 + 主机号 ;

IP 地址分类 :

A A A 类 : 网络号占 1 1 1 字节 , 第一位是 0 0 0 ;

B B B 类 : 网络号占 2 2 2 字节 , 前两位是 10 10 10 ;

C C C 类 : 网络号占 3 3 3 字节 , 前三位是 110 110 110 ;

D D D 类 : 网络号占 4 4 4 字节 , 前四位是 1110 1110 1110 , 该类地址是多播地址 ;

E E E 类 : 前四位是 1111 1111 1111 , 暂时没有启用 , 保留 ;

A A A 类网络 IP 地址 :

① 最大可用的网络数 : 2 7 − 2 2^7 - 2 272 , 网络号 1 1 1 字节 , 第一位必须是 0 0 0 , 可以设置 7 7 7 位 ; 网络号全 0 0 0 , 即 0.0.0.0 0.0.0.0 0.0.0.0 指的是本网络 ; 网络号 127 127 127 是环回地址 , 也是不能使用的 ; 因此减去 2 2 2 个不能使用的网络号 ;

② 网络号取值 : 1 1 1 ~ 126 126 126 ;

③ 最大主机数 : 2 24 − 2 2^{24} - 2 2242 , 主机号 3 3 3 字节 , 有 24 24 24 位 ; 主机号全 0 0 0 表示的是本网络号 , 不能支配给主机 ; 主机号全 1 1 1 表示广播地址 , 不能分配给指定主机 ; 因此减去 2 2 2 个不能使用的主机号 ;

B B B 类网络 IP 地址 :

① 最大可用的网络数 : 2 14 − 1 2^{14} - 1 2141 , 网络号 2 2 2 字节 , 前两位必须是 10 10 10 , 可以设置 16 − 2 = 14 16-2=14 162=14 位 ; 网络号全 0 0 0 , 即 128.0 128.0 128.0 指的是本网络 ; 因此减去 1 1 1 个不能使用的网络号 ;

② 网络号取值 : 128.1 128.1 128.1 ~ 191.255 191.255 191.255 ;

③ 最大主机数 : 2 16 − 2 2^{16} - 2 2162 , 主机号 2 2 2 字节 , 有 16 16 16 位 ; 主机号全 0 0 0 表示的是本网络号 , 不能支配给主机 ; 主机号全 1 1 1 表示广播地址 , 不能分配给指定主机 ; 因此减去 2 2 2 个不能使用的主机号 ;

C C C 类网络 IP 地址 :

① 最大可用的网络数 : 2 21 − 1 2^{21} - 1 2211 , 网络号 3 3 3 字节 , 前两位必须是 110 110 110 , 可以设置 24 − 3 = 21 24-3=21 243=21 位 ; 网络号全 0 0 0 , 即 192.0.0 192.0.0 192.0.0 指的是本网络 ; 因此减去 1 1 1 个不能使用的网络号 ;

② 网络号取值 : 192.0.1 192.0.1 192.0.1 ~ 223.255.255 223.255.255 223.255.255 ;

③ 最大主机数 : 2 8 − 2 2^{8} - 2 282 , 主机号 1 1 1 字节 , 有 8 8 8 位 ; 主机号全 0 0 0 表示的是本网络号 , 不能支配给主机 ; 主机号全 1 1 1 表示广播地址 , 不能分配给指定主机 ; 因此减去 2 2 2 个不能使用的主机号 ;

参考博客 : 【计算机网络】网络层 : IPv4 地址 ( IP 地址分类 | 特殊 IP 地址 | 私有 IP 地址 | A 类、B 类、C 类 IP 地址网络号主机号数量 )★

3 . NAT 转换

私有 IP 地址 : 只适用于在内部网络中使用 , 在互联网上使用私有 IP 地址 , 路由器并不识别这些 IP 地址 ;

A A A 类 私有 IP 地址 : 10.0.0.0 10.0.0.0 10.0.0.0 ~ 10.255.255.255.255 10.255.255.255.255 10.255.255.255.255 , 1 1 1 个网段 , 即可分配 1 1 1 个网络号 ; B B B 类 私有 IP 地址 : 172.16.0.0 172.16.0.0 172.16.0.0 ~ 172.31.255.255 172.31.255.255 172.31.255.255 , 16 16 16 个网段 , 即可分配 16 16 16 个网络号 ; C C C 类 私有 IP 地址 : 192.168.0.0 192.168.0.0 192.168.0.0 ~ 192.168.255.255 192.168.255.255 192.168.255.255 , 256 256 256 个网段 , 即可分配 256 256 256 个网络号 ;

路由器 不转发 私有 IP 地址 的 目的地址 ;

NAT 转换表 : 每个 LAN 局域网 IP 地址 : 端口号 , 与 WAN 广域网 IP 地址 : 端口号 的对应关系 ;

NAT 转换表 对应示例 :

WAN 广域网地址 172.38.1.5 : 44444 172.38.1.5:44444 172.38.1.5:44444 , 对应 LAN 局域网地址 192.168.0.3 : 22222 192.168.0.3:22222 192.168.0.3:22222 ;WAN 广域网地址 172.38.1.5 : 44445 172.38.1.5:44445 172.38.1.5:44445 , 对应 LAN 局域网地址 192.168.0.2 : 11111 192.168.0.2:11111 192.168.0.2:11111 ;

参考博客 : 【计算机网络】网络层 : NAT 网络地址转换 ( 私有 IP 地址不被路由器转发 | NAT 转换表 )

4 . 子网划分

子网划分 :

① 二级 IP 地址 : 网络号 + 主机号 ;

② 三级 IP 地址 : 子网划分中 , 在主机号中 , 拿出一部分地址 , 作为子网号 , 那么子网划分 IP 地址组成是 : 网络号 + 子网号 + 主机号 ; 其中 子网号 + 主机号 , 相当于 二级 IP 地址中的主机号 ;

三级 IP 地址 :

① 子网划分对外透明 : 划分子网后, 对外仍然表现为一个网络 , 外部是不知道内部子网划分的详细信息的 ;

② 主机号位数 : 主机号 至少要留下 两位 , 因为如果留下 一位 , 只能取值 0 0 0 1 1 1 , 这两位都是不可使用的 , 一个代表网络, 一个代表广播地址 ;

③ 子网号 : 是否能够设置成全 0 0 0 , 或者 全 1 1 1 , 看前提情况 ;

④ 主机号 : 不能设置成 全 0 0 0 , 全 1 1 1 ;

5 . 子网掩码

两级 IP 地址 : 网络号 + 主机号 ; 如 : 145.13.3.10 145.13.3.10 145.13.3.10 ; 其中 145.13 145.13 145.13 是网络号 , 3.10 3.10 3.10 是主机号 ;

子网掩码 : 网络号对应位数全部设置成 1 1 1 , 主机号对应的位数 , 全部设置成 0 0 0 ; 上述 两级 IP 地址对应的子网掩码是 11111111 11111111 00000000 00000000 11111111 \quad 11111111 \quad 00000000 \quad 00000000 11111111111111110000000000000000 , 写成点分十进制就是 255.255.0.0 255.255.0.0 255.255.0.0 ;

三级 IP 地址 : 网络号 + 子网号 + 主机号 ; 如 145.13.3.10 145.13.3.10 145.13.3.10 ; 其中 145.13 145.13 145.13 是网络号 , 3 3 3 是子网号 , 10 10 10 是主机号 ;

子网掩码 : 网络号 和 子网号 对应位数全部设置成 1 1 1 , 主机号对应的位数 , 全部设置成 0 0 0 ; 上述 两级 IP 地址对应的子网掩码是 11111111 11111111 11111111 00000000 11111111 \quad 11111111 \quad 11111111 \quad 00000000 11111111111111111111111100000000 , 写成点分十进制就是 255.255.255.0 255.255.255.0 255.255.255.0 ;

参考博客 : 【计算机网络】网络层 : 子网划分 ( 三级 IP 地址 | 子网划分 | 子网掩码 | 子网掩码计算示例 | 子网的分组转发 )

6 . 子网掩码 计算示例

1 . 示例 1

IP 地址 141.14.72.24 141.14.72.24 141.14.72.24 , 子网掩码是 255.255.192.0 255.255.192.0 255.255.192.0 , 求对应的网络地址 ?

① 子网掩码 前两位 是 255 255 255 , 141.14 141.14 141.14 255.255 255.255 255.255 与运算结果是 141.14 141.14 141.14 ;

② 子网掩码最后一位是 0 0 0 , 因此 24 24 24 0 0 0 相与后 , 结果是 0 0 0 ;

③ 只需要计算第三位 72 72 72 192 192 192 相与的结果 :

( 0100 1000 ) & ( 1100 0000 ) = 0100 0000 (0100 \quad 1000 ) \quad \& \quad (1100 \quad 0000) = 0100 \quad 0000 (01001000)&(11000000)=01000000

转为十进制后为 64 64 64 ;

网络地址为 : 141.14.64.0 141.14.64.0 141.14.64.0 ;

2 . 示例 2

IP 地址 141.14.72.24 141.14.72.24 141.14.72.24 , 子网掩码是 255.255.224.0 255.255.224.0 255.255.224.0 , 求对应的网络地址 ?

① 子网掩码 前两位 是 255 255 255 , 141.14 141.14 141.14 255.255 255.255 255.255 与运算结果是 141.14 141.14 141.14 ;

② 子网掩码最后一位是 0 0 0 , 因此 24 24 24 0 0 0 相与后 , 结果是 0 0 0 ;

③ 只需要计算第三位 72 72 72 224 224 224 相与的结果 :

( 0100 1000 ) & ( 1110 0000 ) = 0100 0000 (0100 \quad 1000 ) \quad \& \quad (1110 \quad 0000) = 0100 \quad 0000 (01001000)&(11100000)=01000000

转为十进制后为 64 64 64 ;

网络地址为 : 141.14.64.0 141.14.64.0 141.14.64.0 ;

255.255.224.0 255.255.224.0 255.255.224.0 子网掩码 与 255.255.192.0 255.255.192.0 255.255.192.0 子网掩码对比 :

255.255.192.0 255.255.192.0 255.255.192.0 子网掩码中 , 192 192 192 对应的二进制数为 1100 0000 1100 \quad 0000 11000000 , 其中有 6 6 6 位是主机号 , 加上剩余的最后 1 1 1 字节 , 主机号共有 14 14 14 位 ; 255.255.224.0 255.255.224.0 255.255.224.0 子网掩码中 , 224 224 224 对应的二进制数为 1110 0000 1110 \quad 0000 11100000 , 其中有 5 5 5 位是主机号 , 加上剩余的最后 1 1 1 字节 , 主机号共有 13 13 13 位 ;

3 . 示例 3

主机 IP 地址是 180.80.77.55 180.80.77.55 180.80.77.55 , 其子网掩码是 255.255.252.0 255.255.252.0 255.255.252.0 , 写出该主机所在的子网的广播地址 ;

广播地址 , 网络号正常 , 主机号都是 1 1 1 ;

先求出其网络号 , 然后设置全 1 1 1 的主机号 ;

主机地址 180.80.77.55 180.80.77.55 180.80.77.55 与 子网掩码 255.255.252.0 255.255.252.0 255.255.252.0 进行与运算 , 就可以得到其子网号 ;

77 & 252 = 0100   1101 & 1111   1100 = 0100   1100 77 \& 252 = 0100 \ 1101 \& 1111 \ 1100 =0100 \ 1100 77&252=0100 1101&1111 1100=0100 1100

0100   1100 0100 \ 1100 0100 1100 转为十进制是 76 76 76 ;

网络号是 : 180.80.76.0 180.80.76.0 180.80.76.0

广播地址 : 将主机号都设置为 1 1 1 , 即可得到 广播地址是 : 180.80.79.255 180.80.79.255 180.80.79.255

参考博客 : 【计算机网络】网络层 : 子网划分 ( 三级 IP 地址 | 子网划分 | 子网掩码 | 子网掩码计算示例 | 子网的分组转发 )

7 . CIDR 无分类编址

1 . CIDR 发展

无分类编址 CIDR 发展 : “无分类编址” 又称为 “无分类域间路由选择” ;

① 分类 IP 地址 : 原来的 分类 IP 地址 , A 类 , B 类 , C 类 , IP 地址组成 : 网络号 + 主机号 ;

② 子网划分 IP 地址 : 在 分类 IP 地址基础上 , 划分子网 , IP 地址组成 : 网络号 + 子网号 + 主机号 ;

③ 无分类编址法 : 由 网络前缀 + 主机号 组成 ;

2 . CIDR 地址记法

无分类域间路由选择 CIDR 记法 : IP 地址后面加上 “/” , 表示网络前缀的长度 ;

如 : 128.14.35.7 / 20 128.14.35.7/20 128.14.35.7/20 , 表示该 IP 地址 , 20 20 20 位 是网络前缀 ;

CIDR 地址块 : CIDR 将 网络前缀 相同的 , 连续的 , IP 地址 , 组成一个 “CIDR 地址块” ;

CIDR 地址块相关计算 : 上述示例中 , 128.14.35.7 / 20 128.14.35.7/20 128.14.35.7/20 地址 , 是某个 CIDR 地址块中的地址 , 根据该地址可以得到该 CIDR 地址块 , 以及计算出该地址块的 最大地址 和 最小地址 ;

① 先将 128.14.35.7 / 20 128.14.35.7/20 128.14.35.7/20 地址转为 二进制 形式 ;

10000000 00001110 00100011 00000111 10000000 \quad 00001110 \quad 00100011 \quad 00000111 10000000000011100010001100000111

20 20 20 位是 网络前缀 , 为 :

10000000 00001110 0010 10000000 \quad 00001110 \quad 0010 10000000000011100010

② 地址块地址 : 二进制形式如下 :

10000000 00001110 0010 10000000 \quad 00001110 \quad 0010 10000000000011100010 0000 00000000 0000 \quad 00000000 000000000000

转为十进制为 :

128.14.32.0 / 20 128.14.32.0/20 128.14.32.0/20

③ 最小地址 : 最小地址就是 主机号 全 0 0 0 ; 也就是地址块地址 ;

10000000 00001110 0010 10000000 \quad 00001110 \quad 0010 10000000000011100010 0000 00000000 0000 \quad 00000000 000000000000

④ 最大地址 : 最大地址就是 主机号 全 1 1 1 ;

10000000 00001110 0010 10000000 \quad 00001110 \quad 0010 10000000000011100010 1111 11111111 1111 \quad 11111111 111111111111

⑤ 子网掩码 : 又称为 “地址掩码” , 网络前缀对应的前 20 20 20 位 为 1 1 1 , 主机号对应的位数为 0 0 0 ;

11111111 11111111 1111 11111111 \quad 11111111 \quad 1111 11111111111111111111 0000 00000000 0000 \quad 00000000 000000000000

转为十进制为 : 255.255.240.0 255.255.240.0 255.255.240.0

3 . 构成超网 : 将 多个 CIDR 编址的 子网 聚合成一个较大的子网 , 又称为 “路由聚合” ;

方法 : 缩短网络前缀 ;

构成超网示例 :

子网块 1 1 1 : 206.1.0.0 / 17 206.1.0.0/17 206.1.0.0/17 ;子网块 2 2 2 : 206.1.128.0 / 17 206.1.128.0/17 206.1.128.0/17 ;

上述网络前缀都是 17 17 17 位 , 将网络前缀缩短 1 1 1 位 , 即可构成一个新的超网 , 网络前缀为 16 16 16 位 ;

新的超网为 : 206.1.0.0 / 16 206.1.0.0/16 206.1.0.0/16

4 . 最长前缀匹配 : 使用 CIDR 编址时 , 路由查找时 , 将可能得到的几个匹配结果 , 选择 符合 网络前缀 的 , 具有最长网络前缀 的路由 ;

原理 : 因为 前缀越长 , 主机号选择性就越小 , 越容易找到对应的主机 ;

计算示例 :

路由表如下 :

目的网络 1 1 1 : 132.0.0.0 / 8 132.0.0.0/8 132.0.0.0/8 , 下一跳路由 R 1 R1 R1 ;目的网络 2 2 2 : 132.0.0.0 / 11 132.0.0.0/11 132.0.0.0/11 , 下一跳路由 R 2 R2 R2 ;目的网络 3 3 3 : 132.19.232.0 / 22 132.19.232.0/22 132.19.232.0/22 , 下一跳路由 R 3 R3 R3 ;目的网络 4 4 4 : 0.0.0.0 / 0 0.0.0.0/0 0.0.0.0/0 , 下一跳路由 R 4 R4 R4 ;

分析 :

其中 目的网络 4 4 4默认路由 , 如果上述 3 3 3 个都不符合 , 就选择默认路由 ;

目的网络 1 1 1网络前缀 符合要求 , 网络前缀长度为 8 8 8 , 该路由选择 比 默认路由 要好 ;

目的网络 2 2 2网络前缀 符合要求 , 网络前缀长度为 11 11 11 , 该路由选择 比 目标网络 2 2 2 要好 ;

目的网络 3 3 3 的网络前缀是 132.19.236.0 132.19.236.0 132.19.236.0 , 该网络前缀不符合要求 , 必须不能选择 ;

因此这里选择 目的网络 3 3 3 , 作为 下一跳路由 ;

5 . 计算示例

某网络 IP 地址为 192.168.5.0 / 24 192.168.5.0/24 192.168.5.0/24 , 采用 定长子网划分 , 子网掩码为 255.255.255.248 255.255.255.248 255.255.255.248 , 求网络中的最大子网个数 , 每个子网的最大可分配地址个数 ?

网络地址是 192.168.5.0 / 24 192.168.5.0/24 192.168.5.0/24 , 24 24 24 位 是网络前缀 ;

在 CIDR 基础之上 , 进行定长子网划分 , 后面 8 8 8 位 , 一部分作为 子网号 , 一部分作为主机号 ;

子网掩码为 255.255.255.248 255.255.255.248 255.255.255.248 , 转为二进制是 :

11111111 11111111 1111 11111111 \quad 11111111 \quad 1111 11111111111111111111 0000 0000 0000 11111000 \quad 11111000 11111000

由上面的子网掩码可得 , 子网号 占 5 5 5 位 , 主机号 占 3 3 3 位 ;

最大子网个数是 2 5 = 32 2^5 = 32 25=32 个 , 在 CIDR 子网中 , 子网号可以全 0 0 0 , 全 1 1 1 ;

每个子网的最大主机个数是 : 2 3 − 2 = 6 2^3-2 = 6 232=6 , 要减去 全 0 0 0 和 全 1 1 1 两种情况 ;

参考博客 : 【计算机网络】网络层 : 无分类编址 CIDR ( 编址发展 | CIDR 优点 | CIDR 相关计算 | 构成超网 | 最长前缀匹配 | 计算示例 )★

五、重要协议 ( ARP | DHCP | ICMP | IGMP ) ★


1 . ARP 协议

ARP 协议 使用过程 :

① 检查 ARP 高速缓存 :

存在对应物理地址 : 如果有 目的 IP 地址对应的 MAC 地址 , 就直接写入该 MAC 地址 ;不存在对应物理地址 : 如果没有 目的 IP 地址对应的 MAC 地址 , 则 使用 “FF-FF-FF-FF-FF-FF” 作为 MAC 地址 , 封装并广播 “ARP 请求分组” , 该局域网内所有的主机都能收到该请求 ;

② “ARP 请求分组” 处理 : 目的主机 收到 “ARP 请求分组” 后 , 向源主机 单播 “ARP 请求分组” , 源主机收到 该 “ARP 请求分组” 后 , 将 MAC 地址映射写入到 ARP 缓存中 ;

③ 更新周期 : 每隔 10 10 10 ~ 20 20 20 分钟 , 更新一次 ARP 高速缓存 ;

计算示例 :

源主机 发送 IP 数据报给目的主机 , 经过了 5 5 5 个路由器 , 期间使用了多少次 ARP 协议 ?

源主机 , 使用 ARP 协议 , 获取第 1 1 1 个路由器的 物理地址 ;

1 1 1 个路由器 , 使用 ARP 协议 , 获取第 2 2 2 个路由器的 物理地址 ;

2 2 2 个路由器 , 使用 ARP 协议 , 获取第 3 3 3 个路由器的 物理地址 ;

3 3 3 个路由器 , 使用 ARP 协议 , 获取第 4 4 4 个路由器的 物理地址 ;

4 4 4 个路由器 , 使用 ARP 协议 , 获取第 5 5 5 个路由器的 物理地址 ;

5 5 5 个路由器 , 使用 ARP 协议 , 获取 目的主机 的 物理地址 ;

总共使用了 6 6 6 次 ARP 协议 ;

参考博客 : 【计算机网络】网络层 : ARP 协议 ( 使用 ARP 协议查找 目的主机 / 路由器 物理地址 )★

2 . DHCP 协议

DHCP 协议 流程 :

① 主机 广播 DHCP 发现报文 ; 该主机是想要申请 IP 地址的主机 ;

② DHCP 服务器 广播 DHCP 提供报文 ;

③ 主机 广播 DHCP 请求报文 ;

④ DHCP 服务器 广播 DHCP 确认报文 ;

每个步骤都是广播 ;

广播的内容是 四种类型的报文 :

DHCP 发现报文DHCP 提供报文DHCP 请求报文DHCP 确认报文

参考博客 : 【计算机网络】网络层 : DHCP 协议 ( DHCP 协议概念 | DHCP 协议特点 | DHCP 协议流程 )

3 . ICMP 协议

ICMP 协议 简介 :

① ICMP 协议 全称 : 网际控制报文协议 ;

② ICMP 协议 功能 :

差错报告 : 对应 发送 差错报文 ;网络探寻 : 对应 发送 探寻报文 ;

③ ICMP 报文 在 IP 数据报中位置 : ICMP 报文 属于 IP 数据报 的 数据部分 ;

ICMP 报文内容 : 其中的类型是 差错报文 / 探询报文 ;

ICMP 五种差错报告报文 :

① 终点不可达报文 : 路由器 / 主机 不能交付数据报时 , 就会向源点 发送 终点不可达报文 ;

② 源点抑制报文 : 路由器 / 主机 拥塞 , 丢弃 IP 数据报 , 向源点发送源点抑制报文 , 让源点降低发送速率 ;

③ 时间超过报文 :

生存周期为 0 0 0 : 路由器 生存周期 TTL = 0 0 0 时 , 丢弃该报文 , 同时向源点发送 时间超过报文 ;分组丢失 : 终点 在预定时间内 没有收到 数据报的全部数据分组时 , 就会将已收到的数据分组全部丢弃 , 向源点发送时间超过报文 ;

④ 参数问题报文 : 路由器 / 主机 收到的 数据报 首部 字段由错误值 , 丢弃该数据报 , 向源点发送 参数问题报文 ;

⑤ 改变路由报文 : 路由器 将 改变路由报文 发送给主机 , 让主机下次将数据报发送给另外的路由器 ; 又称为 “重定向报文” ;

ICMP 差错报文 不发送 情形 :

① ICMP 差错报文错误 : IP 数据报 中 , 如果 ICMP 差错报文部分出错 , 就不用再发送 ICMP 差错报告报文了 ;

② 后续数据报分片 : ICMP 差错报文只针对数据报的第一个分片 , 后续分片就不发送 ICMP 差错报告报文了 ;

③ 组播地址 : 如果 IP 数据报的地址是 组播地址 , 不发送 ICMP 差错报文 ;

④ 特殊地址 : 如果 IP 数据报的地址是 特殊地址 , 不发送 ICMP 差错报文 ; 如 : 默认路由地址 等 ;

ICMP 询问报文 :

① 回送请求 和 回答报文 : 主机 / 路由器 询问特定主机 , 目的主机收到该报文后 , 必须给源主机 发送 ICMP 回答报文 ; 目的是 测试该 目的主机是否可达 ;

② 时间戳请求 和 回答报文 : 请求 主机 / 路由器 当前的日期 和 时间 ; 用于进行时钟同步 和 时间测量 ;

参考博客 : 【计算机网络】网络层 : ICMP 协议 ( ICMP 差错报文 | 差错报文分类 | ICMP 询问报文 | ICMP 应用 | Ping | Traceroute )

4 . IGMP 协议

IGMP 协议 :

全称 : 网际组管理协议 ;

作用 : IGMP 协议 让 路由器 知道 本局域网 内的主机 , 是否 参加 / 退出 了 某个组播组 ; 如 : 小王 进入了 某主播直播间 , 那么小王的手机参加了组播组 ;

IGMP 协议在 TCP / IP 协议栈中的位置 : 处于 网络层 上层 , ICMP 与 IGMP 都使用 IP 数据报 传递报文 ;

IGMP 工作流程 :

① 第一阶段 : 加入组播组 ;

加入组播组 : 主机 向 组播组 的 组播地址 发送 IGMP 报文 , 声明自己成为该组的成员 ;

组播路由器更新数据 : 本地组播路由器 收到 IGMP 报文后 , 利用 组播路由选择协议 , 将组播组 成员关系发送给 因特网上的 其它组播路由器 ;

② 第二阶段 : 定期轮询组播组成员 ;

周期询问 : 本地组播路由器 每隔一段时间 , 询问 本地局域网的 组播组 1 1 1 的主机 A A A , 询问该 主机 A A A 是否是 组播组 1 1 1 成员 ;如果 主机 A A A 是组播组 1 1 1 成员 : 如果有主机 A A A 对 组播组 1 1 1 相应 , 组播路由器 认为 该组播组 1 1 1 是 活跃的 ;如果 主机 A A A 不是组播组 1 1 1 成员 : 如果没有主机响应 , 组播路由器 认为 本网络上没有 组播组 1 1 1 的成员 , 不再将本组的 A A A 主机当做组播组 1 1 1 的成员 发送给其它组播路由器 ;

参考博客 : 【计算机网络】网络层 : IP 组播 ( IP 数据报传输方式 | 组播 IP 地址 | 组播 MAC 地址 | IGMP 协议 | 组播路由选择协议 )

六、IPv6 协议


IPv6 地址表示 :

① 冒号十六进制记法 : 2 B 2 B : 0000 : 0000 : 0000 : 002 B : 2 B 2 B : 2 B 2 B : 2 B 2 B 2B2B:0000:0000:0000:002B:2B2B:2B2B:2B2B 2B2B:0000:0000:0000:002B:2B2B:2B2B:2B2B , 使用 7 7 7 个 冒号 , 将 8 8 8 个 short 短整型数字 使用 十六进制数表示出来 ;

② 压缩形式 : 如果每个 short 短整型数字 前面若干位为 0 , 可以省略 , 如果四位全是 0 0 0 , 那么可以使用 一个 0 0 0 代替 ;

上述 IPv6 地址 使用压缩形式 可以表示成 2 B 2 B : 0 : 0 : 0 : 2 B : 2 B 2 B : 2 B 2 B : 2 B 2 B 2B2B:0:0:0:2B:2B2B:2B2B:2B2B 2B2B:0:0:0:2B:2B2B:2B2B:2B2B ;

③ 零压缩 : 连续的 0 0 0 使用一对冒号表示 , 但是一个 IPv6 地址中只能使用一次 ;

零压缩表示上述 IPv6 地址 : 2 B 2 B : : 2 B : 2 B 2 B : 2 B 2 B : 2 B 2 B 2B2B::2B:2B2B:2B2B:2B2B 2B2B::2B:2B2B:2B2B:2B2B

IPv4 向 IPv6 过渡策略 :

① 双栈协议 : 同一台设备上 同时启用 IPv4 和 IPv6 协议栈 , 该设备既能使用 IPv4 通信 , 又能与 IPv6 网络进行通信 ;

路由器 : 不同的接口 分别 配置 IPv4 地址 和 IPv6 地址 ;计算机 : 计算机同时拥有 IPv4 地址 和 IPv6 地址 , 可同时处理两种协议 ;

② 隧道技术 : 隧道技术 是 使用 互联网 基础设施 , 在网络之间传递数据的方式 ; 使用 隧道 传递不同协议的数据 , 将其它协议的数据重新封装然后通过隧道传输 ;

参考博客 : 【计算机网络】网络层 : IPv6 协议 ( IPv6 数据包格式 | IPv6 地址表示 | IPv6 地址类型 | IPv4 与 IPv6 协议对比 | IPv4 -> IPv6 过渡策略 )

七、路由选择协议 ★


路由选择协议分类 :

① 内部网管协议 IGP : 在 自治系统 ( Autonomous System ) 内部 使用的协议 ;

RIP 协议 : 使用 距离向量 算法 ; 用于 小型网络 ;OSPF 协议 : 使用 链路状态 算法 ; 用于 大型网络 ;

② 外部网关协议 EGP : 在 自治系统 ( Autonomous System ) 之间 使用的协议 ;

下图中 自治系统 A A A 内部使用 RIP 协议 , 自治系统 B B B 内部使用 OSPF 协议 , 两个自治系统 A , B A,B A,B 之间使用 BGP 协议 ;

RIP 协议

RIP 协议 :

① 概念 : RIP 协议 是 分布式的 , 基于 距离向量 的 , 路由选择协议 ; 该协议是因特网协议标准 ;

② 特点 : 简单 ;

③ RIP 协议内容 : 要求网络中 , 每个路由器 都维护一个路由表 , 路由表内容是 从 路由器本身目的网络 唯一最佳距离记录 ;

④ 距离 : 路由器 跳数 , 每经过一个路由器 , 跳数加一 ;

⑤ 直接连接距离 : 路由器 到 直接连接的网络 , 距离是 1 1 1 ;

⑥ 最大距离 : RIP 协议中要求 , 一条路由只能包含 15 15 15 个路由器 ( 包含其本身 ) , 距离 最大是 15 15 15 , 如果距离为 16 16 16 , 该目标主机就会被判定为 网络不可达 ;

路由表 形成 需要进行信息 交换 , 需要与 指定的路由器 , 在指定的时机 , 交换指定信息 ;

RIP 协议 信息交换

RIP 协议 信息交换 :

① 交换对象 : 本路由器 只 与 相邻路由器 进行信息交换 ;

② 交换信息 : 交换的信息是路由器的 本身的路由表 ; 将本路由器的路由表所有信息, 封装在 RIP 报文中 , 发送给相邻路由器 ;

③ 交换周期 : 每隔 30 30 30 , 交换一次路由信息 , 根据新的信息更新路由表 , 如果超过 180 180 180 秒没有收到 邻居路由器的 交换信息 , 则判定旁边的 邻居路由器没了 , 更新自身的路由表 ;

交换过程 : 刚开始时 , 每个路由器 只知道 直连的网络的距离 1 1 1 , 之后每个路由器想换交换信息 , 并更新路由信息 , 若干次交换后 , 所有的路由器都知道 本 自治系统 ( Autonomous System ) 中从任何路由器 到达 任何网络的最短距离 , 和 下一跳路由地址 ;

路由表内容 : 网络地址 , 跳数 , 下一跳地址 ;

RIP 协议是 应用层协议 , 使用 UDP 协议传输数据 ;

单个 RIP 报文中 , 最多存储 25 25 25 个路由信息 , 如果路由表很大 , 那么发送多个 RIP 报文 ;

RIP 协议特点 : 好消息更新快 , 坏消息更新慢 ; 网络出现故障后 , 要经过几分钟 , 才能将该信息送达所有的路由 , 收敛慢 ;

OSPF 协议

OSPF 协议 简介 :

① 全称 : 开放最短路径优先协议 ;

“开放” 说明该协议是公开发表的“最短路径优先” 指的是使用了 最短路径算法 ;

② 主要特征 : 使用 分布式 链路状态协议 ;

OSPF 协议 信息交换

OSPF 协议 信息交换 细节 :

① 交换对象 : OSPF 中使用 洪泛法自治系统 ( Autonomous System ) 内部 所有路由器 发送消息 ; 本路由器 向 相邻路由器 发送消息 , 相邻路由器 再向 其相邻路由器 发送消息 , 直到所有的路由器收到消息为止 , 相当于广播 ;

② 交换信息 : OSPF 中发送消息内容是 , 本路由器 与 所有 相邻路由器 的链路状态 , 包括 有哪些相邻路由器 , 链路状态 如 距离 , 时延 , 带宽 等指标 ;

③ 交换时机 : 只有当 链路状态发生变化 时 , 路由器才使用 洪范法 向 AS 内所有路由器 广播 本身与所有相邻的路由器的链路状态 ;

最终目的 : 所有的路由器 都有一个 链路状态数据库 ( 全网拓扑图 ) ;

八、路由算法 ★


距离向量算法

距离向量算法 :

① 修改 RIP 报文 : 修改 相邻 路由器 发送的 RIP 报文 中的 所有表项 ;

相邻路由器 地址为 X X X , 发送来 RIP 报文 , ① 将 下一跳 地址改为 X X X 相邻路由器地址 , ② 将距离 加一 ;

② 更新 本路由器 路由表 :

路由表内容 : 网络地址 , 跳数 , 下一跳地址 ;

针对修改后的 RIP 报文 , 执行下面的操作 :

没有的表项 : 没有报文中路由表表项的 网络地址 , 直接插入即可 ;已有的表项 : 存在报文中路由表表项的 网络地址 , 查看下一跳路由器地址 , 下一跳就是 X X X 相邻路由器 : 使用该新的路由表项替换原来的路由表项 ; 这种情况下 , 不管距离变大还是变小 , 只要下一跳路由器一样 , 就更新 , 这说明了网络拓扑发生了改变 ; 始终以新的数据为标准 ;下一跳不是 X X X 相邻路由器 : 比较距离 , 如果 本次的距离 比 原来的距离 近 , 就更新路由表项 , 如果远 , 不做处理 ; ( 更新原则是 , 同一个目的地址 , 始终保持跳数较少的路由路径 )

③ 删除路由 : 如果 180 180 180 秒 , 还没有收到相邻路由器 X X X 的 RIP 报文数据 , 那么将 路由器 X X X 记为不可达路由器 , 将距离设置为 16 16 16 ;

④ 返回 ;

距离向量算法示例 1

距离向量算法 计算示例 :

R 6 R6 R6 本身路由表 :

表项 1 1 1 : 目的网络 Net 2 2 2 , 距离 3 3 3 , 下一跳路由 R 4 R4 R4 ;表项 2 2 2 : 目的网络 Net 3 3 3 , 距离 4 4 4 , 下一跳路由 R 5 R5 R5 ;

收到 R 4 R4 R4 发来的 RIP 报文 ( 路由更新信息 ) :

表项 1 1 1 : 目的网络 Net 1 1 1 , 距离 3 3 3 , 下一跳路由 R 1 R1 R1 ;表项 2 2 2 : 目的网络 Net 2 2 2 , 距离 4 4 4 , 下一跳路由 R 2 R2 R2 ;表项 3 3 3 : 目的网络 Net 3 3 3 , 距离 1 1 1 , 下一跳路由 直接交付 ;

计算更新后的 R 6 R6 R6 路由器路由表 ?

计算过程 :

① 修改 RIP 报文 :

① 将 下一跳 地址改为 X X X 相邻路由器地址② 将距离 加一 ;

按照上述 两个步骤 修改 收到 R 4 R4 R4 发来的 RIP 报文 ( 路由更新信息 ) :

表项 1 1 1 : 目的网络 Net 1 1 1 , 距离 4 4 4 , 下一跳路由 R 4 R4 R4 ;表项 2 2 2 : 目的网络 Net 2 2 2 , 距离 5 5 5 , 下一跳路由 R 4 R4 R4 ;表项 3 3 3 : 目的网络 Net 3 3 3 , 距离 2 2 2 , 下一跳路由 R 4 R4 R4 ;

② 更新 路由表 :

针对 "表项 1 1 1 : 目的网络 Net 1 1 1 , 距离 4 4 4 , 下一跳路由 R 4 R4 R4 " , 原来 R 6 R6 R6 路由表中没有 目的网络 Net 1 1 1 , 直接将该路由表表项插入到 R 6 R6 R6 路由表zh9ong ;

针对 "表项 2 2 2 : 目的网络 Net 2 2 2 , 距离 5 5 5 , 下一跳路由 R 4 R4 R4" , 原来 R 6 R6 R6 路由表中 有 目的网络 Net 2 2 2 , 对比下一跳地址 , 原来的路由表项中下一跳地址是 R 4 R4 R4 , 不管距离是否远近 , 这说明网络的拓扑结构发生变化 , 直接使用新的路由表项 , 替换原来的 ; ( 本步骤与距离远近无关 , 是网络拓扑发生的变化 )

针对 "表项 3 3 3 : 目的网络 Net 3 3 3 , 距离 2 2 2 , 下一跳路由 R 4 R4 R4" , 原来 R 6 R6 R6 路由表中 有 目的网络 Net 3 3 3 , 对比下一跳地址 , 下一跳地址不同 , 那么开始对比距离远近 , 原来的距离是 4 4 4 , 新的距离是 2 2 2 , 这里选择距离较近的 , 即将 RIP 报文中的路由表表项更新到 R 6 R6 R6 路由器中 ;

更新后的 R 6 R6 R6 路由器表项 : ( 全都更改了一遍 )

表项 1 1 1 : 目的网络 Net 1 1 1 , 距离 4 4 4 , 下一跳路由 R 4 R4 R4 ;表项 2 2 2 : 目的网络 Net 2 2 2 , 距离 5 5 5 , 下一跳路由 R 4 R4 R4 ;表项 3 3 3 : 目的网络 Net 3 3 3 , 距离 2 2 2 , 下一跳路由 R 4 R4 R4 ;

距离向量算法示例 2

某子网 有 A , B , C , D , E , F A, B, C,D,E,F A,B,C,D,E,F 六个路由器 , 使用 距离-向量 算法 , 下面的向量 , 达到路由器 C C C :

来自 B B B 的向量为 ( 5 , 0 , 8 , 12 , 6 , 2 ) ( 5, 0, 8 , 12 , 6, 2 ) (5,0,8,12,6,2)来自 D D D 的向量为 ( 16 , 12 , 6 , 0 , 9 , 10 ) ( 16, 12, 6 , 0 , 9, 10 ) (16,12,6,0,9,10)来自 E E E 的向量为 ( 7 , 6 , 3 , 9 , 0 , 4 ) ( 7, 6, 3 , 9 , 0 , 4 ) (7,6,3,9,0,4)

C C C B , D , E B, D, E B,D,E 的延迟分别是 6 , 3 , 5 6,3,5 6,3,5 , 求 C C C 到达所有节点的最短路径 ;

计算过程 :

B B B 的向量为 ( 5 , 0 , 8 , 12 , 6 , 2 ) ( 5, 0, 8 , 12 , 6, 2 ) (5,0,8,12,6,2) , 即 B B B A , B , C , D , E , F A, B, C,D,E,F A,B,C,D,E,F 六个路由器的跳数 ; D D D 的向量为 ( 16 , 12 , 6 , 0 , 9 , 10 ) ( 16, 12, 6 , 0 , 9, 10 ) (16,12,6,0,9,10) , 即 D D D A , B , C , D , E , F A, B, C,D,E,F A,B,C,D,E,F 六个路由器的跳数 ; E E E 的向量为 ( 7 , 6 , 3 , 9 , 0 , 4 ) ( 7, 6, 3 , 9 , 0 , 4 ) (7,6,3,9,0,4) , 即 E E E A , B , C , D , E , F A, B, C,D,E,F A,B,C,D,E,F 六个路由器的跳数 ;

C C C B B B 再到 其它路由器跳数为 ( 11 , 6 , 14 , 18 , 12 , 8 ) ( 11, 6, 14 , 18 , 12, 8 ) (11,6,14,18,12,8) C C C D D D 再到 其它路由器跳数为 ( 19 , 15 , 9 , 3 , 12 , 13 ) ( 19, 15, 9 , 3 , 12, 13 ) (19,15,9,3,12,13) C C C E E E 再到 其它路由器跳数为 ( 12 , 11 , 8 , 14 , 5 , 9 ) ( 12, 11, 8 , 14 , 5, 9 ) (12,11,8,14,5,9)

C C C A A A 最短 跳数 是 11 , 19 , 12 11 , 19, 12 11,19,12 中最小值 11 11 11 ; C C C B B B 最短 跳数 是 6 , 15 , 11 6 , 15, 11 6,15,11 中最小值 6 6 6 ; C C C C C C 最短 跳数 是 0 0 0 ; C C C D D D 最短 跳数 是 8 , 3 , 14 8 , 3, 14 8,3,14 中最小值 3 3 3 ; C C C E E E 最短 跳数 是 12 , 12 , 5 12 , 12, 5 12,12,5 中最小值 5 5 5 ; C C C F F F 最短 跳数 是 8 , 13 , 9 8 , 13, 9 8,13,9 中最小值 8 8 8 ;

C C C 达到所有节点的路径是 ( 11 , 6 , 0 , 3 , 5 , 8 ) ( 11, 6, 0 , 3, 5, 8 ) (11,6,0,3,5,8)

链路状态路由算法

链路状态路由算法 :

① HELLO 问候分组 : 路由器 通过发送 HELLO 问候分组 , 发现邻居节点 ;

② 度量 : 设置 路由器 到 每个邻居 的成本度量 ;

③ DD 数据库描述分组 : 路由器 向 相邻路由器 给出自己的 链路状态数据库所有链路状态 的 摘要信息 ; ( 注意不是所有信息 )

④ LSR 链路状态请求分组 :

存在摘要对应信息 : 如果 收到的 DD 数据库描述分组 中的摘要 , 自己都有 , 不做任何处理 ;不存在摘要对应信息 : 如果 没有 或者 有最新的 , 发送 LSR 链路状态请求分组 , 请求自己 没有 或者 有更新 的详细信息 ; ( 这一这里是详细信息 )

⑤ LSU 链路状态更新分组 : 收到 LSR 链路状态请求分组 后 , 发送 LSU 链路状态更新分组 , 更新对方路由器的 链路状态数据库信息 ;

⑥ LSAck 链路状态确认分组 : 收到 LSU 链路状态更新分组 后 , 返回 LSAck 链路状态确认分组 进行确认 ;

某个 路由器 链路状态 发生变化 后的操作 :

① LSU 链路状态更新分组 : 泛洪法 发送 LSU 链路状态更新分组 , 更新所有路由器的 链路状态数据库 ;

② LSAck 链路状态确认分组 : 路由器更新完毕后 , 回送 LSAck 链路状态确认分组 ;

③ 构造最短路径 : 每个路由器 根据自身的 链路状态数据库 , 构造本节点到其它节点的最短路径 ;

最新回复(0)