【计算机网络-网络层】IPv4 和 IPv6

news2025/8/27 9:57:13

文章目录

  • 第一部分:IPv4(IP 协议版本 4)
    • 1 IP 数据报
      • 1.1 IP 数据报格式
      • 1.2 相关例题
    • 2 分类编址(两级结构,网络号定长)
      • 2.1 IP 地址的表示方法
      • 2.2 IP 分类编址
      • 2.3 IP 地址的特殊用途
    • 3 无分类编址 CIDR(两级结构,网络前缀不定长)
      • 3.1 网络前缀和地址块
      • 3.2 地址掩码
      • 3.3 构造超网和路由聚合
    • 4 划分子网编址(三级结构,网络号定长)
      • 4.1 子网掩码
      • 4.2 定长子网掩码(FLSM)划分子网
        • 例 1:假设申请到的 C 类网络为 218.75.230.0
        • 例 2:假设地址块为 192.168.252.0/24
      • 4.3 变长子网掩码(VLSM)划分子网
        • 例 1:假设申请到的地址块为 218.75.230.0/24
        • 例 2:假设地址块为 192.168.252.0/24
        • 例 3:若将 101.200.16.0/20 划分为 5 个子网
    • 5 IP 层转发分组的过程
      • 5.1 IP 地址与 MAC 地址
      • 5.2 IP 数据报的发送和转发过程
      • 5.3 分组转发算法
      • 5.4 最长前缀匹配
      • 5.5 网络地址转换 NAT
        • 例 1:分析 NAT 路由器的工作流程
        • 例 2:假定一个 NAT 路由器的公网地址为 205.56.79.35
  • 第二部分:IPv6(IP 协议版本 6)
    • 1 IPv6 的特点
    • 2 IPv6 数据报
    • 3 IPv6 地址
    • 4 IPv4 向 IPv6 过渡的策略

第一部分:IPv4(IP 协议版本 4)

1 IP 数据报

1.1 IP 数据报格式

IP 数据报的格式如下:

首部(发送在前)数据部分
固定部分(20B)+ 可变部分数据信息

IP 数据报首部的格式如下:

在这里插入图片描述

IP 首部的字段含义如下:

  • 版本(4b):IP 协议版本,广泛使用的版本号为 4。
  • 首部长度(4b,单位 4B):可表示的最小十进制为 5,最大十进制数为 15,以 4B 为单位,最大值为 60B(15 x 4B),用于指示首部的长度。
首部长度字段首部长度
520B
624B
728B
1456B
1560B
  • 区分服务(DS)(8b):用来获得更好的服务,只有在使用区分服务时才起作用。
  • 总长度(16b,单位 1B)首部和数据之和的长度,单位为字节。数据报的最大长度为 216-1 = 65535B,但是一个数据报的长度不能超过以太网帧的最大传送单元(MTU = 1500B),所以还需把数据报分片。
  • 标识(16b):一个计数器,每产生一个数据报就加 1,但并不是序号,因为 IP 是无连接服务。
  • 标志(3b):只有低两位有意义。
0/1无意义(MSB)DF(Don’t Fragment)MF(More Fragment)(LSB)
0-不能分片若干数据片中的最后一个
1-可以分片后面还有数据片
  • 片偏移(13b,单位 8B):某数据报片相对于数据字段的终点,以 8 个字节为偏移单位。除最后一个数据报片外,其他每个分片的长度一定是 8 字节的整数倍
  • 生存时间(TTL)(8b):标识该数据报在网络中的寿命。路由器在转发数据报前,TTL 减 1。若 TTL 为 0,则该分组丢弃。注意,TTL 不是秒数,而是跳数,意义是数据报能在互联网最多可经过多少个路由器。
  • 协议(8b):指出该数据报携带的数据使用何种协议。
协议名ICMPTCPUDP
协议字段值1617
  • 首部校验和(16b):只校验首部,不校验数据部分。
  • 源地址(32b):发送 IP 数据报的主机的 IP 地址。
  • 目的地址(32b):接收 IP 数据报的主机的 IP 地址。
  • 可选字段(0~40B):用来支持排错、测量以及安全等措施,内容丰富。
  • 填充:全 0,把首部补充为 4B 的整数倍。

1.2 相关例题

【例 1】原始数据报的总长度为 4000B(首部 20B,数据部分 3980B),标识号为 12345,需要转发到一条 MTU = 1500B 的以太网链路上,则 IP 分片为:

数据片报位于原始数据报数据部分的位置数据部分长度总长度标识MFDF片偏移
数据报片 10B ~ 1479B1500B - 20B = 1480B1500B12345100
数据报片 21480B ~ 2959B2960B - 1480B = 1480B1500B12345101480 / 8 = 185
数据报片 32960B ~ 3980B3980B - 2960B = 1020B1040B12345002960 / 8 = 370

【例 2】原始数据报的总长度为 3820B(首部 20B,数据部分 3800B),标识号为 777,需要转发到一条 MTU = 1420B 的链路上,则 IP 分片为:

数据片报位于原始数据报数据部分的位置数据部分长度总长度标识MFDF片偏移
数据报片 10B ~ 1399B1420B - 20B = 1400B1420B777100
数据报片 21400B ~ 2799B2800B - 1400B = 1400B1420B777101400 / 8 = 175
数据报片 32800B ~ 3800B3800B - 2800B = 1000B1020B777002800 / 8 = 350

