涛声依旧在 发表于 2025-4-1 01:49:57

IP报文格式

IPv4 头部结构(共 20 字节,不含可选字段)

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F6%2F60%2FIPv4_Packet-en.svg&pos_id=Zr7PrnYs
https://i-blog.csdnimg.cn/direct/ff58ba35a4ff4767a55a9d6721a7f465.png

1. 版本(Version)



[*] 长度:4 比特
[*] 作用:标识 IP 协议版本(IPv4 值为 4,IPv6 值为 6)。
[*] 示例:0100(表现 IPv4)。
2. 头部长度(IHL, Internet Header Length)



[*] 长度:4 比特
[*] 作用:表现 IP 头部的长度(以 4 字节为单位)。

[*] 最小值为 5(即 20 字节,无可选字段)。
[*] 最大值为 15(即 60 字节,含可选字段)。

[*] 示例:0101(表现头部长度为 20 字节)。
3. 服务类型(ToS, Type of Service)



[*] 长度:8 比特
[*] 作用:界说数据包的优先级和服务质量(QoS)参数,现多用于 DSCP(差分服务代码点) 和 ECN(显式拥塞通知)。

[*] DSCP(6 比特):区分流量种别(如语音、视频)。
[*] ECN(2 比特):标记网络拥塞状态。

[*] 示例:00000000(默认无特殊服务)。
4. 总长度(Total Length)



[*] 长度:16 比特
[*] 作用:表现整个 IP 数据包的长度(头部 + 数据),单位是字节。

[*] 最大值为 65535 字节(受 MTU 限制)。

[*] 示例:00 50(表现包总长度为 80 字节)。
5. 标识(Identification)



[*] 长度:16 比特
[*] 作用:唯一标识一个数据包,用于分片重组。

[*] 同一数据包的所有分片共享相同的标识值。

[*] 示例:0x1234(随机生成的 ID)。
6. 标记(Flags)



[*] 长度:3 比特
[*] 作用:控制分片行为:

[*] Bit 0:保留位(必须为 0)。
[*] Bit 1(DF, Don't Fragment):

[*] 1:克制分片(如 ICMP 探测包)。
[*] 0:答应分片。

[*] Bit 2(MF, More Fragments):

[*] 1:表现后续还有分片。
[*] 0:表现最后一个分片。


[*] 示例:010(DF=1,克制分片)。
7. 片偏移(Fragment Offset)



[*] 长度:13 比特
[*] 作用:指示当前分片在原始数据包中的位置(以 8 字节为单位)。

[*] 用于接收方按序次重组分片。

[*] 示例:0(表现第一个分片)。
8. 生存时间(TTL, Time To Live)



[*] 长度:8 比特
[*] 作用:防止数据包无限循环,每颠末一个路由器减 1,归零时抛弃。

[*] 常见初始值:64(Linux)或 128(Windows)。

[*] 示例:40(剩余跳数)。
9. 协议(Protocol)



[*] 长度:8 比特
[*] 作用:标识上层协议类型(传输层协议)。

[*] 常见值:

[*] 1:ICMP
[*] 6:TCP
[*] 17:UDP


[*] 示例:06(表现 TCP)。
10. 头部校验和(Header Checksum)



[*] 长度:16 比特
[*] 作用:校验 IP 头部的完整性(不包括数据部分)。

[*] 每颠末一个路由器需重新计算。

[*] 示例:0x7a3d(校验和计算结果)。
11. 源 IP 地点(Source Address)



[*] 长度:32 比特(4 字节)
[*] 作用:发送方的 IPv4 地点。
[*] 示例:192.168.1.1 → C0 A8 01 01。
12. 目的 IP 地点(Destination Address)



[*] 长度:32 比特(4 字节)
[*] 作用:接收方的 IPv4 地点。
[*] 示例:8.8.8.8 → 08 08 08 08。
13. 可选字段(Options)



[*] 长度:可变(最多 40 字节)
[*] 作用:扩展功能(如纪录路由、时间戳等),现代网络较少利用。
[*] 填充(Padding):确保头部长度是 4 字节的倍数。
关键注意事项


[*] 分片机制:

[*] 当数据包超过 MTU(如以太网默认 1500 字节)时,路由器根据 DF 标记决定是否分片。
[*] 分片后,只有第一个分片包含传输层头部(如 TCP/UDP 端口号)。

[*] 校验和范围:

[*] 仅校验 IP 头部,传输层(如 TCP/UDP)有独立的校验和。

[*] IPv6 差异:

[*] IPv6 头部更简便(固定 40 字节),删除了分片、校验和等字段。

示例抓包分析(Wireshark)

复制
Internet Protocol Version 4, Src: 192.168.1.1, Dst: 8.8.8.8
    0100 .... = Version: 4
    .... 0101 = Header Length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
    Total Length: 84
    Identification: 0x1234
    Flags: 0x40 (Don't Fragment)
    Fragment Offset: 0
    Time to Live: 64
    Protocol: TCP (6)
    Header Checksum: 0x7a3d
    Source Address: 192.168.1.1
    Destination Address: 8.8.8.8 通过理解 IP 头部字段,可以深入分析网络流量、排查路由问题或优化 QoS 计谋。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: IP报文格式