【408计算机网络|第04章·上|408-CN-04A】网络层(上):IPv4分组、地址、NAT、子网划分与CIDR

系列编号:408-CN-04A

所属科目:408计算机网络

章节名称:第四章 网络层(上篇)

检索关键词:408计网第四章、网络层、IPv4、IP分组、IP地址、NAT、子网划分、子网掩码、CIDR、路由聚合、ARP、DHCP、ICMP

前言

网络层是408计算机网络中知识密度最高、综合题比例最高的章节之一。

这一章同时包含:IPv4首部、分片、IP地址、NAT、子网划分、CIDR、最长前缀匹配、ARP、DHCP、ICMP、路由算法、RIP、OSPF、BGP、IPv6、组播、移动IP和路由器。全部塞进一篇文章,会导致篇幅过长,也不利于后续检索和复习,因此拆成两篇:

  • 上篇:网络层功能、IPv4分组、IPv4地址、NAT、子网划分、CIDR、ARP、DHCP和ICMP;

  • 下篇:路由算法、RIP、OSPF、BGP、SDN、IPv6、IP组播、移动IP和路由器。

根据2009---2026年真题考频表,网络层中最稳定的考点是:

  • 子网掩码与子网划分:出现于12个年份;

  • IPv4地址与NAT:出现于7个年份;

  • ARP、DHCP、ICMP:出现于7个年份;

  • 路由协议RIP、OSPF、BGP:出现于7个年份;

  • IPv4分组:出现于6个年份;

  • CIDR与路由聚合:出现于3个年份,并在2026年再次出现。

因此,网络层不能只背概念。必须具备三种能力:

  1. 看到IP地址和前缀长度,能立即算出网络地址、广播地址和主机范围;

  2. 看到路由表和目的IP,能执行最长前缀匹配;

  3. 看到拓扑,能判断IP地址、MAC地址、ARP目标和默认网关如何变化。


一、本篇知识框架

本篇分为九个模块:

  1. 网络层的基本功能;

  2. 数据报服务与IP协议特征;

  3. IPv4分组首部;

  4. IPv4分片与重组;

  5. IPv4地址与特殊地址;

  6. NAT与端口转换;

  7. 子网划分与子网掩码;

  8. CIDR、路由聚合与最长前缀匹配;

  9. ARP、DHCP和ICMP。

本篇最容易失分的地方有六类:

  • 把路由选择和分组转发混为一谈;

  • 分片时忘记片偏移量以8B为单位;

  • 计算主机范围时忘记网络地址和广播地址;

  • 认为目的主机不在本子网时,帧的目的MAC仍是远端主机MAC;

  • NAT只修改IP地址,却忘记NAPT还可能修改端口号和校验和;

  • 路由匹配时选择"地址看起来最接近"的表项,而不是最长前缀。


二、网络层解决什么问题

1. 网络层的位置

网络层位于数据链路层之上、传输层之下。

它接收传输层交付的报文段,将其封装成IP数据报,并通过多个异构网络和路由器,把数据报从源主机送往目的主机。

数据链路层解决的是:

相邻结点之间如何传输一帧。

网络层解决的是:

跨越多个网络和路由器,如何把分组从源主机送到目的主机。

2. 网络层的核心功能

网络层的主要功能包括:

  • 异构网络互连;

  • 路由选择;

  • 分组转发;

  • 拥塞控制;

  • IP编址;

  • 分片与重组;

  • 差错报告与网络诊断。

3. 路由选择与分组转发

这是第一组高频辨析。

3.1 路由选择

路由选择是根据网络拓扑和路由协议,计算到达各目的网络的路径,并形成路由表或转发表。

它关注的是:

应该走哪条路。

3.2 分组转发

分组转发是路由器收到一个IP数据报后,根据目的IP地址查找转发表,决定从哪个接口发出。

它关注的是:

当前这个分组应该从哪个端口出去。

简化记忆:

复制代码
路由选择:生成表
分组转发:查表并转发

4. 路由表与转发表

路由表通常由路由协议和管理员配置产生,包含较丰富的路由信息。

转发表是从路由表中提取出的、供高速转发使用的数据结构。

考试中二者经常不严格区分,但理解上应知道:

  • 路由表偏控制平面;

  • 转发表偏数据平面。

5. 网络层服务模型

Internet网络层的核心协议是IP。