【例 3】若路由器向 MTU = 800B 的链路转发一个总长度为 1580B 的 IP 数据报(首部长度为 20B)时,进行了分片,且每个分片尽可能大,则第 2 个分片的总长度字段和 MF 标志位的值分别是( )

A. 796, 0

B. 796, 1

C. 800, 0

D. 800, 1

【解】数据部分大小 = 1580B-20B = 1560B,则每个分片的情况:

分片首部数据部分MF
120B780B1
220B780B0

但是!数据部分的长度必须能被 8 整除,780 不能被 8 整除,所以要将 780 改成最大能被 8 整除的数即 776!

分片首部数据部分MF
120B776B1
220B776B1
320B8B0

答案选 B。

2 分类编址(两级结构,网络号定长)

2.1 IP 地址的表示方法

IP 地址指明了连接到某个网络上的一个主机或路由器。

  • IP 地址的格式IP 地址 ::= {<网络号>, <主机号>}
  • 点分十进制:每隔 8 位插入一个“.”,把 8 位二进制数转换为十进制数。

【例】128.14.35.72在计算机中表示为10000000.00001110.00100011.00000111

2.2 IP 分类编址

  • A 类(网络号 1~126,单播地址)
0b~7b8b~32b
0 网络号主机号
  • B 类(网络号 128~191,单播地址)
0b~15b16b~32b
10 网络号主机号
  • C 类(网络号 192~223,单播地址)
0b~23b24b~32b
110 网络号主机号
  • D 类(网络号 224~339,多播地址)
0b~32b
1110 多播地址
  • E 类(网络号 240~255)
0b~32b
1111 保留为今后使用

2.3 IP 地址的特殊用途

(需记忆)有些 IP 地址用作特殊用途,不用做 IP 地址(-1 表示所有位上都是 1):

网络号主机号作为源地址作为目的地址例子用途
00x0.0.0.0本网络上的本主机
-1-1x255.255.255.255只在本网络上进行广播
net-id-1x202.98.174.255对网络号为 net-id 的所有主机进行广播
0host-idx0.0.0.250在本网络上主机号为 host-id 的主机
127非 0 且非 -1127.0.0.1用于本地软件环回测试

(需记忆)A 类、B 类、C 类地址的使用范围:

网络类别最大可用网络数每个网络中最大可用主机数可用的网络号
A27-2(减去 0 和 -1 的情况)224-2(减去 0 和 -1 的情况)1 ~ 126
B214216-2(减去 0 和 -1 的情况)128.0 ~ 191.255
C22128-2(减去 0 和 -1 的情况)192.0.0 ~ 223.255.255

3 无分类编址 CIDR(两级结构,网络前缀不定长)

3.1 网络前缀和地址块

  • CIDR 地址的格式IP 地址 ::= {<网络前缀>, <主机号>}
  • CIDR 记法(斜线记法)IP 地址/网络前缀所占位数
  • CIDR 地址块:把网络前缀都相同的所有连续 IP 地址组成一个 CIDR 地址块。
  • 网络前缀越短的地址块所包含的地址数越多。

【例】128.14.35.72/20,前 20 位是网络前缀:1000 0000. 0000 1110. 0010 0011. 0000 0111

该地址块可表示为:1000 0000. 0000 1110. 0010*128.14.32/20

若不需要指明网络地址时,可表示为:/20地址块

该地址块的最小地址:1000 0000. 0000 1110. 0010 0000. 0000 0000,即128.14.32.0

该地址块的最大地址:1000 0000. 0000 1110. 0010 1111. 1111 1111,即128.14.47.255

该地址块能分配的最大可用主机数 = 212-2

  • 特殊用途
网络前缀记法用途说明
32ba.b.c.d/32没有主机号,用于主机路由对特定目的主机的 IP 地址专门指明一个路由,方便管理人员控制和测试网络
31ba.b.c.d/31只有两个主机号 0 和 1,用于点对点链路
0ba.b.c.d/0用于默认路由不管分组的目的地址在哪里,都由指定的路由器 R 来处理

3.2 地址掩码

  • 地址掩码:由一连串的 1 和一连串的 0 组成,1 的个数即为网络前缀的长度。
  • 计算得到网络地址:把二进制的 IP 地址和地址掩码进行按位与运算,即可得到网络地址。
  • A 类、B 类、C 类地址的地址掩码:
网络类别地址掩码
A 类255.0.0.0
B 类255.255.0.0
C 类255.255.255.0
  • 地址掩码中的二进制和十进制转换:
二进制十进制
1000 0000128
1100 0000192
1110 0000224
1111 0000240
1111 1000248
1111 1100252
1111 1110254
1111 1111255

【例】128.14.35.72/20,则/20地址块的子网掩码:1111 1111. 1111 1111. 1111 0000. 0000 0000

128.14.35.72进行按位与运算,得到网络前缀(网络地址):

十进制 IP 地址128143572
二进制 IP 地址1000 00000000 11100010 00110000 0111
二进制子网掩码1111 11111111 11111111 00000000 0000
按位与运算结果1000 00000000 11100010 00000000 0000
十进制网络地址12814320

