首页/网络/协议速查/IPv4 头部字段

IPv4 头部字段

IPv4 头最小 20 字节:版本、头长、TOS/DSCP、总长、标识、标志与分片偏移、TTL、协议、校验和、源/目的地址,选项可选。

协议速查网络更新于 2026-10-13

IPv4 头里有什么

IPv4 报文头最小 20 字节,承载寻址与转发所需的全部信息:谁发的、发给谁、上层是什么协议、还能走几跳、是否被分片。抓包工具与设备日志里出现的字段几乎都出自这张表,读懂它才能解释 TTL 异常、分片丢失与协议号不匹配这类问题。

基本信息

固定长度20 字节;带选项最多 60 字节
规范RFC 791;DSCP 定义见 RFC 2474
校验范围仅头部,不含数据
抓包命令tcpdump -nn -v、Wireshark 展开 IPv4 树

字段逐个看

字段长度作用
版本4bit固定为 4
首部长度4bit以 4 字节为单位,最小值 5
DSCP/ECN8bit服务质量标记与拥塞标记
总长度16bit头部加数据,最大 65535 字节
标识 ID16bit分片重组时同一原始报文的组号
标志与片偏移3bit + 13bitDF 禁止分片、MF 还有后续,偏移以 8 字节计
TTL8bit每经一跳减一,减到 0 丢弃并回 ICMP
协议号8bit上层协议,6 为 TCP、17 为 UDP、1 为 ICMP
首部校验和16bit只校验头部,每跳重算
源与目的地址各 32bit源与目的 IPv4 地址

抓头部与看字段

抓头部与看字段
tcpdump -nn -v -c 2 'ip' | head -20            # 打印 TTL、协议号、长度
tcpdump -nn -v 'icmp' -c 3                     # 协议号为 1 的报文
tcpdump -nn 'ip[8] < 5' -c 5                   # 抓 TTL 小于 5 的包,定位环路
ss -tan | head                                  # 结合本机连接视角看同一批流量

常见取值读法

字段典型值异常表现
TTLLinux 64、Windows 128、网络设备 255远小于常见初值说明路径很长或被做了 TTL 改写
协议号1 ICMP、6 TCP、17 UDP、47 GRE、50 ESP、89 OSPF设备丢弃不认识的协议号会表现为静默丢包
总长度不超过出接口 MTU超过 MTU 且 DF 置位会触发 ICMP 需要分片

典型使用场景

  • 解释「ping 通但服务不通」:协议号与端口组合不同,路径策略也不同
  • 定位路由环路:观察 TTL 快速衰减与 ICMP 超时报文
  • 核对分片行为:结合 ID、MF 与偏移判断报文是否被拆分
  • 排查 MTU 黑洞:总长度与 DF 标志是判断依据
  • 分析多路径差异:同一目标不同出口的 TTL 初值不一致,说明路径不对称
IPv4 首部校验和只覆盖头部,数据完整性由 TCP 或 UDP 校验和负责。两者分工不同,看到「IP 校验和正确但数据损坏」并不矛盾。

易错点

  • 把 TTL 当成生存时间单位秒,它实际是跳数计数,每经一跳减一
  • 看到 IPv4 首部校验和通过就认为报文完整,忽略数据部分的校验归属上层协议
  • 忽略协议号差异,用 ICMP 探测的结果去推断 TCP 端口的可达性
  • DF 位置位的报文超过 MTU 时依赖 ICMP 差错回传,链路屏蔽 ICMP 会造成无提示的连接卡死
  • 把 Wireshark 显示的相对序号或解析后字段直接当原始字节值,排查时与 tcpdump 对不上

数据来源与参考

  • RFC 791 §3.1
  • RFC 2474(DSCP)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