IP向上提供:

无连接、尽最大努力交付的数据报服务。

无连接表示:发送数据前不建立网络层连接,每个数据报独立处理。

尽最大努力表示:IP不保证可靠交付,不保证按序,不保证不重复,也不保证时延和带宽。

可靠性通常由传输层TCP等协议补充。


三、IPv4分组首部总览

IPv4数据报由首部和数据部分组成。

最小首部长度为20B,最大首部长度为60B。

1. IPv4基本首部字段

字段 作用 高频考点
版本 指明IP版本,IPv4为4 与IPv6区分
首部长度IHL 首部包含多少个32位字 最小值5,对应20B
区分服务 服务质量相关 一般不要求位级细节
总长度 首部与数据的总字节数 16位,最大65535B
标识Identification 同一原始数据报的各分片使用相同标识 分片归组
标志Flags 控制是否允许分片、是否还有后续分片 DF与MF
片偏移 当前分片数据在原数据报数据区中的位置 单位为8B
生存时间TTL 限制数据报经过的路由器数量 每经过一个路由器减1
协议Protocol 指明上层协议 TCP=6,UDP=17,ICMP=1
首部校验和 只校验IPv4首部 路由器每跳重新计算
源IP地址 源主机网络层地址 NAT可能修改
目的IP地址 目的主机网络层地址 路由转发依据
选项与填充 可选功能与32位对齐 导致首部可变长

2. 首部长度IHL

IHL的单位不是字节,而是32位字,即4B。

例如:

复制代码
IHL = 5  → 首部长度 = 5 × 4B = 20B
IHL = 8  → 首部长度 = 8 × 4B = 32B

3. 总长度字段

总长度包括IPv4首部和数据部分。

复制代码
数据长度 = 总长度 - 首部长度

总长度字段为16位,因此IPv4数据报理论最大长度为:

复制代码
2¹⁶ - 1 = 65535B

4. TTL字段

TTL每经过一个路由器至少减1。

如果路由器把TTL减到0,则丢弃该数据报,并通常向源主机发送ICMP时间超过报文。

高频判断:

  • TTL不是在每条链路上传输一秒就减1;

  • 在现代实现中,通常按经过的路由器跳数递减;

  • 如果路径经过n台路由器,为确保到达目的主机,初始TTL至少为n+1。

5. 协议字段

协议字段指出IPv4数据部分交付给哪个上层协议。

常见值:

复制代码
ICMP:1
TCP:6
UDP:17
OSPF:89

注意:OSPF报文直接封装在IP数据报中,不使用TCP或UDP。

6. 首部校验和

IPv4首部校验和只校验首部,不校验数据部分。

由于路由器转发时会修改TTL,因此每经过一个路由器,首部校验和都需要更新。

高频陷阱:

IPv4首部校验和不能保证整个IP数据报无差错,更不能保证数据报不丢失。


四、IPv4分片与重组

1. 为什么需要分片

不同链路允许承载的最大帧长度不同。网络层数据报必须装入数据链路层帧中。

链路能够承载的最大IP数据报长度称为MTU,最大传送单元。

当IPv4数据报长度大于下一段链路的MTU时:

  • 若DF=0,允许分片;

  • 若DF=1,不允许分片,路由器丢弃数据报并报告错误。

2. DF与MF

2.1 DF:Don't Fragment
  • DF=1:禁止分片;

  • DF=0:允许分片。

2.2 MF:More Fragments
  • MF=1:后面还有分片;

  • MF=0:这是最后一个分片,或者原数据报未分片。

3. 片偏移量

片偏移表示当前分片的数据部分,在原始数据报数据部分中的起始位置。

片偏移字段的单位为8B。

复制代码
片偏移字段值 = 当前分片数据起始字节位置 / 8

因此,除最后一个分片外,各分片的数据长度通常必须是8B的整数倍。

4. 分片字段规律

同一个原始IPv4数据报产生的所有分片:

  • 标识字段相同;

  • 源IP地址相同;

  • 目的IP地址相同;

  • 协议字段相同;

  • 片偏移不同;

  • 除最后一片外,MF=1。

5. 在哪里重组

IPv4分片通常只在最终目的主机重组,中间路由器不负责重组。

原因是:

  • 不同分片可能走不同路径;

  • 路由器重组会增加状态与缓存开销;

  • 重组后下一条链路仍可能再次分片。

