| 字段 | 长度 | 说明 |
|---|---|---|
| Version | 4bit | IP 版本号,$IPv4=4$ |
| IHL | 4bit | 头部长度,单位 4 字节(最小 5,即 20 字节) |
| DSCP | 6bit | 差分服务代码点(原 TOS) |
| ECN | 2bit | 显式拥塞通知 |
| Total Length | 16bit | 分组总长度(头+数据),最大 65535 字节 |
| Identification | 16bit | 标识符,同一分片的标识相同 |
| Flags | 3bit | DF(不分片)、MF(更多分片) |
| Fragment Offset | 13bit | 分片偏移,单位 8 字节 |
| TTL | 8bit | 生存时间,每经过一个路由器减 1 |
| Protocol | 8bit | 上层协议($6=TCP, 17=UDP, 1=ICMP$) |
| Header Checksum | 16bit | 头部校验和(只校验头部) |
| Source / Dest IP | 32bit | 源 / 目的 IP 地址 |
- 初始值由发送方设置(通常 64 或 128)
- 每经过一个路由器减 1
- 减到 0 时丢弃分组,发送 ICMP 超时报文
- 防止分组在网络中无限循环
| DF | MF | 含义 |
|---|---|---|
| 0 | 0 | 最后一个分片(或未分片) |
| 0 | 1 | 还有更多分片 |
| 1 | 0 | 不允许分片(未分片) |
| 1 | 1 | 不允许分片(不应出现) |
MTU = 1500 字节(以太网),IP头 = 20 字节
最大数据 = 1500 - 20 = 1480 字节(1480 是 8 的倍数)
分片偏移单位 = 8 字节 → 1480/8 = 185
例:4000 字节数据分片:
分片1: 数据 0-1479 偏移=0 MF=1
分片2: 数据 1480-2959 偏移=185 MF=1
分片3: 数据 2960-3999 偏移=370 MF=0
每个分片都有自己的 IP 头(20 字节)
计算方法:
1. 将校验和字段置 0
2. 将头部每 16 位一组求和(反码加法)
3. 结果取反码
只校验头部,不校验数据
每经过一个路由器都要重新计算(因为 TTL 变化)
| 考点 | 说明 |
|---|---|
| IP 头字段含义 | 名称、长度、作用 |
| 分片计算 | 已知 MTU 和数据大小,计算分片 |
| TTL 的作用 | 防止无限循环 |
| 协议字段 | $6=TCP, 17=UDP, 1=ICMP$ |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。