IP 数据包头:格式、字段

什么是 IP 头?
IP 报头是位于 IP 数据包开头的元信息。它显示诸如 IP 版本、数据包长度、源地址和目标地址等信息。
IPv4 报头格式长度为 20 到 60 字节,包含路由和传输所需的信息。它由版本、报头长度、总长度、标识、标志、校验和、源 IP 地址和目标 IP 地址等字段组成。这些字段共同提供了路由和传输所需的基本数据。 transmit 将数据包可靠地从一个主机发送到另一个主机。
IPv4 报头组件/字段
下图显示了完整的 IPv4 报头格式,每个字段都按正确的位置和位宽绘制:
以下是IP数据包头部的各个组成部分/字段:
- 版本: IP报头的第一个字段是4位版本指示符。在IPv4中,这四位的值设置为0100,表示二进制的4。如果路由器不支持指定的版本,则丢弃该数据包。
- 互联网标头长度: 互联网报头长度(简称 IHL)为 4 位,也称为报头长度(HELEN)。此 IP 组件表示报头中包含多少个 32 位字。
- 服务类型: 这种服务类型也称为差异化服务。 Code 点(或 DSCP)。此字段提供与数据流或 VoIP 通话服务质量相关的特性。前 3 位是优先级位。它还指定如何处理数据报。
- 总长度: 总长度以字节为单位。IP 数据报的最小长度为 20 字节,最大长度为 65,535 字节。可以使用 HELEN 和总长度来计算有效载荷的大小。所有主机都必须能够读取 576 字节的数据报。但是,如果数据报对于网络中的主机来说过大,通常会采用分片方法。
- 鉴别: 标识字段用于唯一标识 IP 数据报的各个片段。有人建议将此字段用于其他用途,例如添加数据包信息。 tracING。
- IP 标志: 标志位是一个三位字段,用于控制和识别数据分片。可能的配置如下:位 0 保留,必须设置为零;位 1 表示不进行分片;位 2 表示进行更多分片。
- 片段偏移: 分片偏移量表示特定数据报中特定分片之前的数据字节数。它以 8 字节为单位指定,最大值为 65,528 字节。
- 生存时间: 这是一个 8 位字段,用于指示数据报在互联网系统中可以存活的最长时间。每次处理数据报时,其 TTL 值都会减 1。当 TTL 值降至零时,数据报将被丢弃,以避免数据包无限循环传输。TTL 的值范围为 0 到 255。
- 协议: IPv4 报头中的这个字段指示数据报后半部分承载的是哪种互联网协议。例如,数字 6 用于表示 TCP,数字 17 用于表示 UDP 协议。
- 标头校验和: 下一个组成部分是 16 位头部校验和字段,用于检查头部是否存在错误。IP 头部会与其校验和值进行比较。如果头部校验和不匹配,则丢弃该数据包。
- 源地址: 源地址是用于 IPv32 数据包的源的 4 位地址。
- 目的地地址: 目标地址也是 32 位,存储接收者的地址。
- IP 选项: 这是 IPv4 报头的一个可选字段,当 IHL(Internet 报头长度)的值大于 5 时使用。它包含与安全性、路由记录、时间戳和类似选项相关的值和设置。选项列表通常以选项列表结束 (EOL) 标记结尾。
- 日期: 该字段存储协议层传递给 IP 层的数据。
如何计算 IPv4 报头长度
互联网报头长度 (IHL) 字段会告诉路由器报头的确切长度,以便路由器能够区分报头结束和数据开始的位置。由于该字段只有 4 位宽,因此它不直接以字节为单位存储长度。相反,它以 32 位字为单位来计算报头长度,其中每个字等于 4 个字节。
要将 IHL 值转换为字节,请将其乘以 4:
- 最小: 最小的合法 IHL 值为 5,因此 5 × 4 = 20 字节。这是一个不带任何选项的头部。
- 最大: 最大的 IHL 值为 15,因此 15 × 4 = 60 字节。多余的 40 字节用于存储可选字段。
考虑一个实际示例。如果一个数据包的 IHL 值为 6,则头部长度为 6 × 4 = 24 字节,这意味着在标准的 20 字节头部之后还有 4 字节的选项。要计算有效载荷的大小,请执行以下操作:trac从“总长度”字段中获取头部长度。如果“总长度”为 1,500 字节,头部为 24 字节,则有效载荷为 1,500 − 24 = 1,476 字节。
在分片过程中,这个计算至关重要,因为路由器必须知道报头大小才能计算出每个分片可以携带多少数据,而不会超过网络的最大带宽限制。 Transmission 单位(MTU)。
IPv4 与 IPv6 报头
IPv6 报头经过重新设计,比 IPv4 报头更简单、处理速度更快。它采用固定长度,并将不常用的选项移至单独的扩展报头中,从而使路由器能够以线速转发数据包。下表逐字段比较了这两个报头:
| 特性 | IPv4 报头 | IPv6 报头 |
|---|---|---|
| 标题大小 | 20 到 60 字节(可变) | 40 字节(固定) |
| 字段数量 | 13 个字段及选项 | 8个领域 |
| 地址长度 | 32 位源和目标 | 128 位源和目标 |
| 头部校验和 | 演讲与演出 | 去除 |
| 碎片化场 | 在基本头部(标识、标志、偏移量) | 已移至 Fragment 扩展头 |
| 可选项 | 位于标题内 | 装在扩展头中 |
| 长度字段 | 总长度(头部加数据) | 有效载荷长度(仅限有效载荷) |
由于 IPv6 去掉了校验和和可变长度选项,其报头包含的字段更少,可以在硬件中处理而无需逐跳重新计算。
为什么IP报头很重要
IP报头中的每个字段都至关重要,它使得路由器和主机能够在多个网络之间传输数据包,而无需建立永久连接。报头是数据包交换功能得以实现的关键。
- 路由: 目标地址告诉每个路由器将数据包转发到哪里,而源地址允许回复和错误消息返回。
- 防止循环: 每次传输过程中,生存时间字段都会递减,因此,路由错误的包会被丢弃,而不是在互联网上无限循环。
- 交付至正确的协议: Protocol 字段告诉接收主机是否将有效载荷传递给 TCP、UDP 或其他协议。
- Integrity 并重新组装: 校验和防止报头损坏,标识、标志和分片偏移字段允许按正确的顺序重建分片数据报。
对于网络工程师来说,阅读这些字段 TCP / IP协议 数据包捕获通常是诊断丢包、路由环路和配置错误最快的方法。 IP地址.