6. 分片计算标准步骤

已知:

  • 原始数据报总长度L;

  • 原始首部长度H;

  • 下一链路MTU为M;

  • 每个分片首部长度仍按H计算。

第一步,算原始数据长度:

复制代码
D = L - H

第二步,算每个非末片最多承载的数据长度:

复制代码
每片最大数据长度 = floor((M - H) / 8) × 8

第三步,依次划分数据。

第四步,计算每片总长度:

复制代码
分片总长度 = H + 当前分片数据长度

第五步,计算片偏移:

复制代码
片偏移 = 前面已经发送的数据字节数 / 8

7. 典型例题

某IPv4数据报总长度为4000B,首部20B,要经过MTU为1500B的链路,允许分片。

原始数据长度:

复制代码
4000 - 20 = 3980B

每个非末片最大数据长度:

复制代码
floor((1500 - 20) / 8) × 8
= floor(1480 / 8) × 8
= 1480B

分片结果:

|----|-------|-------|----|------------|
| 分片 | 数据长度 | 总长度 | MF | 片偏移 |
| 1 | 1480B | 1500B | 1 | 0 |
| 2 | 1480B | 1500B | 1 | 1480/8=185 |
| 3 | 1020B | 1040B | 0 | 2960/8=370 |

检查:

复制代码
1480 + 1480 + 1020 = 3980B

8. 高频错误

  • 用MTU直接除8,没有先减首部;

  • 把片偏移写成字节数;

  • 最后一个分片的MF仍写1;

  • 给每个分片分配不同标识字段;

  • 认为路由器必须完成重组;

  • 忽略DF=1时不能分片。


五、IPv4地址基础

IPv4地址长度为32位,通常采用点分十进制表示。

例如:

复制代码
192.168.10.25

每个十进制段对应8位二进制数,范围为0到255。

1. 网络号与主机号

IP地址由网络前缀和主机号组成。

前缀长度决定前多少位表示网络,剩余位表示主机。

例如:

复制代码
192.168.10.25/24

表示前24位是网络前缀,后8位是主机号。

2. 传统分类地址

虽然现代互联网采用CIDR,但传统A、B、C类地址仍可能以概念题形式出现。

|----|------|------|---------|
| 类别 | 首位特征 | 默认前缀 | 第一字节范围 |
| A类 | 0 | /8 | 1~126 |
| B类 | 10 | /16 | 128~191 |
| C类 | 110 | /24 | 192~223 |
| D类 | 1110 | 组播 | 224~239 |
| E类 | 1111 | 保留 | 240~255 |

127开头用于环回测试,不作为普通A类网络号分配。

3. 私有IPv4地址

私有地址不能直接在公共Internet中路由,通常配合NAT使用。

复制代码
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

4. 常见特殊地址

4.1 0.0.0.0

可以表示"本网络上的本主机",也常用作尚未获得地址的主机发送报文时的源地址。

DHCP客户端初次请求地址时,常使用:

复制代码
源IP:0.0.0.0
目的IP:255.255.255.255
4.2 255.255.255.255

受限广播地址,只在本地网络中广播,路由器通常不转发。

4.3 127.0.0.0/8

环回地址范围,最常见的是:

复制代码
127.0.0.1

发送到环回地址的数据不会进入物理网络,而是在本机协议栈内返回。

4.4 网络地址

主机位全0,表示该网络本身。

4.5 直接广播地址

主机位全1,表示该网络中的所有主机。

5. IP地址属于接口

严格来说,IP地址分配给网络接口,而不是抽象地分配给整台设备。

一台路由器通常有多个接口,每个接口属于不同网络,因此每个接口具有不同IP地址。


六、NAT与NAPT

1. NAT的目的

NAT即网络地址转换,通常部署在内部网络与Internet边界的路由器上。

它主要用于:

  • 缓解IPv4地址不足;

  • 允许内部私有地址访问Internet;

  • 隐藏内部地址结构。

2. 基本NAT

基本NAT主要转换IP地址。

内部主机发送数据时,边界路由器把源私有IP地址替换为公网IP地址,并记录映射。

返回数据到达后,再把目的公网IP地址还原为内部主机地址。

3. NAPT或PAT

现实中更常见的是网络地址与端口转换。

多个内部主机可以共享同一个公网IP地址,通过不同端口号区分连接。

