Appearance
408 > 计算机网络 > IPv4分组格式
一、定位信息
- 所属圈层:核心层
- 前置知识:需了解网络层的基本功能(路由与转发),以及比特(bit)和字节(Byte)的基本概念
- 知识网络位置:IPv4分组格式是理解IP协议的基础,向下关联IPv4地址与子网划分(CN-04-05),向上关联ICMP协议(CN-04-10),是网络层最核心的知识点之一
- 考点热度等级:H级(高频重点) — IPv4分组首部各字段的含义和功能几乎每年必考
二、知识点讲解
2.1 IPv4分组的基本结构
IPv4分组由**首部(Header)和数据(Payload)**两部分组成。首部长度为20-60字节(固定部分20字节+可变的选项部分),包含分组转发所需的所有控制信息。
首部各字段如下(按比特位置从高位到低位排列):
| 字段 | 长度 | 说明 |
|---|---|---|
| 版本(Version) | 4 bit | IPv4的值为4 |
| 首部长度(IHL) | 4 bit | 以4字节为单位,最小值5(20字节),最大值15(60字节) |
| 区分服务(DSCP/ECN) | 8 bit | 服务质量相关,DSCP占6位,ECN占2位 |
| 总长度(Total Length) | 16 bit | 分组总长度(首部+数据),最大65535字节 |
| 标识(Identification) | 16 bit | 用于分片重组,同一分组的所有分片标识相同 |
| 标志(Flags) | 3 bit | DF(不分片)、MF(更多分片)、保留位 |
| 片偏移(Fragment Offset) | 13 bit | 以8字节为单位,指示本分片在原分组中的位置 |
| 生存时间(TTL) | 8 bit | 最大跳数,每经过一个路由器减1,减到0则丢弃 |
| 协议(Protocol) | 8 bit | 标识上层协议,TCP=6,UDP=17,ICMP=1 |
| 首部校验和(Header Checksum) | 16 bit | 仅校验首部,每经过一个路由器都重新计算 |
| 源IP地址 | 32 bit | 发送方IP地址 |
| 目的IP地址 | 32 bit | 接收方IP地址 |
| 选项(Options) | 可变 | 0-40字节,用于安全、路由记录、时间戳等 |
| 填充(Padding) | 可变 | 使首部长度为4字节的整数倍 |
2.2 重要字段详解
首部长度(IHL):以4字节为单位。若IHL=5,表示首部长度为 字节(无选项)。若IHL=15,表示首部长度为 字节。
总长度:包括首部和数据的总长度。以太网MTU为1500字节,所以以太网上传输的IPv4分组总长度通常不超过1500字节。
标识、标志、片偏移:这三个字段共同用于IP分片与重组。当分组长度超过链路MTU时,路由器将分组分片。每个分片有相同的标识,通过片偏移确定分片顺序,MF标志指示是否还有后续分片。
TTL(生存时间):防止分组在网络中无限循环。每经过一个路由器TTL减1,减到0时路由器丢弃分组并发送ICMP超时报文。
首部校验和:仅校验首部(不校验数据),且每经过一个路由器都要重新计算(因为TTL等字段会变化)。这是IP协议"尽力而为"的体现——不保证数据完整性,由上层协议(如TCP)负责。
2.3 IP分片与重组
当IP分组的长度超过转发链路的MTU时,需要进行分片:
- 分片:由路由器完成,将大分组拆分为多个小分片
- 重组:由目的主机完成,路由器不负责重组
- 每个分片都有独立的首部,其中标识、源/目的IP地址相同
- 片偏移以8字节为单位,因此分片的数据部分长度必须是8字节的整数倍(最后一个分片除外)
三、记忆与理解辅助
- 口诀:"版本首部长,总长标识片偏生存;协议校验源目的,选项填充补四齐。"
- 字段长度记忆技巧:
- 4位字段:版本、首部长度
- 8位字段:区分服务、TTL、协议
- 16位字段:总长度、标识、首部校验和
- 3位字段:标志
- 13位字段:片偏移
- 32位字段:源IP、目的IP
- 分片三要素:标识(谁的分片)、标志(还有没有更多分片)、片偏移(这是第几个分片)
四、例题与精解
例题1(基础巩固)
题目:一个IPv4分组的首部长度字段值为7,总长度字段值为100。请问该分组的数据部分长度是多少字节?
命题意图:考查对首部长度字段和总长度字段的理解与计算。
精解:
- 审题分析:已知IHL=7,Total Length=100,求数据长度。
- 解题思路:数据长度 = 总长度 - 首部长度。
- 完整步骤:
- 首部长度 = IHL × 4 = 7 × 4 = 28 字节
- 数据长度 = 总长度 - 首部长度 = 100 - 28 = 72 字节
- 方法反思:IHL以4字节为单位,总长度以字节为单位,两者单位不同,计算时要注意单位转换。
例题2(中等提升)
题目:一个长度为4000字节的IPv4分组(首部20字节,数据3980字节)需要经过MTU为1500字节的链路。请给出分片后各分片的首部关键字段值(标识设为12345)。
命题意图:考查IP分片的具体计算能力,这是408高频考点。
精解:
- 审题分析:原分组数据3980字节,MTU=1500字节,需分片。每个分片首部20字节,所以每个分片最大数据量 = 1500 - 20 = 1480字节。
- 解题思路:将3980字节数据按1480字节为单位分片,注意片偏移以8字节为单位。
- 完整步骤:
分片1:
- 数据量:1480字节(1480/8=185,是8的倍数,合法)
- 标识:12345
- MF=1(还有后续分片)
- DF=0(允许分片)
- 片偏移:0
- 总长度:1480 + 20 = 1500
分片2:
- 数据量:1480字节
- 标识:12345
- MF=1
- 片偏移:1480 / 8 = 185
- 总长度:1500
分片3:
- 数据量:3980 - 1480 - 1480 = 1020字节(1020/8=127.5,需取整为1016字节,但最后一片不需要是8的倍数...实际上最后一片可以不是8的倍数)
- 标识:12345
- MF=0(最后一个分片)
- 片偏移:(1480 + 1480) / 8 = 2960 / 8 = 370
- 总长度:1020 + 20 = 1040
分片结果汇总:
| 分片 | 总长度 | 标识 | MF | 片偏移 | 数据量 |
|---|---|---|---|---|---|
| 1 | 1500 | 12345 | 1 | 0 | 1480 |
| 2 | 1500 | 12345 | 1 | 185 | 1480 |
| 3 | 1040 | 12345 | 0 | 370 | 1020 |
- 方法反思:分片计算的关键步骤:①计算每片最大数据量=MTU-首部长度;②除最后一个分片外,每个分片的数据量必须是8字节的整数倍;③片偏移=前面分片数据总字节数÷8。
五、考情分析
- 考查频次:近5年每年必考,出现5次以上
- 常见题型:选择题考查各字段含义;综合题考查IP分片计算
- 分值占比:选择题2-4分,综合题5-8分
- 命题趋势:IP分片计算是稳定考点,近年增加了对TTL、首部校验和等字段功能细节的考查
六、易错点提醒
错误表现:混淆首部长度的单位(以为是字节)
- 错误原因:首部长度字段以4字节为单位,但容易误认为直接就是字节数
- 正确理解:IHL=5表示首部20字节(5×4),不是5字节
错误表现:分片时忘记片偏移以8字节为单位
- 错误原因:总长度以字节为单位,片偏移以8字节为单位,两者单位不同
- 正确理解:片偏移 = 前面所有分片数据字节数之和 ÷ 8
错误表现:认为路由器负责IP分片的重组
- 错误原因:直觉上认为分片和重组应该在同一设备完成
- 正确理解:路由器只负责分片,重组由目的主机完成。中间路由器可能对分片再次分片
错误表现:认为首部校验和包含数据部分
- 错误原因:与以太网CRC校验混淆
- 正确理解:IPv4首部校验和仅校验首部,数据完整性由上层协议保证
七、来源标注
- 依据2026考研统考大纲
- 依据《计算机网络(第8版)》谢希仁版
- 依据RFC 791(Internet Protocol)