3.3 构造超网和路由聚合

  • 构造超网:CIDR 地址块包含了多个 C 类地址,因此 CIDR 编址又称为构成超网。
  • 路由聚合:大的 CIDR 地址块中包含很多较小的地址块,我们可以用较大的 CIDR 地址块来代替许多较小的地址块。
  • 路由聚合的方法:找共同前缀。
  • 注意:地址块的数字越小,地址块越大。比如地址块/27比地址块/30大。

【例】某路由表中有转发接口相同的 4 条路由表项,其目的网络地址分别为 35.230.32.0/21, 35.230.40.0/21, 35.230.48.0/21 和 35.230.56.0/21,将该 4 条路由聚合后的目的网络地址为( )

A. 35.230.0.0/19

B. 35.230.0.0/20

C. 35.230.32.0/19

D. 35.230.32.0/20

【解】先将四个地址化为二进制,再找出公共前缀,即可得知选 C,如下表所示。

地址8b8b8b8b
地址 1352300010 00000
地址 2352300010 10000
地址 3352300011 00000
地址 4352300011 10000

4 划分子网编址(三级结构,网络号定长)

4.1 子网掩码

  • 三级 IP 地址格式IP 地址 ::= {<网络号>, <子网号>, <主机号>}
  • 子网掩码:由一连串的 1 和一连串的 0 组成,1 的个数即为网络号和子网号的长度。
  • 计算得到网络地址:把二进制的 IP 地址和子网掩码进行按位与运算,即可得到网络地址。

【注】子网掩码和地址掩码其实是同一个概念,只不过指示的内容不同。

4.2 定长子网掩码(FLSM)划分子网

  • 定长子网掩码划分子网:所划分出的每一个子网都使用同一个子网掩码。
  • 特点:每个子网所分配的IP地址数量相同,容易造成地址资源的浪费。

例 1:假设申请到的 C 类网络为 218.75.230.0

【例 1】假设申请到的 C 类网络为218.75.230.0,使用定长的子网掩码划分子网来满足需求:网络 1 需要 IP 地址数量为 9,网络 2 需要 IP 地址数量为 28,网络 3 需要 IP 地址数量为 15,网络 4 需要 IP 地址数量为 13,网络 5 需要 IP 地址数量为 4。

【解】因为有 5 个子网,因此可以从主机号借来 3 个比特作为子网号使用,则子网掩码为:11111111.11111111.11111111.1110000 --> 255.255.255.224

该 C 类网的格式如下表所示,子网号一共 3 个比特,可划分 8 个子网;主机号一共 5 个比特,说明每个子网可供 32 个主机使用:

网络号子网号主机号
218.75.230.00000000
218.75.230.00000001
218.75.230.00011110
218.75.230.00011111
218.75.230.00100000
218.75.230.11111110
218.75.230.11111111

所以一共划分为 8 个子网,可供上述 5 个子网选择使用:

子网网络地址该子网的可分配地址广播地址
1218.75.230.0218.75.230.1 ~ 218.75.230.30218.75.230.31
2218.75.230.32218.75.230.33 ~ 218.75.230.62218.75.230.63
3218.75.230.64218.75.230.65 ~ 218.75.230.94218.75.230.95
4218.75.230.96218.75.230.97 ~ 218.75.230.126218.75.230.127
5218.75.230.128218.75.230.129 ~ 218.75.230.158218.75.230.159
6218.75.230.160218.75.230.161 ~ 218.75.230.190218.75.230.191
7218.75.230.192218.75.230.193 ~ 218.75.230.222218.75.230.223
8218.75.230.224218.75.230.225 ~ 218.75.230.254218.75.230.255

例 2:假设地址块为 192.168.252.0/24

【例 2】假设地址块为 192.168.252.0/24,使用定长的子网掩码划分子网来满足需求:网络 1 需要 IP 地址数量为 63,网络 2 需要 IP 地址数量为 23,网络 3 需要 IP 地址数量为 13,网络 4 需要 IP 地址数量为 4。

【解】因为有 4 个子网,因此可以从主机号借来 2 个比特作为子网号使用,则子网掩码为:11111111.11111111.11111111.11000000 --> 255.255.255.192

该地址块的格式如下表所示,子网号一共 2 个比特,可划分 4 个子网;主机号一共 6 个比特,说明每个子网可供 64 个主机使用:

网络号子网号主机号
218.75.230.00000000
218.75.230.00000001
218.75.230.00111110
218.75.230.00111111
218.75.230.01000000
218.75.230.11111110
218.75.230.11111111

所以一共划分为 4 个子网,可供上述 4 个子网选择使用:

子网网络地址该子网的可分配地址广播地址
1218.75.230.0218.75.230.1 ~ 218.75.230.62218.75.230.63
2218.75.230.64218.75.230.65 ~ 218.75.230.126218.75.230.127
3218.75.230.128218.75.230.129 ~ 218.75.230.190218.75.230.191
4218.75.230.192218.75.230.193 ~ 218.75.230.254218.75.230.255

4.3 变长子网掩码(VLSM)划分子网

  • 变长子网掩码划分子网:所划分出的每一个子网可以使用不同的子网掩码。
  • 特点:每个子网所分配的IP地址数量可以不同,尽可能减少对地址资源的浪费。
  • 在地址块中选取子块的原则:每个子块的起点位置不能随便选取,只能选取主机号部分是块大小整数倍的地址作为起点。建议先为大的子块选取。