映射表可能类似:

|-------------|------|-------------|-------|
| 内部地址 | 内部端口 | 公网地址 | 公网端口 |
| 192.168.1.5 | 3000 | 203.0.113.8 | 50001 |
| 192.168.1.6 | 3000 | 203.0.113.8 | 50002 |

4. NAT修改哪些字段

出站转换时通常可能修改:

  • IP首部源IP地址;

  • TCP或UDP首部源端口号;

  • IP首部校验和;

  • TCP或UDP校验和。

入站转换时则修改目的地址和目的端口。

为什么校验和也要变化?

因为TCP和UDP校验和会计算包含源IP和目的IP的伪首部,地址改变后校验和必须更新。

5. NAT不会修改什么

普通源NAT通常不会修改:

  • 目的IP地址;

  • 目的端口号;

  • 应用层数据长度;

  • UDP总长度。

题目必须结合具体转换方向判断,不能机械背"只改源字段"。

6. NAT的局限

  • 破坏端到端透明性;

  • 外部主机主动连接内部主机较困难;

  • 某些在应用层携带IP地址的协议需要额外处理;

  • 增加边界设备状态维护。


七、子网掩码与子网划分

这是网络层考频最高的模块。

1. 子网掩码

子网掩码中:

  • 网络前缀位为1;

  • 主机位为0。

例如:

复制代码
/24 = 255.255.255.0
/20 = 255.255.240.0
/27 = 255.255.255.224

2. 前缀长度与掩码快速转换

常用尾字节:

|--------|----------|-----|
| 前缀增加位数 | 二进制 | 十进制 |
| 1 | 10000000 | 128 |
| 2 | 11000000 | 192 |
| 3 | 11100000 | 224 |
| 4 | 11110000 | 240 |
| 5 | 11111000 | 248 |
| 6 | 11111100 | 252 |
| 7 | 11111110 | 254 |
| 8 | 11111111 | 255 |

3. 求网络地址

网络地址等于:

复制代码
IP地址 AND 子网掩码

示例:

复制代码
IP:168.16.84.24/20
掩码:255.255.240.0

第三字节:

复制代码
84  = 01010100
240 = 11110000
AND = 01010000 = 80

因此网络地址为:

复制代码
168.16.80.0

4. 求广播地址

广播地址等于:

网络前缀不变,主机位全部置1。

对于168.16.84.24/20,网络块第三字节范围为80到95,因此广播地址为:

复制代码
168.16.95.255

5. 求可分配主机范围

复制代码
最小可分配地址 = 网络地址 + 1
最大可分配地址 = 广播地址 - 1

本例:

复制代码
168.16.80.1 ~ 168.16.95.254

6. 块大小法

当掩码某字节不是255或0时,可以使用块大小:

复制代码
块大小 = 256 - 掩码对应字节

例如/20的第三字节掩码为240:

复制代码
块大小 = 256 - 240 = 16

网络号第三字节只能是:

复制代码
0, 16, 32, 48, 64, 80, 96, ...

84落在80到95,因此网络地址第三字节为80,广播地址第三字节为95。

7. 主机数量

若主机号有h位,则地址总数为:

复制代码

普通IPv4子网可分配主机地址数通常为:

复制代码
2ʰ - 2

减去网络地址和广播地址。

常用结果:

|-----|-----|------|----------|
| 前缀 | 主机位 | 地址总数 | 常规可分配主机数 |
| /24 | 8 | 256 | 254 |
| /25 | 7 | 128 | 126 |
| /26 | 6 | 64 | 62 |
| /27 | 5 | 32 | 30 |
| /28 | 4 | 16 | 14 |
| /29 | 3 | 8 | 6 |
| /30 | 2 | 4 | 2 |

8. 子网数量

从原主机号中借用s位作为子网号,则可形成的子网数量通常为:

复制代码

现代CIDR环境中,全0子网和全1子网可以使用。

9. 根据主机需求选择前缀长度

如果一个子网需要至少N个可分配主机地址,应找到最小h,使:

复制代码
2ʰ - 2 ≥ N

然后:

复制代码
前缀长度 = 32 - h

示例:需要至少120台主机。

复制代码
2⁶ - 2 = 62,不够
2⁷ - 2 = 126,足够

因此需要7位主机号,前缀长度为:

复制代码
32 - 7 = /25

10. VLSM分配原则

