← 返回题目列表

IPv4 报文头有哪些关键字段?TTL、协议号和头部校验和有什么用?

高频 中等 第 14 / 26 题 更新于 2026/07/31
IPv4IP头TTL协议号校验和

简化版

IPv4 报文头最核心的字段包括:源 IP、目的 IP、TTL、Protocol、Total Length、Identification、Flags、Fragment Offset、Header Checksum 等。面试回答时要抓住三点:目的 IP 决定报文往哪里转发,TTL 防止报文在网络里无限循环,Protocol 告诉接收端上层交给 TCP、UDP 还是 ICMP。IPv4 头部校验和只校验 IP 头,不校验数据部分;每经过一个路由器 TTL 会减 1,所以头部校验和也要重新计算。

详细版

IPv4 头部最小 20 字节,最大 60 字节。常见字段可以按功能分组:

字段作用
VersionIP 版本,IPv4 为 4
IHL头部长度,单位是 4 字节
Total LengthIP 报文总长度,包含头部和数据
Identification / Flags / Fragment Offset分片与重组相关
TTL生存时间,每过一跳减 1,减到 0 丢弃
Protocol上层协议号,例如 TCP=6、UDP=17、ICMP=1
Header ChecksumIPv4 头部校验和
Source IP / Destination IP源地址和目的地址

TTL 的作用不是精确表示时间,而是限制最多经过多少跳;Protocol 字段用于解封装,例如目的主机看到 Protocol=6 就把负载交给 TCP;头部校验和只保护 IPv4 头部,因为链路层和传输层各自还有校验机制。

完整版教学

一、IPv4 头部解决的是什么问题

网络层的核心任务是把数据包从源主机送到目的主机。IPv4 头部就是这张“运输单”,里面至少要说明:

  • 这个包从哪里来:源 IP;
  • 这个包要到哪里去:目的 IP;
  • 这个包还能被转发多少跳:TTL;
  • 负载交给哪个上层协议:Protocol;
  • 这个包是否被分片,以及如何重组:Identification、Flags、Fragment Offset。

IPv4 头部最小 20 字节。它不保证可靠传输,不保证顺序,也不负责重传;这些通常由 TCP 等上层协议完成。IP 层负责的是尽力而为的转发

二、先记住 IPv4 头部的整体结构

面试不要求逐位背图,但要能说出核心字段和用途:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+----+----+--------+-----------------------------------------------+
|Ver | IHL| DSCP   |              Total Length                     |
+------------------+-----+-----------------------------------------+
|        Identification  |Flg |         Fragment Offset             |
+------------------------+----+--------------------------------------+
|   TTL    | Protocol    |          Header Checksum                 |
+---------------------------------------------------------------+
|                    Source IP Address                           |
+---------------------------------------------------------------+
|                 Destination IP Address                         |
+---------------------------------------------------------------+
| Options...                                                   |
+---------------------------------------------------------------+

常问的是:TTL、Protocol、分片字段、校验和、源/目的 IP。能把这些字段串成“转发、解封装、分片、防环路”四个关键词,回答就比较完整。

三、TTL:不是时间,而是跳数上限

TTL 全称 Time To Live,但在现代 IP 转发里更常理解为最大跳数限制。每经过一个三层设备,TTL 减 1;如果减到 0,路由器丢弃该报文,并通常返回 ICMP Time Exceeded。

例如一个包的初始 TTL 为 64:

主机A TTL=64 -> 路由器1 TTL=63 -> 路由器2 TTL=62 -> ...

TTL 的意义有两个:

  • 防止路由环路导致报文永远在网络里转;
  • 支撑 traceroute 这类工具,通过逐步增加 TTL 观察每一跳返回的 ICMP 报文。

TTL 不表示“这个包能活多少秒”,面试里把它说成跳数限制更准确。

四、Protocol:告诉目的主机负载交给谁

IP 报文到达目的主机后,内核需要知道 IP 负载应该交给哪个上层模块。这个信息由 Protocol 字段提供:

Protocol 值上层协议
1ICMP
6TCP
17UDP

比如浏览器访问 HTTPS,底层可能是:

以太网帧 -> IPv4(Protocol=6) -> TCP(443) -> TLS -> HTTP

这里 Protocol=6 只说明 IP 负载是 TCP,具体应用端口由 TCP 头部里的端口号决定。也就是说,IP 头负责“交给 TCP/UDP/ICMP”,传输层头部再负责“交给哪个进程或服务”。

五、Total Length、IHL 和 Options:怎么算包的大小

IPv4 的 IHL 表示 IP 头部长度,单位是 4 字节。没有 Options 时,IHL=5,也就是 20 字节;有 Options 时会更长,最大 60 字节。

Total Length 表示整个 IPv4 报文长度,包含 IP 头和数据。比如:

IHL = 5 -> IP头 20 字节
Total Length = 1500
IP负载长度 = 1500 - 20 = 1480 字节

这也是为什么 MTU、MSS、分片问题经常和 IP 头部一起考:链路层能承载的最大 IP 报文长度受 MTU 限制,如果 IP 报文超过路径 MTU,就可能被分片或被丢弃。

六、分片字段:Identification、Flags、Fragment Offset

IPv4 支持在网络层分片。三个字段最关键:

  • Identification:同一个原始 IP 报文的所有分片使用相同标识;
  • Flags:包含 DF 和 MF,DF 表示不要分片,MF 表示后面还有分片;
  • Fragment Offset:当前分片在原始报文中的偏移,单位是 8 字节。

一个大的 IP 报文被分成多个分片后,目的主机会根据 Identification 和 Fragment Offset 重组。如果任意一个分片丢失,整个原始报文都无法重组成功。

这也是工程上通常希望避免 IP 分片的原因:分片增加丢包放大、重组开销和排障难度。

七、Header Checksum:只校验头部,而且每跳会变

IPv4 头部校验和只覆盖 IP 头部,不覆盖数据部分。因为 TTL 每经过一个路由器都会变化,所以 Header Checksum 也要随之更新。

为什么不校验数据部分?可以从分层理解:

  • 链路层通常有 FCS 检测帧错误;
  • TCP/UDP 有自己的校验和覆盖传输层头和数据;
  • IPv4 头部校验和只负责发现 IP 头部在传输中是否损坏。

IPv6 直接移除了头部校验和,一个原因就是减少路由器每跳处理成本,把端到端校验更多交给传输层和链路层。

八、常见误区与追问

  • 误区:TTL 表示报文能存活多少秒。 现代网络中 TTL 更应理解为最多经过多少跳,每经过一个路由器减 1。
  • 误区:Protocol 字段表示应用层协议。 Protocol 表示 IP 负载交给 TCP、UDP、ICMP 等哪一个上层协议,不表示 HTTP 或 DNS。
  • 误区:IPv4 头部校验和会校验整个数据包。 它只校验 IPv4 头部,数据部分由链路层或传输层校验机制负责。
  • 误区:IHL 就是整个 IP 包长度。 IHL 是头部长度,Total Length 才是 IP 报文总长度。
  • 追问:为什么 TTL 变化后校验和也要变化? 因为 TTL 属于 IPv4 头部字段,头部内容变了,头部校验和必须重新计算。
  • 追问:TCP 和 UDP 是靠哪个字段区分的? IPv4 头部的 Protocol 字段区分上层协议,TCP 是 6,UDP 是 17。

九、加强记忆

IPv4 头部可以按四条主线记:转发看目的 IP,防环路看 TTL,解封装看 Protocol,分片重组看 Identification/Flags/Offset。IHL 表示头部长度,Total Length 表示整个 IP 报文长度,Header Checksum 只校验 IPv4 头部。面试回答时不要逐字段硬背,而是把字段放回转发流程:路由器按目的 IP 查路由,转发时 TTL 减 1 并更新校验和,目的主机根据 Protocol 把负载交给 TCP、UDP 或 ICMP。