例 1:假设申请到的地址块为 218.75.230.0/24

【例 1】假设申请到的地址块为218.75.230.0/24,使用变长的子网掩码划分子网来满足需求:网络 1 需要 IP 地址数量为 9,网络 2 需要 IP 地址数量为 28,网络 3 需要 IP 地址数量为 15,网络 4 需要 IP 地址数量为 13,网络 5 需要 IP 地址数量为 4。

【解】各网络的情况如下表所示:

网络序号需要 IP 地址数量主机号位数网络前缀位数地址块可使用的地址数量
194 (24=16)32-4=28/2816
2285 (25=32)32-5=27/2732
3154 (24=16)32-4=28/2816
4134 (24=16)32-4=28/2816
542 (22=4)32-2=30/304

从地址块 218.75.230.0/24 中取出 5 个地址块(/30,/28,/28,/28,/27):

IP 地址用途
218.75.230.0 ~ 218.75.230.31供网络 2 使用,拥有 32 个地址,主机号为 0
218.75.230.32 ~ 218.75.230.47供网络 1 使用,拥有 16 个地址,主机号为 32
218.75.230.48 ~ 218.75.230.63供网络 3 使用,拥有 16 个地址,主机号为 48
218.75.230.64 ~ 218.75.230.79供网络 4 使用,拥有 16 个地址,主机号为 64
218.75.230.80 ~ 218.75.230.83供网络 5 使用,拥有 4 个地址,主机号为 80
218.75.230.84 ~ 218.75.230.255剩余待分配

例 2:假设地址块为 192.168.252.0/24

【例 2】假设地址块为 192.168.252.0/24,使用变长的子网掩码划分子网来满足需求:网络 1 需要 IP 地址数量为 63,网络 2 需要 IP 地址数量为 23,网络 3 需要 IP 地址数量为 13,网络 4 需要 IP 地址数量为 4。

【解】各网络的情况如下表所示:

网络序号需要 IP 地址数量主机号位数网络前缀位数地址块可使用的地址数量
1636 (26=64)32-6=26/2664
2235 (25=32)32-5=27/2732
3134 (24=16)32-4=28/2816
442 (22=4)32-2=30/304

从地址块 192.168.252.0/24 中取出 5 个地址块(/30,/28,/27,/26):

IP 地址用途
192.168.252.0 ~ 192.168.252.63供网络 1 使用,拥有 64 个地址,主机号为 0
192.168.252.64 ~ 192.168.252.95供网络 2 使用,拥有 32 个地址,主机号为 64
192.168.252.96 ~ 192.168.252.111供网络 3 使用,拥有 16 个地址,主机号为 96
192.168.252.112 ~ 192.168.252.115供网络 4 使用,拥有 4 个地址,主机号为 112
192.168.252.116 ~ 192.168.252.255剩余待分配

【注】若还要继续分配网络,则不能在 192.168.252.116 处开始分配,因为 116 不能被 4、8、16、32、64、… 整除,所以该地址不能分配大小为 4、8、16、32、64、… 的地址块。那么应该从哪里开始分配地址呢?见下表:

分配的地址块大小起始地址
4192.168.252.120
8192.168.252.120
16192.168.252.128
32192.168.252.128
64192.168.252.128
128192.168.252.128

例 3:若将 101.200.16.0/20 划分为 5 个子网

【例 3】若将 101.200.16.0/20 划分为 5 个子网,则可能的最小子网的可分配 IP 地址数是( )

A. 126

B. 254

C. 510

D. 1022

【解】地址块 101.200.16.0/20 主机号位数为 32-20=12,即 101. 200. 0001 0000. 0000 0000,包含地址数量为 212=4096 个。

若要求最小子网,则不能采用均匀分配,要采用不均匀的子网划分,因此采用哈夫曼编码的方式确定子网号。

  • 子网 1:101. 200. 0001 0000. 0000 0000,子网号为 1 位,IP 地址数为 2048 个
  • 子网 2:101. 200. 0001 1000. 0000 0000,子网号为 2 位,IP 地址数为 1024 个
  • 子网 3:101. 200. 0001 1100. 0000 0000,子网号为 3 位,IP 地址数为 512 个
  • 子网 4:101. 200. 0001 1110. 0000 0000,子网号为 4 位,IP 地址数为 256 个
  • 子网 5:101. 200. 0001 1111. 0000 0000,子网号为 4 位,IP 地址数为 256 个

去掉网络地址和广播地址,可分配 IP 地址数为 254 个,选 B。

(请参考《(考研复习)子网划分小题解析》)

5 IP 层转发分组的过程

5.1 IP 地址与 MAC 地址

数据报传送过程中 IP 地址(逻辑地址)与 MAC 地址(硬件地址)的变化情况:

在这里插入图片描述

  • 在数据包的传送过程中,数据包的源 IP 地址和目的 IP 地址保持不变。
  • 在数据包的传送过程中,数据包的源 MAC 地址和目的 MAC 地址逐链路(或逐网络)改变。
  • 若仅使用 MAC 地址进行通信:包含海量 MAC 地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延。

【例 1】下图中各主机和路由器各接口的 MAC 地址和所配置的 IP 地址都已标注在它们的旁边,假设主机 H1 要给 H2 发送一个 IP 数据报,该 IP 数据报会被封装成以太网帧进行发送,则当 H2 收到该帧时,其首部中的源 MAC 地址以及所封装的 IP 数据报首部中的源 IP 地址分别是( )