可变长子网掩码允许不同子网使用不同前缀长度。

分配时采用:

先大后小。

标准流程:

  1. 按主机需求从大到小排序;

  2. 为最大子网选择最短但足够的前缀;

  3. 从地址块起始位置按边界分配;

  4. 再分配较小子网;

  5. 检查各子网不重叠。

11. 高频陷阱

  • 把/20误写成255.255.20.0;

  • 使用十进制直觉相减,而不做按位与;

  • 忘记减去网络地址和广播地址;

  • 子网地址没有落在块大小边界;

  • VLSM先分配小子网,导致大子网无法连续分配;

  • 把默认网关必须设置为最小可用地址当成协议规定。实际上网关可以使用子网内任意合法接口地址,只是常用第一个或最后一个可用地址。


八、CIDR与路由聚合

1. CIDR的核心思想

CIDR取消传统A、B、C类网络的固定边界,使用:

复制代码
网络前缀/前缀长度

表示地址块。

例如:

复制代码
192.168.0.0/20

2. CIDR地址块大小

前缀长度为n时,地址块包含:

复制代码
2^(32-n) 个地址

例如:

复制代码
/20 → 2¹² = 4096个地址

3. 路由聚合

路由聚合把多个连续、等大小、前缀相邻的网络合并成一个更短的前缀。

目的:

  • 减少路由表项;

  • 降低路由通告规模;

  • 提高路由查找效率。

4. 聚合标准步骤

假设需要聚合:

复制代码
192.168.8.0/24
192.168.9.0/24
192.168.10.0/24
192.168.11.0/24

第三字节二进制:

复制代码
8  = 00001000
9  = 00001001
10 = 00001010
11 = 00001011

共同前缀为前6位:

复制代码
000010

原来前16位相同,再加第三字节共同6位,共22位。

聚合结果:

复制代码
192.168.8.0/22

5. 聚合的两个条件

多个网络能完整聚合,通常要求:

  1. 地址块连续;

  2. 起始地址满足聚合块边界。

四个/24聚合成/22时,起始第三字节必须是4的整数倍,例如0、4、8、12。

6. 最长前缀匹配

当多个路由表项都能匹配目的IP地址时,选择前缀最长的表项。

示例路由表:

|-------------|----|
| 目的网络 | 接口 |
| 10.0.0.0/8 | E0 |
| 10.1.0.0/16 | E1 |
| 10.1.2.0/24 | E2 |
| 0.0.0.0/0 | E3 |

目的地址为10.1.2.9时,前三项都能匹配,但/24最长,因此从E2转发。

7. 默认路由

默认路由写作:

复制代码
0.0.0.0/0

它的前缀长度最短,只有当不存在更具体的匹配时才会使用。

8. 主机路由

精确匹配单个IPv4地址的路由写作:

复制代码
目的地址/32

/32是最长、最具体的IPv4前缀。

9. 最长前缀匹配标准流程

  1. 把目的IP与每个表项掩码按位与;

  2. 判断结果是否等于表项网络前缀;

  3. 找出所有匹配项;

  4. 选择前缀长度最大的项;

  5. 若无普通表项匹配,使用默认路由;

  6. 若连默认路由也没有,则丢弃并可能发送ICMP目的不可达。


九、ARP协议

1. ARP解决什么问题

IP负责网络层寻址,但局域网中的实际帧转发需要MAC地址。

ARP的功能是:

根据已知IPv4地址解析对应的MAC地址。

注意方向:

复制代码
IP地址 → MAC地址

2. ARP请求与应答

典型过程:

  1. 主机查询ARP缓存;

  2. 如果没有目标映射,发送ARP请求;

  3. ARP请求在本局域网广播;

  4. 拥有目标IP地址的设备返回ARP应答;

  5. ARP应答通常单播;

  6. 发送方把映射写入ARP缓存。

3. 同一子网通信

若目的IP与本机在同一子网,发送方ARP查询的是:

目的主机的MAC地址。

以太网帧:

复制代码
目的MAC = 目的主机MAC
目的IP  = 目的主机IP

4. 跨子网通信

若目的IP不在本子网,发送方不会ARP查询远端主机MAC,而是查询默认网关在本链路接口的MAC地址。

第一跳以太网帧:

复制代码
目的MAC = 默认网关MAC
目的IP  = 远端主机IP

