IP数据报文概述
IP(Internet Protocol)数据报文是互联网协议中最基础的数据传输单元。每个IP数据报都包含了确保数据能够正确传输所需的各种信息。本文将详细介绍IP数据报文的各个字段及其作用。
IP数据报文结构
IP数据报文主要由首部和数据两部分组成。其中首部包含了控制信息,而数据部分包含了上层协议的数据。
首部字段详解
版本(Version)- 4位
- 用于标识IP协议的版本
- IPv4的值为4,IPv6的值为6
首部长度(IHL,Internet Header Length)- 4位
- 标识IP首部的长度
- 以32位(4字节)为单位
- 最小值为5(表示20字节),最大值为15(表示60字节)
服务类型(Type of Service)- 8位
- 用于指定服务质量
- 包含优先级和服务类型信息
- 现代网络中常用于区分服务(DiffServ)
总长度(Total Length)- 16位
- 标识整个IP数据报的长度
- 包括首部和数据部分
- 最大值为65535字节
标识(Identification)- 16位
- 用于分片重组
- 同一数据报的所有分片具有相同的标识值
标志(Flags)- 3位
- 控制数据报分片
- 包括:
- DF(Don’t Fragment):禁止分片
- MF(More Fragments):后面还有分片
片偏移(Fragment Offset)- 13位
- 指示分片在原始数据报中的位置
- 以8字节为单位
生存时间(TTL,Time To Live)- 8位
- 防止数据报无限循环
- 每经过一个路由器减1
- 当值为0时,数据报被丢弃
协议(Protocol)- 8位
- 指示上层协议类型
- 常见值:
- 1 = ICMP
- 6 = TCP
- 17 = UDP
首部校验和(Header Checksum)- 16位
- 用于检验首部的完整性
- 不包括数据部分的校验
源IP地址(Source Address)- 32位
- 发送方的IP地址
目的IP地址(Destination Address)- 32位
- 接收方的IP地址
选项(Options)- 可变长度
- 可选字段
- 包含特殊处理信息
- 很少使用
IP数据报文分片
当IP数据报文大小超过网络的MTU(最大传输单元)时,需要进行分片处理:
分片规则
- 每个分片都必须是8字节的整数倍
- 除最后一个分片外,其他分片的大小应该相等
- 所有分片都保持相同的标识字段值
分片重组
- 目的主机负责重组
- 根据标识字段和片偏移进行重组
- MF标志位用于判断是否为最后一个分片
实际应用举例
- MTU发现
|
|
- 查看IP报文结构
|
|
IP数据报文结构图
|
|
服务类型(ToS)字段详细结构
|
|
首部结构说明
固定部分(20字节)
- 版本号到首部校验和的部分
- 每个IP数据报必须包含的内容
- 长度固定不变
可变部分(最多40字节)
- 选项字段
- 填充字段
- 长度可变,必须是32位的整数倍
数据部分
- 可变长度
- 承载上层协议的数据
- 受MTU限制
IP首部结构表
基本结构(按字节分布)
字节位置 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0-3 | 版本(4位)+首部长度(4位) | 服务类型(8位) | 总长度(16位) | |
4-7 | 标识符(16位) | 标志(3位)+片偏移(13位) | ||
8-11 | 生存时间(8位) | 协议(8位) | 首部校验和(16位) | |
12-15 | 源IP地址(32位) | |||
16-19 | 目的IP地址(32位) | |||
20+ | 选项+填充(如果有,0-40字节) |
按位分布详解
第0行(0-3字节):
|
|
第1行(4-7字节):
|
|
第2行(8-11字节):
|
|
第3-4行(12-19字节):
|
|
第5行及以后(20+字节,如果有):
|
|
字段说明
第0-3字节字段
- 版本:4位,IPv4为4,IPv6为6
- 首部长度:4位,以4字节为单位(最小值5,最大值15)
- 服务类型:8位,指定服务质量
- 总长度:16位,首部+数据的总字节数(最大值65535)
第4-7字节字段
- 标识符:16位,用于分片重组
- 标志:3位(保留位、DF位、MF位)
- 片偏移:13位,以8字节为单位
第8-11字节字段
- 生存时间:8位,经过路由器减1,为0时丢弃
- 协议:8位,上层协议类型
- 首部校验和:16位,只检验首部
第12-19字节字段
- 源IP地址:32位
- 目的IP地址:32位
第20+字节字段(如果有)
- 选项:可变长度,0-40字节
- 填充:确保首部是4字节的整数倍
协议字段值对照表
协议值 | 协议名称 | 说明 |
---|---|---|
1 | ICMP | Internet控制报文协议,用于发送错误消息 |
2 | IGMP | Internet组管理协议,用于多播 |
6 | TCP | 传输控制协议,面向连接的可靠传输 |
17 | UDP | 用户数据报协议,无连接的不可靠传输 |
47 | GRE | 通用路由封装,用于VPN |
50 | ESP | IPSec加密安全载荷,提供加密和认证 |
51 | AH | IPSec认证头,提供数据完整性 |
89 | OSPF | 开放最短路径优先,内部网关路由协议 |
服务类型(ToS)字段详解
位置 | 名称 | 值 | 含义 |
---|---|---|---|
0-2 | 优先级 | 000 | 常规 |
001 | 优先 | ||
010 | 立即 | ||
011 | 闪电 | ||
100 | 覆盖 | ||
101 | 关键 | ||
110 | 网间控制 | ||
111 | 网络控制 | ||
3 | 延迟 | 0 | 正常延迟 |
1 | 低延迟 | ||
4 | 吞吐量 | 0 | 正常吞吐量 |
1 | 高吞吐量 | ||
5 | 可靠性 | 0 | 正常可靠性 |
1 | 高可靠性 | ||
6 | 成本 | 0 | 正常成本 |
1 | 最小成本 | ||
7 | 保留 | 0 | 保留未用 |
标志字段说明表
位 | 名称 | 值 | 含义 |
---|---|---|---|
0 | 保留 | 0 | 必须为0 |
1 | DF | 0 | 允许分片 |
1 | 不允许分片 | ||
2 | MF | 0 | 最后的分片 |
1 | 还有分片 |
总结
IP数据报文的字段设计非常精巧,每个字段都有其特定的用途,共同保证了网络通信的可靠性和效率。理解这些字段的含义对于:
- 网络故障排查
- 性能优化
- 安全防护
都有重要意义。