image

A. 00-a1-b2-c3-d4-61,192.168.1.254

B. 00-a1-b2-c3-d4-61,192.168.0.1

C. 00-a1-b2-c3-d4-51,192.168.0.1

D. 00-a1-b2-c3-d4-51,192.168.1.254

【解】答案为选项 B,见下表:

传输区间网络层 IP 数据报首部的源 IP 地址网络层 IP 数据报首部的目的 IP 地址数据链路层帧首部的源 MAC 地址数据链路层帧首部的目的 MAC 地址
H1 --> R192.168.0.1192.168.1.100-a1-b2-c3-d4-5100-a1-b2-c3-d4-52
R --> H2192.168.0.1192.168.1.100-a1-b2-c3-d4-6100-a1-b2-c3-d4-62

【例 2】路由器 R 通过以太网交换机 S1 和 S2 连接两个网络,R 的接口、主机 H1 和 H2 的 IP 地址与 MAC 地址如下图所示。若 H1 向 H2 发送一个 IP 分组 P,则 H1 发出的封装 P 的以太网帧的目的 MAC 地址、H2 收到的封装 P 的以太网帧的源 MAC 地址分别是( )

在这里插入图片描述

A. 00-a1-b2-c3-d4-62,00-1a-2b-3c-4d-52

B. 00-a1-b2-c3-d4-62,00-1a-2b-3c-4d-61

C. 00-1a-2b-3c-4d-51,00-1a-2b-3c-4d-52

D. 00-1a-2b-3c-4d-51,00-a1-b2-c3-d4-61

【解】答案为选项 D,见下表:

传输区间网络层 IP 数据报首部的源 IP 地址网络层 IP 数据报首部的目的 IP 地址数据链路层帧首部的源 MAC 地址数据链路层帧首部的目的 MAC 地址
H1 --> R192.168.3.2192.168.4.200-a1-b2-c3-d4-5200-a1-b2-c3-d4-51
R --> H2192.168.3.2192.168.4.200-a1-b2-c3-d4-6100-a1-b2-c3-d4-62

【注】查表转发的结果可以指明IP数据报的下一跳路由器的 IP 地址,但无法指明该 IP 地址所对应的 MAC 地址。因此,在数据链路层封装该 IP 数据报成为帧时,帧首部中的目的 MAC 地址字段就无法填写,该问题需要使用网际层中的地址解析协议 ARP 来解决。

5.2 IP 数据报的发送和转发过程

在这里插入图片描述

  • 目的地址与路由器 R 的路由表第一行的地址掩码进行按位与运算,运算结果与目的网络不匹配。
  • 目的地址与路由器 R 的路由表第二行的地址掩码进行按位与运算,运算结果与目的网络匹配。
  • 若目的地址是192.168.0.127255.255.255.255(本网络的广播地址),则路由器不转发广播 IP 数据报(路由器 R 会隔离广播域)。如果因特网中数量巨大的路由器收到广播 IP 数据报后都进行转发,则会造成巨大的广播风暴,严重浪费因特网资源。

【注】默认网关和默认路由的区别:

  • 默认网关:是一个 IP 地址;是与主机直接相连的路由器端口。
  • 默认路由:是路由表中的一项,一般通往互联网的方向。

【例】某网络拓扑如下图所示,其中 R 为路由器,主机 H1~H4 的 IP 地址配置以及 R 的各接口 IP 地址配置如图中所示。现有若干台以太网交换机(无 VLAN 功能)和路由器两类网络互连设备可供选择。

在这里插入图片描述

请回答以下问题:

(1)设备 1、设备 2 和设备 3 分别应选择什么类型网络设备?

(2)设备 1、设备 2 和设备 3 中,哪几个设备的接口需要配置 IP 地址?并为对应的接口配置正确的 IP 地址。

(4)若主机 H3 发送一个目的地址为 192.168.1.127 的 IP 数据报,网络中哪几个主机会收到该数据报?

【解】(1)H1 和 H2 的网络前缀相同,因此设备 1 是交换机;同理,H3 和 H4 的网络前缀相同,因此设备 2 也是交换机。由于 H1 和 H3 的网络前缀不相同,因此设备 3 是路由器。

(2)路由器 IF1 = 192.168.1.254/30,IF2 = 192.168.1.1,IF3 = 192.168.1.65。

(4)192.168.1.127 为 H3 所在网络的广播地址,因此主机 H3 和 H4 都能收到该数据报。

5.3 分组转发算法

  • 基于终点的转发:分组在互联网上传送和转发是基于分组首部的目的地址。
  • 分组转发算法(前缀已按长短顺序排列)
    • 从收到的 IP 分组的首部提取目的主机的 IP 地址 D。
    • 用本网络的子网掩码和 D 进行按位与运算,若运算结果与网络地址匹配,则把分组直接交付,若不匹配则进行下一步。
    • 若路由表中有特定地址为 D 的特定主机路由,则把分组传送给路由表中所指的下一跳路由器,否则执行下一步。
    • 对路由表中的每一行,用子网掩码与 D 进行按位与运算,其结果为 N。若 N 与该行的目的网络地址匹配,则把分组传送给该行指明的下一跳路由器。否则执行下一步。
    • 若路由表中有一个默认路由,则把分组传送给所指明的默认路由器。否则执行下一步。
    • 报告转发分组出错。