这是网络综合题最常见的陷阱。

5. IP地址与MAC地址在转发过程中的变化

普通路由转发且不考虑NAT时:

  • 源IP和目的IP通常端到端保持不变;

  • 每经过一段链路,源MAC和目的MAC都会重新封装;

  • TTL每经过一台路由器减1;

  • IPv4首部校验和随TTL变化而更新。

6. ARP广播能否跨路由器

不能。

ARP请求是本链路广播,路由器不会把普通ARP广播转发到其他网络。

因此ARP只解析下一跳在当前链路上的MAC地址。

7. 高频错误

  • 认为ARP根据MAC查询IP;

  • 目的主机在远端网络时查询远端MAC;

  • 认为IP地址每经过路由器都会改变;

  • 认为MAC地址端到端不变;

  • 认为ARP请求可以跨越路由器广播。


十、DHCP协议

1. DHCP的功能

DHCP用于为主机动态配置网络参数,包括:

  • IPv4地址;

  • 子网掩码;

  • 默认网关;

  • DNS服务器地址;

  • 租约时间。

DHCP基于UDP:

复制代码
服务器端口:67
客户端口:68

2. DHCP四报文过程

典型过程可记为DORA:

复制代码
Discover → Offer → Request → ACK
2.1 DHCPDISCOVER

客户端寻找DHCP服务器。

新主机还没有IP地址,常使用:

复制代码
源IP:0.0.0.0
目的IP:255.255.255.255
2.2 DHCPOFFER

服务器提供可用地址和其他配置参数。

2.3 DHCPREQUEST

客户端选择某个服务器的方案,并广播请求,通知其他服务器本次选择结果。

在初始地址分配阶段,常见:

复制代码
源IP:0.0.0.0
目的IP:255.255.255.255

具体题目若已进入续租阶段,地址形式可能不同,必须根据阶段判断。

2.4 DHCPACK

服务器确认租约,客户端正式使用地址。

3. DHCP为什么经常广播

新主机最开始:

  • 不知道DHCP服务器地址;

  • 没有可用的本机IP;

  • 可能不知道自身所在子网的完整配置。

因此初始发现和请求通常需要广播。

4. DHCP中继代理

广播通常不能跨路由器。

当DHCP服务器不在客户端本地网络时,可以由路由器或专用设备充当DHCP中继代理,将客户端请求转发给远端服务器。

5. 高频陷阱

  • 把DHCP端口写反;

  • 认为DHCP建立TCP连接;

  • 新主机初始源IP写成已经分配的地址;

  • 忽略DHCP地址是有租约的;

  • 认为路由器会直接转发所有DHCP广播。


十一、ICMP协议

1. ICMP的作用

ICMP用于IP层的差错报告和网络诊断。

ICMP报文封装在IP数据报中,因此:

ICMP属于网络层协议,不是传输层协议。

2. 常见ICMP差错报告

常见类型包括:

  • 目的不可达;

  • 时间超过;

  • 参数问题;

  • 重定向。

传统教材还会介绍源点抑制,但现代网络中已不再推荐使用。408旧题可能仍按教材概念考查。

3. 目的不可达

出现以下情况时可能发送目的不可达:

  • 找不到到达目的网络的路由;

  • 目的端口不可达;

  • 数据报需要分片但DF=1;

  • 目的主机不可达。

4. 时间超过

路由器把TTL减到0时,丢弃数据报并向源主机发送ICMP时间超过报文。

分片重组计时器超时,也可能产生时间超过报文。

5. ICMP重定向

路由器发现主机可以通过更合适的下一跳发送数据时,可向主机发送重定向信息。

6. Ping

Ping通常使用ICMP回送请求和回送应答,测试:

  • 目的主机是否可达;

  • 往返时延;

  • 是否存在丢包。

Ping不使用TCP或UDP端口。

7. Traceroute

Traceroute利用TTL逐步增大:

  1. 先发送TTL=1的数据报;

  2. 第一台路由器把TTL减到0,返回ICMP时间超过;

  3. 再发送TTL=2的数据报;

  4. 第二台路由器返回ICMP时间超过;

  5. 依次发现路径上的路由器。

不同系统的Traceroute实现可能使用UDP、ICMP或其他探测报文,但核心机制是TTL与ICMP时间超过。

8. 不应发送ICMP差错报告的典型情况

