Skip to content

IP Packet Header

IP Packet Header 长度一般为20-60字节(Byte)。前20字节固定,后40字节可选长度不固定。

IP Packet Header 结构图


ip_header

IP 头部字段详细介绍


字段名称长度 (位)描述
版本 (Version)4指定 IP 协议版本,IPv4 的值为 4。
头部长度 (IHL)4头部长度,以 32 位字为单位,最小值为 5 (20 字节)。
DS + ECN8区分服务字段和显式拥塞通知字段,常用于 QoS 和拥塞控制。
总长度 (Total Length)16IP 数据包的总长度,包括头部和数据部分,单位为字节。
标识 (Identification)16数据报的唯一标识符,用于分片和重组。
标志 (Flags)3标志位,包括分片控制标志 (DF、MF)。
片偏移 (Fragment Offset)13表示分片在原始数据报中的位置。
TTL (Time to Live)8数据包生存的最大跳数,每经过一跳减 1,降为 0 时丢弃。
协议 (Protocol)8指定上层协议,如 TCP (6)、UDP (17) 等。
头部校验和16检验 IP 头部数据的完整性。
源 IP 地址32数据包的源地址。
目的 IP 地址32数据包的目的地址。
选项 (可选)可变可选字段,提供特殊功能(如记录路由)。

IP 头部关键字段介绍


1. 头部长度 (IHL Internet Header Length)

  • IHL (Internet Header Length,头部长度):IHL 是一个 4 位字段,表示 IPv4 头部的长度,以 32 位字为单位(1 个单位 = 4 字节)。

    • 取值范围: 5(最小长度 20 字节,无选项)到 15(最大长度 60 字节,包含选项)。
    • 限制说明: 由于最大长度为 60 字节,一些选项(如“记录路由”选项)难以使用。
    • IPv6 差异: IPv6 没有 IHL 字段,因为 IPv6 头部固定为 40 字节。
  • IHL范围:5 - 15 个 32位字的数量,二进制表示 0101 - 1111。

    • 最小长度:5 * 32bit = 160bit = 20byte
    • 最大长度:15 * 32bit = 480bit = 60byte
  • DS + ECN:早期该字段叫 TOS (Type of Service),但由于未被广泛使用,后续被重新定义为 DS (Differentiated Services)ECN (Explicit Congestion Notification) 两个部分,共 8 位。

    • DS (区分服务字段):前 6 位称为 区分服务代码点 (DSCP, Differentiated Services Code Point),用于定义不同的数据优先级或服务等级,以支持 QoS(服务质量)机制。
    • ECN (显式拥塞通知):后 2 位用于在拥塞情况下通知发送方。持续拥塞的路由器会设置该字段,常用于无损网络(如数据中心和音视频传输)来减少丢包。
  • DS + ECN 摘自 wireshark

Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
  • 标识字段:标识字段帮助标识由IPv4主机发送的数据报。为了避免将一个数据报分片和其他数据 报分片混淆,发送主机通常在每次(从它的一个IP地址)发送数据报时都将一个内部计数器 加1,并将该计数器值复制到IPv4标识字段。这个字段对实现分片很重要

  • Flags: 0x00(摘自 wireshark)

- 0... .... = Reserved bit: Not set			// 保留位
.0.. .... = Don't fragment: Not set		    // 不分片
..0. .... = More fragments: Not set   	    // 被分片的包除最后一个均为1。