【例】如图所示有三个子网,两个路由器,以及路由器 1 的部分路由表。现在源主机 H1 向目的主机 H2 发送分组。试着讨论 R1 收到 H1 向 H2 发送的分组后查找路由表的过程。(来源《使用子网时的分组转发算法》)

image

【解】源主机 H1 首先判断目的主机 H2 是否在本网络上:

十进制目的主机 IP 地址1283033138
二进制目的主机 IP 地址12830331000 1010
二进制本网络的子网掩码2552552551000 0000
按位与运算结果12830331000 0000
十进制网络地址1283033128

因此得出的网络地址与本网络的网络地址不匹配,说明 H2 不在 H1 所在的网络中,必须把分组交给路由器 R1,让 R1 根据转发表来处理这个分组。

用 H2 的 IP 地址(128.30.33.138)与转发表每一行的子网掩码进行按位与运算,看是否匹配目的地址:

目的网络子网掩码下一跳子网掩码与 H2 的 IP 地址的按位与运算是否匹配
128.30.33.0/25255.255.255.128接口 0128.30.33.128x
128.30.33.128/25255.255.255.128接口 1128.30.33.128√(此时不再往下匹配)
128.30.36.0/24255.255.255.0R2

于是 R1 把分组从接口 1 交付给 H2。

5.4 最长前缀匹配

  • 最长前缀匹配:使用 CIDR 查找路由表时可能会得到不止一个匹配结果,此时应当从匹配结果中选择具有最长网络前缀的路由。
  • 网络前缀越长,其地址块就越小,路由越具体。
  • 当使用 CIDR 后,由于不知道目的网络的前缀,使得转发表的查找过程更复杂了,因此采用二叉线索查找转发表。
  • 分组转发算法(最长前缀匹配)
    • 从收到的 IP 分组的首部提取目的主机的 IP 地址 D。
    • 用本网络的子网掩码和 D 进行按位与运算,若运算结果与网络地址匹配,则把分组直接交付,若不匹配则进行下一步。
    • 若路由表中有特定地址为 D 的特定主机路由,则把分组传送给路由表中所指的下一跳路由器,否则执行下一步。
    • 对路由表中的每一行,用子网掩码与 D 进行按位与运算,其结果为 N。若 N 与该行的目的网络地址多个匹配,则取前缀最长的目的网络,把分组传送给该行指明的下一跳路由器。否则执行下一步。
    • 若路由表中有一个默认路由,则把分组传送给所指明的默认路由器。否则执行下一步。
    • 报告转发分组出错。

【例】路由器 R0 的路由表见下表,若进入路由器 R0 的分组的目的地址为 132.19.237.5,该分组应该被转发到( )下一跳路由器。

目的网络下一跳
132.0.0.0/8R1
132.0.0.0/11R2
132.19.232.0/22R3
0.0.0.0/0R4

A. R1

B. R2

C. R3

D. R4

【解】见下表:

目的网络子网掩码下一跳子网掩码与目的地址的按位与运算是否匹配
132.0.0.0/8255.0.0.0R1132.0.0.0
132.0.0.0/11255.224.0.0R2132.0.0.0
132.19.232.0/22255.255.252.0R3132.19.236.0x
0.0.0.0/00.0.0.0R40.0.0.0

0.0.0.0/0 为默认路由,只有路由表中的所有网络都不能和分组的目的网络匹配时才使用。有三个目的网络均匹配,则选择前缀最长的路由,所以答案为选项 B。

5.5 网络地址转换 NAT

  • 网络地址转换(NAT):通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的 IP 地址。
  • 私有 IP 地址:只用于 LAN,不用于 WAN,允许私有 IP 地址被 LAN重复使用。
  • 私有 IP 地址网段
网络类别地址范围网段个数
A10.0.0.0 ~ 10.255.255.2551 个 A 类网段
B172.16.0.0 ~ 172.31.255.25516 个 B 类网段
C192.168.0.0 ~ 192.168.255.255256 个 C 类网段
  • 专用互联网(本地互联网):采用私有 IP 地址的互联网络
  • NAT 路由器:在连接专用网和因特网的路由器上安装了 NAT 软件
  • NAT 转换表:存放了{本地 IP 地址: 端口}{全球IP 地址: 端口}的映射,将多个私有 IP 地址映射到一个全球 IP 地址

【注】将 NAT 和运输层端口号结合使用,称为网络地址与端口号转换(Network Address and Port Translation,NAPT),但一般又称为 NAT。

例 1:分析 NAT 路由器的工作流程

【例 1】假设主机 A 端口号为 30000,主机 B 端口号为 80,(1)用户主机 A 向目的主机 B 发送分组,(2)用户主机 B 向目的主机 A 发送响应分组,请分析 NAT 路由器的工作流程。

在这里插入图片描述

【解】(1)用户主机 A 向目的主机 B 发送分组的过程如下。

  • 在网络层(IP 层)的数据报:
IP 首部运输层首部应用层报文
源 IP:192.168.0.3;目的 IP:213.18.2.4源端口:30000;目的端口:80xxx
  • NAT 路由器收到 IP 数据报后,为该数据报生成一个新端口号 40001,在 NAT 转换表中新增一个表项:
WAN 端(外网)LAN 端(内网)
172.38.1.5: 40001192.168.0.3: 30000
  • 通过 NAT 转换表,改写数据报,转发到主机 B:
IP 首部运输层首部应用层报文
源 IP:172.38.1.5;目的 IP:213.18.2.4源端口:40001;目的端口:80xxx

(2)用户主机 B 向目的主机 A 发送响应分组的过程如下。

  • 在网络层(IP 层)的数据报:
IP 首部运输层首部应用层报文
源 IP:213.18.2.4;目的 IP:172.38.1.5源端口:80;目的端口:40001xxx
  • NAT 路由器收到 IP 数据报后,通过 NAT 转换表,改写数据报,转发到主机 A:
IP 首部运输层首部应用层报文
源 IP:213.18.2.4;目的 IP:192.168.0.3源端口:80;目的端口:30000xxx

例 2:假定一个 NAT 路由器的公网地址为 205.56.79.35

【例 2】假定一个 NAT 路由器的公网地址为 205.56.79.35,并且有如下表项:

转换端口源 IP 地址源端口
2056192.168.32.5621
2057192.168.32.5620
1892192.168.48.2680
2256192.168.55.10680

它收到一个源 IP 地址为 192.168.32.56,源端口为 80 的分组,其动作是( )。

A. 转换地址,将源 IP 变为 205.56.79.35,端口变为 2056,然后发送到公网

B. 添加一个新的条目,转换 IP 地址以及端口然后发送到公网

C. 不转发,丢弃该分组

D. 直接将分组转发到公网上

【解】NAT 的表项需要管理员添加,这样可以控制一个内网到外网的网络连接。题目中主机发送的分组在 NAT 表项中找不到(端口 80 是从源端口找,而不是转换端口),所以服务器就不转发该分组。选 C。

第二部分:IPv6(IP 协议版本 6)

1 IPv6 的特点

  • 更大的地址空间:IPv6 将 IPv4 的 32 比特地址空间增大到了 128 比特,在采用合理编址方法的情况下,在可预见的未来是不会用完的。
  • 扩展的地址层次结构
  • 灵活的首部格式
  • 改进的选项
  • 允许协议继续扩充
  • 支持即插即用(即自动配置)
  • 支持资源的预分配

2 IPv6 数据报

与 IPv4 相比,IPv6 数据报首部的某些字段作了以下更改:

  • 取消首部长度字段,因为首部长度已被固定为 40B
  • 取消服务类型字段
  • 取消总长度字段
  • 取消标识、标志、片偏移字段
  • 将 TTL 字段改为跳数限制字段
  • 取消协议字段
  • 取消校验和字段
  • 取消选项字段

3 IPv6 地址

  • 三种类型:单播、多播、任播
  • 冒号十六进制记法68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
  • 零压缩(只能使用一次)
    • 连续零68E6:0:0:0:0:0:0:FFFF–>68E6::FFFF
    • 左侧零0:0:0:0:0:0:128.10.2.1–>::128.10.2.1
    • 左侧零0:0:0:0:0:0:0:FFFF–>::FFFF
    • 左侧零0:0:0:0:0:0:0:0–>::

4 IPv4 向 IPv6 过渡的策略

  • 双协议栈技术
  • 隧道技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch 之 神经网络 Mnist 分类任务

文章目录一、Mnist 分类任务简介二、Mnist 数据集的读取三、 Mnist 分类任务实现1. 标签和简单网络架构2. 具体代码实现四、使用 TensorDataset 和 DataLoader 简化本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052 一、Mnist 分类任…

recyclerview中树状结构的实现,加载本地中文件夹信息

引文&#xff1a; 在项目实现中&#xff0c;对于树状图结构的分析一直无法实现正确的效果&#xff0c;结果查看别人的项目都不要适合我的应用场景&#xff0c;但是查看其实原理是差不多的&#xff0c;但是我没有看明白&#xff0c;所以一直在看这方面的东西。查阅并修改他人的代…

ADSP21489之CCES开发笔记(九)

21489评估板调试SigmaStudio&#xff0c;录音&#xff0c;算法效果对比等等&#xff0c;依此写上该文章&#xff0c;以便有兴趣的朋友参考之用。 一、硬件链路图 二、导入21489Demo程序 2.1、Demo路径&#xff1a;2.2、导入ADI的21489的Demo程序 修改相关代码 oCommConfig.n…

小白学Pytorch系列--Torch.optim API Base class(1)

小白学Pytorch系列–Torch.optim API Base class(1) torch.optim是一个实现各种优化算法的包。大多数常用的方法都已得到支持&#xff0c;而且接口足够通用&#xff0c;因此将来还可以轻松集成更复杂的方法。 如何使用优化器 使用手torch.optim您必须构造一个优化器对象&…

下载和阅读Android源码

目录一、如何下载AOSP1.全量下载2.单个下载目录结构二、如何阅读AOSP1.要阅读哪些源码2.阅读源码的顺序和方式2.1 阅读顺序2.2 阅读方式3.用什么工具来阅读3.1 下载安装Source Insight3.2 导入AOSP源码3.3查看源码三、其他一、如何下载AOSP 源码下载是我们分析源码的开始&…

ctfshow愚人杯web复现