为避免错误报文无限嵌套或广播风暴,通常不会对以下内容发送ICMP差错报告:

  • ICMP差错报告报文本身;

  • 目的地址为广播或组播的数据报;

  • 非首片的IPv4分片;

  • 源地址非法的数据报。

9. ICMP不能保证可靠交付

ICMP只是报告某些问题,并不负责:

  • 重传丢失数据;

  • 修复路由;

  • 确保数据报最终到达;

  • 提供端到端可靠性。


十二、网络层综合封装过程

假设主机H1访问不同子网中的Web服务器S。

1. H1判断目的地址是否同网段

H1计算:

复制代码
本机IP AND 本机掩码
目的IP AND 本机掩码

若结果不同,说明目的主机不在本子网,应交给默认网关。

2. 解析默认网关MAC

如果ARP缓存中没有默认网关映射,H1广播ARP请求,获得网关MAC。

3. 构造第一跳以太网帧

复制代码
源MAC:H1的MAC
目的MAC:默认网关MAC
源IP:H1的IP
目的IP:服务器S的IP

4. 路由器转发

路由器收到帧后:

  1. 去掉数据链路层首部和尾部;

  2. 检查IPv4首部;

  3. TTL减1;

  4. 更新IPv4首部校验和;

  5. 根据目的IP最长前缀匹配;

  6. 确定下一跳和输出接口;

  7. 必要时通过ARP获得下一跳MAC;

  8. 使用新的MAC地址重新封装帧。

5. 端到端与逐跳字段

|-----------|---------------|
| 字段 | 普通路由转发过程中是否变化 |
| 源IP | 通常不变,NAT例外 |
| 目的IP | 通常不变,目的NAT例外 |
| TTL | 每经过一台路由器减1 |
| IPv4首部校验和 | 每跳更新 |
| 源MAC | 每段链路重新封装 |
| 目的MAC | 每段链路重新封装 |


十三、真题常见命题方式

1. IP首部字段判断

常考:

  • 哪个字段用于限制路由跳数;

  • 哪个字段区分TCP、UDP和ICMP;

  • 首部校验和覆盖哪些内容;

  • 路由器转发时修改哪些字段;

  • IPv4首部最小长度和最大长度。

2. 分片计算

常考:

  • 给定MTU,求分片数量;

  • 求各分片总长度、MF和片偏移;

  • 判断DF=1时如何处理;

  • 根据分片字段还原原始数据长度。

3. 子网计算

常考:

  • 求网络地址和广播地址;

  • 求最小和最大可分配地址;

  • 求子网数量和主机数量;

  • 根据主机需求选择前缀;

  • VLSM地址规划。

4. CIDR和路由表

常考:

  • 聚合多个连续网络;

  • 根据目的IP执行最长前缀匹配;

  • 区分直连路由、主机路由和默认路由;

  • 在综合题中填写目的网络、下一跳和接口。

5. NAT

常考:

  • 转发后源IP地址是什么;

  • NAPT修改哪些UDP或TCP字段;

  • 多台内网主机如何共享一个公网地址;

  • 判断校验和是否需要更新。

6. ARP、DHCP、ICMP

常考:

  • ARP解析的是谁的MAC;

  • 跨子网时帧目的MAC是什么;

  • DHCPREQUEST的源和目的IP;

  • Ping和Traceroute使用哪些机制;

  • 路由器丢弃数据报时可能发送哪种ICMP报文。


十四、做题标准流程

1. 子网题

复制代码
写前缀 → 写掩码 → 按位与求网络地址
→ 主机位全1求广播地址
→ 网络+1和广播-1求主机范围

2. 路由匹配题

复制代码
逐项匹配 → 列出所有可匹配项
→ 选择前缀最长项 → 确定下一跳和接口

3. 分片题

复制代码
总长度减首部 → MTU减首部
→ 非末片数据长度向下取8的倍数
→ 算MF与片偏移 → 检查数据总和

4. 跨网段通信题

复制代码
先判断是否同子网
→ 同网段ARP目的主机
→ 异网段ARP默认网关
→ IP端到端、MAC逐跳变化

5. NAT题

复制代码
确定方向 → 判断改源还是改目的
→ 判断是否修改端口
→ 检查IP和传输层校验和

