外观
把 IP 数据包剥开看:这 20 个字节的首部到底写了什么?
阶段 3 · 网络层 · 第 16 课
在第 8 课中,我们看到以太网帧的载荷(Payload)里包裹着一个网络层的数据单元。当这个以太网帧到达路由器,路由器脱掉外层的以太网皮,露出来的核心主角就是——IPv4 地址 数据报(IP Packet)。
一个标准的 IPv4 首部固定长度是 20 个字节(在有可选选项时可扩展至最多 60 字节)。为了让全球路由器以每秒几亿包的高速在硅片硬件里处理它,这 20 个字节被精巧地按 32 位(4 字节)一行 排成 5 行。
这 20 个字节里,究竟藏着哪些关乎寻址、安全、防环和分片的绝密情报?
学完本课后,你将能够:
- 画出 IPv4 首部的 5 行经典网格图,说出每一行包含哪些关键字段。
- 解释为什么 生存时间(TTL) 每经过一台路由器必须减 1,以及归零后触发的 ICMP 超时机制。
- 识别协议号字段(Protocol)的常见数值:ICMP = 1、TCP = 6、UDP = 17、OSPF = 89。
1. 逐行透视:5 行首部的 14 个核心字段
请跟着上图,从第 1 行到第 5 行逐行拆解:
第一行:基本规格与报文长度
- 版本(Version,4 bit):标识 IP 协议版本。对于 IPv4,这个字段的值固定是二进制
0100(十进制 4);如果是 IPv6,这里是0110(十进制 6)。 - 首部长度(IHL,Internet Header Length,4 bit):表示整个 IP 首部有多少个 32 位字(即 4 字节单位)。
- 标准无可选选项时,首部是 20 字节,因此 IHL 的值是
(二进制 0101)。 - IHL 最大能表示 15,所以 IP 首部最大长度是
。
- 标准无可选选项时,首部是 20 字节,因此 IHL 的值是
- 服务类型(ToS / DSCP,8 bit):用于 服务质量(QoS) 调度。网络工程师可以通过在此处打上不同的标记,让路由器在网络拥塞时优先转发语音、视频流量,普通下载流量靠后排队。
- 总长度(Total Length,16 bit):整个 IP 报文(首部 + 数据载荷)的总字节数。
- 16 位最大能表示
。
- 16 位最大能表示
第二行:分片与重组三剑客(遭遇小 MTU 时的救生圈)
当 IP 报文太大、超过物理链路 MTU 时,需要将其拆成多个碎片(分片):
- 标识符(Identification,16 bit):发送端每产生一个 IP 报文就分配一个唯一 ID。如果该报文被拆成了 3 个分片,这 3 个分片会打上完全相同的 ID,方便最终目的地把它们认领重组在一起。
- 标志(Flags,3 bit):
- 最低位 MF(More Fragments,更多分片):
表示“后面还有后续分片”; 表示“我是最后一个分片或唯一分片”。 - 中间位 DF(Don't Fragment,禁止分片):
表示“严禁分片!如果路由器发现我超长,请直接把我扔掉并向我报错”; 表示“允许路由器对我分片”。
- 最低位 MF(More Fragments,更多分片):
- 片偏移(Fragment Offset,13 bit):当前分片的数据载荷在原始未拆分大报文中的相对起始位置。核心细节:必须以 8 个字节为计算单位!
第三行:生命控制、协议对接与防伪
- 生存时间(TTL)(Time to Live,生存时间,8 bit):全书最重要的防环字段!
- 发送端赋予一个初始值(如 64、128 或 255)。
- 报文每经过一台路由器转发,路由器硬件必须将 TTL 强制减 1!
- 如果网络配置错误导致路由成环,报文在圈子里每绕一圈 TTL 就减 1;一旦减到 0,路由器立刻将该报文就地处决(扔掉),并回发 ICMP 超时通知,彻底杜绝了三层环路永远死循环的隐患!
- 协议号(Protocol,8 bit):告诉操作系统的网络栈,解开 IP 头后,把里面的载荷交给哪个传输层或上层协议处理。
1互联网控制报文协议(ICMP)(网络层控制与 ping) 6TCP(可靠传输,传输层) 17UDP(轻量传输,传输层) 89OSPF(动态路由协议,直接封装在 IP 里)
- 首部校验和(Header Checksum,16 bit):仅用于校验 IP 首部本身在传输中是否发生比特翻转。每经过一台路由器因为 TTL 被减 1,校验和必须在每一跳由路由器重新计算更新!
第四行与第五行:端到端寻址的灯塔
- 源 IP 地址(Source IP Address,32 bit / 4 字节):最初发出这个报文的源电脑或服务器 IP。
- 目的 IP 地址(Destination IP Address,32 bit / 4 字节):这个报文最终要送达的目的电脑或服务器 IP。
- 在无 NAT 的经典网络中,无论经过多少台路由器,源 IP 和目的 IP 全程保持不变!
2. 小结与下一步
- 首部尺寸:IPv4 固定首部占 20 字节,IHL 取值为 5。
- 三大关键机制:
- 分片重组:靠标识符(ID)、标志位(DF/MF)和以 8 字节为单位的片偏移(Offset)完成。
- 三层防环:靠 生存时间(TTL) 逐跳减 1,归零丢弃,保障网络自愈。
- 上层指引:靠 Protocol 协议号 精准交付(ICMP=1, TCP=6, UDP=17, OSPF=89)。
路由器拿到这个 IP 数据包,看到上面写着 目的 IP: 192.168.1.100。路由器内部到底根据怎样一张表格来选择从哪根网线转发出去?当有多条路由都能通往目的地时,路由器听谁的?下一课我们走进路由器的核心灵魂——路由表与最长前缀匹配。