easy_signin 题目url base64解码是face.png&#xff0c;尝试flag.txt和flag.php&#xff0c;base64加密后传入都不对&#xff0c;用index.php加密后传入&#xff0c;看源码 将后面的base64解密得到flag 被遗忘的反序列化 源码 <?php# 当前目录中有一个txt文件哦 error_r…

Unity- 游戏结束以及重启游戏

文章目录游戏结束以及重启游戏建个游戏结束页面编写委托类 游戏主角 以及 ui管理类的脚本重启游戏游戏结束以及重启游戏 思路&#xff1a;利用Canvas创建好覆盖全屏的结束页面&#xff0c;默认关闭。游戏结束时&#xff0c;玩家控制的对象发起委托&#xff0c;ui管理收下委托&…

electron+vue3全家桶+vite项目搭建【六】集成vue-i18n 国际化

文章目录注意引入1.引入依赖2.集成vue i18n3.测试代码4.封装多语言切换组件5.测试多语言切换6.优化代码注意 已发现 9.2.2版本的vue-i18n 如果使用cnpm安装&#xff0c;打包会报错&#xff0c;使用npm或者pnpm安装依赖没有问题 引入 如果需要多语言支持&#xff0c;那么最好…

【100个 Unity实用技能】 | Lua中获取当前时间戳,时间戳和时间格式相互转换、时间戳转换为多久之前

Unity 小科普 老规矩&#xff0c;先介绍一下 Unity 的科普小知识&#xff1a; Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

【AI大比拼】文心一言 VS ChatGPT-4

摘要&#xff1a;本文将对比分析两款知名的 AI 对话引擎&#xff1a;文心一言和 OpenAI 的 ChatGPT&#xff0c;通过实际案例让大家对这两款对话引擎有更深入的了解&#xff0c;以便大家选择合适的 AI 对话引擎。 亲爱的 CSDN 朋友们&#xff0c;大家好&#xff01;近年来&…

Python自动录入ERP系统数据

大家好&#xff0c;我是毕加锁。 今天给大家带来的是用Python解决Excel问题的最佳姿势 文末送书&#xff01; 文末送书&#xff01; 文末送书&#xff01; 项目总体情况 软件&#xff1a;Pycharm 环境: Python 3.7.9(考虑到客户可能会有不同操作系统&#xff0c;为了兼容性…

【小程序】django学习笔记3

今天我们来做数据库和django的关联。 根据之前的代码应该看得出来我想做一个获取访客的ip地址并计算访问次数的app&#xff0c;所以必然会用到数据库。 这里选择用的是mysql(因为免费) 不一样的是这里我们打算用django提供的orm框架对数据库进行操作。 一. 环境准备 首先安…

SLAM面试笔记(3) - 视觉SLAM

目录 1 紧耦合、松耦合的区别 &#xff08;1&#xff09;紧耦合和松耦合的区别 &#xff08;2&#xff09;紧耦合和松耦合的分类 &#xff08;3&#xff09;为什么要使用紧耦合 2 SIFT和SUFT的区别 3 视差与深度的关系 4 闭环检测常用方法 5 描述PnP算法 6 梯度下降法…

SQL基础

目录 1.库操作 2.表操作 3.表操作--修改 4.表操作 --删表 5.添加数据 管理数据 查询表中数据&#xff08;重点&#xff09; 判空条件 1.模糊条件查询 2.聚合查询&#xff08;函数&#xff09; 3.排序查询 4.分页查询 5.分组查询&#xff08;配合聚合函数用于统计&a…

C++模拟实现读写锁

文章目录一、读者写者问题二、读写锁1.读写锁的概念2.读写锁的设计(1)成员变量(2)构造函数和析构函数(3)readLock函数(4)readUnlock函数(5)writeLock函数(6)writeUnlock函数3.RWLock类代码三、测试读写锁一、读者写者问题 在编写多线程的时候&#xff0c;有一种情况是非常常见…

为什么黑客不黑/攻击赌博网站?如何入门黑客?

攻击了&#xff0c;只是你不知道而已&#xff01; 同样&#xff0c;对方也不会通知你&#xff0c;告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客&#xff0c;也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件&#xff1a;28岁小伙因赌博…

Linux 操作系统原理作业 - 行人与机动车问题

大三上学期操作系统原理这门课中&#xff0c;老师给了一道作业《行人与机动车问题》&#xff1b; 即Linux多线程下处理行人与机动车谁优先的问题&#xff0c;需要用到多线程和互斥量&#xff1b; 行人 - 机动 车问题 假设有一个路口&#xff0c;有很多行人和机动车需要通过&a…

1673_MIT 6.828 Homework xv6 lazy page allocation要求翻译

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 在计划表中看到了这样一份作业&#xff0c;做一个简单的翻译整理。原来的页面&#xff1a;Homework: xv6 lazy page allocation (mit.edu) 家庭作业&#xff1a;x…

代码版本M、RC、GA、Release等标识的区别

引言 最近听说spring framework有了重大版本调整&#xff0c;出了6.0的GA版本了 那GA是啥意思呢&#xff1f; 看了下spring 官网和代码仓库&#xff0c;除了GA&#xff0c;还有M、RC、Release等 Spring FrameworkLevel up your Java code and explore what Spring can do f…

[Java Web]element | 一个由饿了么公司开发的前端框架,让你快速构建现代化、美观的 Web 应用程序。

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Java Web ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&a…