IPv4 首部结构与功能
IPv4 首部长度
- 通常 20 字节,20 x 8 = 160 位
- 最大 60 字节,60 x 8 = 480 位
服务类型字段(TOS)
服务类型字段(Type of Service (TOS))用于指定数据包在传输过程中的处理优先级和服务质量(QoS)
ToS字段是IPv4头部中的一个8位字段(1字节),其结构如下:
- 旧版本:
位 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|
作用 | 优先级 | 优先级 | 优先级 | 延迟 | 吞吐量 | 可靠性 | 保留 | 保留 |
- 新版本:
位 | 8 DSCP | 9 DSCP | 10 DSCP | 11 DSCP | 12 DSCP | 13 DSCP | 14 ECN | 15 ECN |
---|---|---|---|---|---|---|---|---|
作用 | 服务质量 | 服务质量 | 服务质量 | 延迟 | 吞吐量 | 可靠性 | 拥塞控制 | 拥塞控制 |
总长度字段
共16位,表示从数据包的开始到结束的整个长度,单位是 字节(Bytes)。
- 最小值:20字节(即没有数据,只有IPv4头部的情况下)。
- 最大值:65535字节(16位字段可以表示的最大值)。
标识符
16位,用于分段
- 一个数据包因为大小超过MTU而被分段,所有分段都会有相同的标识符
- 当接收端收到分段后,标识符字段帮助它识别哪些分段属于同一个原始数据包。接收端会根据标识符和片偏移(Fragment Offset)字段,将这些分段按照正确的顺序重新组合起来,恢复成原始的完整数据包。
标志
3位 字段,通常与 片偏移(Fragment Offset) 字段一起使用。
管理是否分段,是否为最后一个分段:
位 | 0 | 1 | 2 |
---|---|---|---|
作用 | 保留 | 是否分段 | 更多分段 |
-
位0(保留位,Reserved Bit):
这个位通常被设置为0,按照规定它不应该被使用。因此,位0应该是保留的位。 -
位1(是否分段位,Don’t Fragment, DF):
- 如果该位被设置为 1,表示该数据包 不允许分段。即,数据包大小不能超过网络的最大传输单元(MTU)。
- 如果该位被设置为 0,表示数据包 可以分段,如果数据包过大,路由器可以将其分段后传输。
-
位2(更多分段位,More Fragments, MF):
- 如果该位为 1,表示当前数据包是一个 分段包的后续部分,即数据包后面还有其他分段。
- 如果该位为 0,表示当前数据包是 最后一个分段,没有更多的分段。
分段偏移量
13位 字段,主要用于标识数据包每个分段在 原始数据包中的位置。
分段偏移量字段的关键点
- 单位:偏移量的单位是 8字节,因此实际偏移量是 “字段值 × 8” 字节。
- 范围:由于是13位字段,偏移量的最大值为 8191,即最大的偏移量为 8191 × 8 = 65528字节。因此,IPv4数据包的分段最多可以支持 65528字节 的数据。
生存时间(TTL)
8位 字段,用于指定数据包在网络中能够传输的最大跳数。
- 作用:
- TTL用于防止数据包在网络中无限循环。每当数据包经过一个路由器(跳数增加),TTL值会减1。
- 当TTL值减到0时,数据包会被丢弃,并向源主机发送一个 ICMP 超时错误消息,告诉它数据包未能送达目的地。
- 初始值:
- 通常,源主机会为TTL字段设置一个初始值,常见的初始值有 64、128 和 255,具体值由操作系统或设备设置。
- 最小值:
- 1(即TTL=1时,数据包经过一个路由器就会被丢弃)。
- 最大值:
- 255。
协议(Protocol)
8位 字段,用于指定上层协议(如 TCP、UDP、ICMP)。
- 作用:
- 协议字段告诉接收端应该将数据包的有效载荷交给哪个协议处理。
- 这个字段的值对应不同的协议标识符。常见的协议值包括:
- 1:ICMP
- 6:TCP
- 17:UDP
- 89:OSPF
- 示例:
- 如果值为 6,表示数据包的有效载荷是一个 TCP段,接收端就会将其交给TCP协议栈处理。
首部校验和(Header Checksum)
16位 字段,用于检查IPv4头部是否在传输过程中发生了错误。
- 作用:
- 校验和由发送方计算,由接收端验证。
- 如果两者相同,表示头部没有错误;如果不同,表示头部数据可能在传输过程中损坏,接收端会丢弃该数据包。
- 计算方法:
- 校验和是通过将IPv4头部的所有16位字节逐个相加,再将和取反得到的。
- 注意:计算校验和时,不包括数据部分,只是针对IPv4头部进行计算。
- 校验和字段的特点:
- 校验和仅用于IPv4头部的完整性验证,不涉及数据部分。
- 校验和的作用:
- 确保数据包在传输过程中头部信息的正确性和完整性。如果校验和不匹配,数据包会被丢弃,重新发送。
- 标题: IPv4 首部结构与功能
- 作者: 三葉Leaves
- 创建于 : 2024-12-25 00:00:00
- 更新于 : 2025-01-05 18:48:33
- 链接: https://kiss1314.top/c91c7562098a/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论