版本—Version
标识数据包的IP版本号,四位二进制(0~15)
IP版本号
版本号 | 版本 |
---|---|
0 | 保留 |
1~3 | 未分配 |
4 | Internet协议版本4(IPv4) |
5 | ST数据报 |
6 | 简单Internet协议(STP) |
6 | IPv6 |
7 | TP/IX |
8 | P Internet协议(PIP) |
9 | 使用更大地址的TCP和UDP |
10~14 | 未分配 |
15 | 保留 |
报头长度—header length
四位二进制,表示32位字长的IP报头长度
IP报头最小长度为20个八位组。最大可以扩展到60个八位组
服务类型—Type of Service,ToS
八位二进制,用来指定特殊的数据包处理方式
两个子字段————优先权和ToS
0~2位为优先权
3~6位为分别为时延(D)、吞吐量(T)、可靠性(R)、开销(C)
优先权:用来设置数据包的优先级
前三位为优先权
标识 | 优先权 |
---|---|
000 | 路由选择 |
001 | 优先级 |
010 | 立即 |
011 | 火速 |
100 | 火速覆盖 |
101 | 紧急 |
110 | 互连网络控制 |
111 | 网络控制 |
ToS:允许按照吞吐量、时延、可靠性和费用方式选择传输服务
ToS字段通常不用(设置为0)
优先权位偶尔在服务质量(QoS)应用中使用
近几年,ToS字段被作为区分服务(DiffServ)架构的一部分被重新定义
在DiffServ下,能够在一台路由器上定义服务分类,将数据包归类,路由器可以根据它们的分类使用不同优先级对数据包进行排序和转发
总长度—Total Length
十六位二进制,以八位组为单位计,包括IP报头
IP数据包的最大长度为65535
标识符—Identitfier
十六位二进制,通常与标记字段和分段偏移字段一起用于数据包的分段
数据包原始长度超过数据链路的最大传输单元(MTU),必须将数据包分段为更小的数据包
标记字段—Flag
三位二进制,其中第一位没有使用
第二位,不分段(DF),设置为1时不能分段
第三位,更多分段(MF),数据包分段后最后一个分段的MF置为0,其他分段为1
分段偏移—Fragment Offset
十三位二进制,以8个八位组为单位,指明分段起始点相对于报头起始点的偏移量
使接收者可以按正确顺序重组数据包
如果其中一个分段在传输中丢失,那么对整个数据包重新发送
生存时间—Time To Live,TTL
八位二进制,当数据包在路由器上传输时,每台路由器都会降低TTL的数值
当TTL为0时,路由器会丢弃该数据包并向源点发送错误信息
防止数据包在网络上无休止传输
trace命令就是使用TTL字段特性
协议—Protocol
八位二进制,给出了主机到主机层或者传输层协议的协议号
常见的协议号
协议号 | 主机到主机层协议 |
---|---|
1 | Internet消息控制协议(ICMP) |
2 | Internet组管理协议(IGMP) |
4 | 被IP协议封装的IP |
6 | 传输控制协议(TCP) |
17 | 用户数据报协议(UDP) |
47 | 通用路由选择封装(GRE) |
89 | 开放式最短路径优先协议(OSPF) |
头部校验和—Header Checksum
十六位二进制,针对IP报头的纠错字段,不计算被封装的数据
TCP、UDP、ICMP都有自己的校验和
有数据发送者计算得到的十六位二进制补码和,如果数据包传输中没有错误十六位全部为1
由于每经过一台路由器TTL值会降低,所以每台路由器都必须重新计算校验和
源地址和目的地址—Source and Destination Address
三十二位二进制,分别表示发送者数据包源地和目的点的IP地址
可选项—Options
长度可变的字段,主要用于测试
-
松散源路由选择—Loose Source Routing
给出一连串路由器接口的IP地址序列,数据包必须沿IP地址序列传递,允许在相继的两个地址之间跳过多台路由器 -
严格源路由选择—Strict Source Routing
给出一连串路由器接口的IP地址序列,数据包必须沿IP地址序列传递,如果下一跳不在序列中将会发生错误 -
记录路由—Record Route
数据包离开是为每台路由器提供空间记录数据包的出站接口地址,以便保存数据包经过的所有路由器的记录
类似路由追踪的功能,但这里记录了双向路径上的出站接口信息 -
时间戳—Timestamp
类似于记录路由选项,同时还记录到达的时间
填充—Padding
通过该字段在可选项字段后面添加0来补足32位,保证报头长度是32位的倍数