系列编号: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年再次出现。
因此,网络层不能只背概念。必须具备三种能力:
-
看到IP地址和前缀长度,能立即算出网络地址、广播地址和主机范围;
-
看到路由表和目的IP,能执行最长前缀匹配;
-
看到拓扑,能判断IP地址、MAC地址、ARP目标和默认网关如何变化。
一、本篇知识框架
本篇分为九个模块:
-
网络层的基本功能;
-
数据报服务与IP协议特征;
-
IPv4分组首部;
-
IPv4分片与重组;
-
IPv4地址与特殊地址;
-
NAT与端口转换;
-
子网划分与子网掩码;
-
CIDR、路由聚合与最长前缀匹配;
-
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位,则地址总数为:
2ʰ
普通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位作为子网号,则可形成的子网数量通常为:
2ˢ
现代CIDR环境中,全0子网和全1子网可以使用。
9. 根据主机需求选择前缀长度
如果一个子网需要至少N个可分配主机地址,应找到最小h,使:
2ʰ - 2 ≥ N
然后:
前缀长度 = 32 - h
示例:需要至少120台主机。
2⁶ - 2 = 62,不够
2⁷ - 2 = 126,足够
因此需要7位主机号,前缀长度为:
32 - 7 = /25
10. VLSM分配原则
可变长子网掩码允许不同子网使用不同前缀长度。
分配时采用:
先大后小。
标准流程:
-
按主机需求从大到小排序;
-
为最大子网选择最短但足够的前缀;
-
从地址块起始位置按边界分配;
-
再分配较小子网;
-
检查各子网不重叠。
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. 聚合的两个条件
多个网络能完整聚合,通常要求:
-
地址块连续;
-
起始地址满足聚合块边界。
四个/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. 最长前缀匹配标准流程
-
把目的IP与每个表项掩码按位与;
-
判断结果是否等于表项网络前缀;
-
找出所有匹配项;
-
选择前缀长度最大的项;
-
若无普通表项匹配,使用默认路由;
-
若连默认路由也没有,则丢弃并可能发送ICMP目的不可达。
九、ARP协议
1. ARP解决什么问题
IP负责网络层寻址,但局域网中的实际帧转发需要MAC地址。
ARP的功能是:
根据已知IPv4地址解析对应的MAC地址。
注意方向:
IP地址 → MAC地址
2. ARP请求与应答
典型过程:
-
主机查询ARP缓存;
-
如果没有目标映射,发送ARP请求;
-
ARP请求在本局域网广播;
-
拥有目标IP地址的设备返回ARP应答;
-
ARP应答通常单播;
-
发送方把映射写入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逐步增大:
-
先发送TTL=1的数据报;
-
第一台路由器把TTL减到0,返回ICMP时间超过;
-
再发送TTL=2的数据报;
-
第二台路由器返回ICMP时间超过;
-
依次发现路径上的路由器。
不同系统的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. 路由器转发
路由器收到帧后:
-
去掉数据链路层首部和尾部;
-
检查IPv4首部;
-
TTL减1;
-
更新IPv4首部校验和;
-
根据目的IP最长前缀匹配;
-
确定下一跳和输出接口;
-
必要时通过ARP获得下一跳MAC;
-
使用新的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和传输层校验和
十五、高频错误清单
-
把网络层可靠性说成由IP保证;
-
把路由选择和分组转发混为一谈;
-
IHL直接当作字节数;
-
认为IPv4校验和覆盖数据部分;
-
TTL只在发生拥塞时减少;
-
分片时不减首部长度;
-
片偏移使用字节为单位;
-
中间路由器负责重组;
-
私有地址可以直接在公网路由;
-
子网主机数忘记减2;
-
/20写成255.255.20.0;
-
聚合时只看地址连续,不检查块边界;
-
路由表匹配选择掩码最短项;
-
默认路由优先级最高;
-
跨子网时查询远端主机MAC;
-
认为源IP和目的IP每跳变化;
-
认为NAT只改IP,不改校验和;
-
DHCP使用TCP;
-
ARP请求可跨路由器传播;
-
ICMP负责重传并保证可靠性。
十六、本篇必须达到的掌握标准
完成本篇后,应能独立回答:
-
网络层的路由选择和分组转发有什么区别;
-
IP为什么是无连接、尽最大努力服务;
-
IPv4首部最小长度、总长度和IHL如何计算;
-
TTL、协议字段和首部校验和分别做什么;
-
IPv4分片中DF、MF、标识和片偏移如何设置;
-
给定MTU能否完整计算所有分片;
-
私有IPv4地址范围是什么;
-
NAT和NAPT分别修改哪些字段;
-
给定任意IPv4地址和前缀能否求网络地址、广播地址和主机范围;
-
如何根据主机需求选择前缀长度;
-
如何执行CIDR路由聚合;
-
最长前缀匹配如何选择路由;
-
同网段与跨网段通信时ARP查询对象有何不同;
-
DHCP的DORA过程和端口是什么;
-
Ping和Traceroute如何利用ICMP。
如果上述问题中有三个以上不能立即回答,说明本篇还未达到压力测试标准。
十七、章节压力测试范围
后续压力测试将重点覆盖:
-
IPv4首部长度与数据长度计算;
-
多分片的总长度、MF和片偏移;
-
特殊IPv4地址辨析;
-
NAT与NAPT字段变化;
-
/20、/22、/27等非整字节掩码;
-
根据主机需求进行VLSM规划;
-
CIDR聚合与聚合边界;
-
最长前缀匹配;
-
同网段和跨网段ARP过程;
-
DHCP初始分配和续租阶段;
-
ICMP、Ping和Traceroute;
-
IP地址、MAC地址和TTL在多跳转发中的变化。
结语
网络层上篇的主线可以压缩成三句话:
IPv4首部描述一个数据报如何被识别、转发和分片。
子网掩码与CIDR决定一个地址属于哪个网络以及路由表如何匹配。
ARP、DHCP和ICMP负责地址解析、自动配置与差错诊断。
做网络层题时,建议固定使用以下顺序:
先看前缀 → 再判网段 → 再找下一跳
→ 再确定MAC → 最后检查TTL、分片和校验和
下一篇继续整理:
【408计算机网络|第04章·下|408-CN-04B】网络层(下):路由算法、RIP、OSPF、BGP、IPv6与路由器