十五、高频错误清单

  1. 把网络层可靠性说成由IP保证;

  2. 把路由选择和分组转发混为一谈;

  3. IHL直接当作字节数;

  4. 认为IPv4校验和覆盖数据部分;

  5. TTL只在发生拥塞时减少;

  6. 分片时不减首部长度;

  7. 片偏移使用字节为单位;

  8. 中间路由器负责重组;

  9. 私有地址可以直接在公网路由;

  10. 子网主机数忘记减2;

  11. /20写成255.255.20.0;

  12. 聚合时只看地址连续,不检查块边界;

  13. 路由表匹配选择掩码最短项;

  14. 默认路由优先级最高;

  15. 跨子网时查询远端主机MAC;

  16. 认为源IP和目的IP每跳变化;

  17. 认为NAT只改IP,不改校验和;

  18. DHCP使用TCP;

  19. ARP请求可跨路由器传播;

  20. ICMP负责重传并保证可靠性。


十六、本篇必须达到的掌握标准

完成本篇后,应能独立回答:

  • 网络层的路由选择和分组转发有什么区别;

  • IP为什么是无连接、尽最大努力服务;

  • IPv4首部最小长度、总长度和IHL如何计算;

  • TTL、协议字段和首部校验和分别做什么;

  • IPv4分片中DF、MF、标识和片偏移如何设置;

  • 给定MTU能否完整计算所有分片;

  • 私有IPv4地址范围是什么;

  • NAT和NAPT分别修改哪些字段;

  • 给定任意IPv4地址和前缀能否求网络地址、广播地址和主机范围;

  • 如何根据主机需求选择前缀长度;

  • 如何执行CIDR路由聚合;

  • 最长前缀匹配如何选择路由;

  • 同网段与跨网段通信时ARP查询对象有何不同;

  • DHCP的DORA过程和端口是什么;

  • Ping和Traceroute如何利用ICMP。

如果上述问题中有三个以上不能立即回答,说明本篇还未达到压力测试标准。


十七、章节压力测试范围

后续压力测试将重点覆盖:

  1. IPv4首部长度与数据长度计算;

  2. 多分片的总长度、MF和片偏移;

  3. 特殊IPv4地址辨析;

  4. NAT与NAPT字段变化;

  5. /20、/22、/27等非整字节掩码;

  6. 根据主机需求进行VLSM规划;

  7. CIDR聚合与聚合边界;

  8. 最长前缀匹配;

  9. 同网段和跨网段ARP过程;

  10. DHCP初始分配和续租阶段;

  11. ICMP、Ping和Traceroute;

  12. IP地址、MAC地址和TTL在多跳转发中的变化。


结语

网络层上篇的主线可以压缩成三句话:

IPv4首部描述一个数据报如何被识别、转发和分片。

子网掩码与CIDR决定一个地址属于哪个网络以及路由表如何匹配。

ARP、DHCP和ICMP负责地址解析、自动配置与差错诊断。

做网络层题时,建议固定使用以下顺序:

复制代码
先看前缀 → 再判网段 → 再找下一跳
→ 再确定MAC → 最后检查TTL、分片和校验和

下一篇继续整理:

【408计算机网络|第04章·下|408-CN-04B】网络层(下):路由算法、RIP、OSPF、BGP、IPv6与路由器

相关推荐
xqqxqxxq3 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
泡沫冰@3 小时前
上章节中文件的讲解
前端·网络·nginx
三言老师4 小时前
CentOS7.9:Redis‑Cluster集群部署结构化实战教程
linux·运维·服务器·数据库
technology_x6 小时前
2026年财务报表分析软件测评:兼容与安全解析
java·服务器·前端
大鱼>6 小时前
eBPF内核编程:从TC到XDP的全栈可观测性
linux·服务器·php
Shell运维手记6 小时前
ARP 协议超详细讲解(适合网工考试 / 运维理解)
运维·网络·网络协议·智能路由器
西安景驰电子6 小时前
PCIe 授时卡原理及应用
运维·服务器·windows·单片机·嵌入式硬件·fpga开发
优化Henry7 小时前
学习笔记之VoNR语音业务注册流程
网络·笔记·学习·5g·信息与通信
ShineWinsu8 小时前
对于Linux:HTTP中cookie、session的解析
linux·网络·c++·网络协议·http·cookie·session
huainingning8 小时前
华三瘦AP切换为胖AP并配置无线功能
运维·网络·网络协议·tcp/ip