IPv4¶
IPv4分组¶
IPv4分组的格式¶
IPv4首部的部分重要字段¶
Tip
-
IPv4 基本首部最小 20B(IHL=5),IHL 的单位是 4B
-
路由器每转发一跳:TTL 减 1,因此首部校验和需要随之更新
| 字段 | 作用 | 易错点 |
|---|---|---|
| Version | 固定为 4 | - |
| IHL(首部长度) | 4B 为单位;决定“数据从哪里开始” | 把单位当字节 |
| Total Length(总长度) | 首部+数据,单位字节;用于分片计算 | 忘了包含首部 |
| Identification(标识) | 同一原始数据报的各分片相同 | - |
| Flags(DF/MF) | DF=不允许分片;MF=后面还有分片 | MF 在最后一片为 0 |
| Fragment Offset(片偏移) | 指示该片数据在原报文中的位置 | 单位是 8B |
| TTL | 抑制环路 | “时间秒数”是误解 |
| Protocol | 指明上层:ICMP=1,TCP=6,UDP=17 | 不要与端口混淆 |
| Header Checksum | 只校验首部 | IPv6 中取消 |
Tip
实际传输过程中,IP分组(数据报)数据部分的长度实际受下一段链路的最短/最长帧长度的限制。
最大传送单元(MTU)
一个链路层数据帧能承受的最大数据量称为最大传送单元(MTU)。以太网的MTU为1500字节。
IP数据报分片¶
为什么会分片¶
不同链路层的 MTU 不同;当某段链路 MTU 小于 IPv4 数据报长度时,如果 DF=0,则路由器可以分片。
分片做题模板
给定:
-
链路 MTU
-
IPv4 首部长度 \(H\)(无选项时 \(H=20\))
-
原始数据报总长度 \(L\)
步骤:
-
每片最大数据载荷(不含首部):
-
\(D_{\max} = MTU - H\)
-
除最后一片外,每片数据长度必须是 8B 的整数倍:
-
\(D = \left\lfloor \frac{D_{\max}}{8} \right\rfloor \times 8\)
-
分片数:
-
前面若干片用 \(D\) 装满,最后一片装剩余
-
字段填写:
-
Identification:所有分片相同
-
MF:除最后一片外为 1,最后一片为 0
-
Fragment Offset:第 \(k\) 片(从 0 开始)偏移 = \(\frac{k \cdot D}{8}\)
分片与重组位置¶
-
分片:IPv4 可以在路由器发生
-
重组:只在 目的主机 发生(路由器不重组)
Warning
如果在路由转发的过程中,下一链路的MTU小于IP分组的长度,但是DF又不等于0(不允许分片),路由器会丢弃该IP分组,并向发送方回复一个ICMP包用于报告异常。
IPv4地址与NAT¶
IPv4地址¶
编址的核心:前缀 + 主机号¶
在 CIDR 时代,IPv4 地址最重要的表示是:
a.b.c.d/x(\(x\) 为网络前缀长度)
理解两件事就足够做题:
-
同一网段判断:把 IP 与掩码按位与(AND),网络号相同即同网段
-
主机数:若主机位数为 \(h=32-x\),理论主机数 \(2^h\),可用主机数通常为 \(2^h-2\)
特殊地址¶
-
网络地址:主机位全 0
-
广播地址:主机位全 1(IPv4 有广播;IPv6 没有)
-
私有地址段:
-
10.0.0.0/8 -
172.16.0.0/12 -
192.168.0.0/16
-
默认网关¶
默认网关是“本机发往外网时的第一跳路由器接口 IP”,它与“子网掩码”一起决定:
-
哪些目的在本地直达
-
哪些目的需要交给网关转发
网络地址转换¶
NAT 解决什么¶
- IPv4 地址不足:让多个内网主机共享少量公网地址
常见 NAT 形态¶
-
静态 NAT:一对一映射(消耗公网地址)
-
动态 NAT:地址池映射
-
NAPT(端口复用):多对一,通过端口区分连接(最常见)
NAT 的体系结构副作用¶
-
破坏端到端可达性:外部主动访问内网主机困难
-
某些协议/应用需要穿透:端口映射、打洞等(了解即可)
划分子网与路由聚合¶
划分子网¶
子网划分的本质:从主机位借若干位做子网号,让一个大网段变成多个更小网段。
做题最常见两种问法:
-
给定需求主机数,求最小前缀长度:
- 找到最小 \(h\) 使 \(2^h-2 \ge N\),则前缀 \(x=32-h\)
-
给定前缀,求每个子网可用主机数:
- \(h=32-x\),可用 \(2^h-2\)
子网掩码和默认网关¶
子网掩码(Subnet Mask)¶
-
掩码的本质就是前缀长度的另一种表示:前缀位全 1,主机位全 0
-
例:
/24等价于255.255.255.0
默认网关(Default Gateway)¶
-
只要目的 IP 不在本地网段,就把二层帧的目的 MAC 设置为“网关的 MAC”,交给网关继续转发
-
这里会自然连到 ARP(见后文)
无分类编址CIDR¶
-
用前缀长度表示网络规模:
/x -
转发使用最长前缀匹配(LPM):更具体的路由优先
最长前缀匹配(LPM)怎么理解¶
如果同时存在:
-
192.168.0.0/16 -
192.168.1.0/24
目的为 192.168.1.123 时应选 /24,因为它匹配位数更多、范围更小、更精确。
路由聚合¶
路由聚合(超网)的目的:减少路由表项。
常见题型:判断能否聚合/写出聚合前缀。
一个够用的判定方法:
- 若多个网络块 连续 且数量为 \(2^k\),通常可把前缀缩短 \(k\) 位进行聚合
(真正做题时,以二进制前缀共同前缀长度为准。)
网络层转发分组的过程¶
把一次“跨网段通信”拆成三步,基本就不会写错:
-
主机判断目的是否同网段(靠掩码)
-
同网段:直达
-
不同网段:交给默认网关
-
-
二层寻址(ARP)
-
直达:解析“目的主机 IP → 目的主机 MAC”
-
走网关:解析“网关接口 IP → 网关 MAC”
-
-
路由器转发
-
查表(最长前缀匹配)决定下一跳/出口
-
TTL 减 1,必要时产生 ICMP
-
重新封装下一跳链路层帧发出
-
地址解析协议¶
IP地址与硬件地址¶
-
IP 地址:端到端(跨网段)的逻辑标识,用于路由选择
-
MAC 地址:一跳范围(同一链路)的链路层标识,用于本地交付
Tip
IP 决定“走哪条路到哪张网”,MAC 决定“这一跳交给谁”。
地址解析协议¶
ARP(Address Resolution Protocol)解决的问题:
- 在同一链路内,已知对方 IPv4 地址,求对方 MAC
基本过程:
-
主机广播 ARP Request(谁是 X.X.X.X?告诉我你的 MAC)
-
目标主机单播 ARP Reply
-
双方(通常)缓存 ARP 表项(会老化)
Warning
ARP 不跨路由器传播(广播域被路由器隔离)。
动态主机配置协议¶
DHCP(Dynamic Host Configuration Protocol)解决的问题:
-
主机自动获取:IP、子网掩码、默认网关、DNS 等配置
-
典型过程:Discover → Offer → Request → Ack(DORA)
-
租约(lease)与续租概念
网际控制报文协议¶
ICMP(Internet Control Message Protocol)用于:
-
差错报告:目的不可达、超时(TTL=0)等
-
诊断查询:Echo(ping)
-
ping:ICMP Echo Request/Reply -
traceroute:利用 TTL 递增触发路由器返回 ICMP Time Exceeded,从而“探测路径上的路由器”
408 高频易错点清单¶
408 高频易错点清单
-
片偏移单位:8B
-
IPv4 重组位置:目的主机
-
TTL 语义:每跳减 1(不是秒)
-
ARP 只在本地链路:不跨路由器






