????IPv4数据报的首部格式如下图所示: ????IP数据报分成固定部分和可变部分,固定部分为20个字节,可变部分的长度是可变的,最大为40个字节。
- 版本:占4个比特,表示IP协议的版本,通信双方使用的IP协议版本必须一致,目前广泛使用的版本号是4。
- 首部长度:占4个比特,表示IP数据报首部的长度,该字段的取值以4字节为单位。最小取值为5,表示IP数据报首部只有20字节滚定部分;最大取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
- 可选字段:长度从1-40字节不等,用来支持排错、测量、安全等措施,可选字段增加了IP数据报的功能,但增加了每一个路由器处理IP数据报的开销,实际上可选字段很少使用。
- 填充字段:确保首部长度为4字节的整数倍,使用全0进行填充。
- 区分服务:占8个比特,利用该字段的不同数值可以提供不同等级的服务质量。只有在使用区分服务时该字段才起作用,一般情况下都不使用该字段。
- 总长度:占16个比特,表示IP数据报的总长度,即首部加上数据载荷,最大取值为65535。
- 标识:占16个比特,属于同一个数据报的各分片数据报应该具有相同的标识。
- 标志:占3个比特,DF位为1表示不允许分片,为0表示允许分片;MF位表示后面还有分片,0表示这是最后一个分片;保留位必须为0。
- 片偏移:占13个比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位,片偏移以8个字节为单位。
????如上图所示将一条IP数据报进行分片,因为在将数据报封装成帧的时候对数据报的大小是有限制的,一般不大于1500个字节。于是将数据载荷分成3个部分,其长度大小分别为1400、1400、800。给每个分片添加一个新的首部,这些首部的标识和原数据报首部标识相同,除了第3个分片之外的首部MF位为1,标识不是最后一个分片。DF位都为0,表示允许分片,片偏移即是分片后的各分片首字节和原本的位置偏移,这个数必须是8的整数倍,因此在分片时各个分片大小需要进行考量。 - 生存时间TTL:占8个比特,表示IP数据报的生存时间。每经过一个路由器,TTL的值就减1,而如果TTL为0时,就将该数据报丢弃。在前面介绍路由环路时,就使用TTL来解决其带来的问题。
- 协议:占8个比特,指明IPv4数据报的数据部分是何种协议的数据单元,常见的协议和相应的协议字段如下。
- 首部检验和:占16个比特,用来检测首部在传输过程中是否出现差错,比CRC检验码简单,称为因特网检验和。
- 源IP地址和目的IP地址:各占32个比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
|