IP数据包结构
IP数据包结构
-
Version(版本)字段长度为4位,标识了数据包的IP版本号。其中0100表示IP版本4,0110表示IP版本6(其他所有版本号仅作为“历史产物”)
-
IHL(首部长度)字段长度为4位,以字节为单位表示整个IP包中除
数据
字段外的长度。最小为20,最大为60。ps:可选项
的范围为0到40个字节 -
Type of Service(服务类型)字段长度为8位 用来指定特殊的数据包处理方式。该字段实际上被分为两个字段:优先权和Tos。
-
Total Length(总长度)字段长度为16位(单位为一个八位组),表示整个IP数据包的长度(其中包括IP报头,不包括帧数据结构)。接受者用总长度减去IP报头长度,就可以确定数据包数据有效载荷的大小。(用十进制表示最大到65535个),中国传输MTU最大值为1500字节,因此数据超过该字节都会被进行拆分。
- Identification(标识符)字段长度为16位,通常与标记字段和分段偏移字段一起用于数据包的分段。如果数据包原始长度超过数据包所要经过的数据链路的最大传输 单元( MTU),那么必须将数据包分段为更小的数据包。例如,一个大小为 5000 字节的数据包在穿过网络时,如果遇到一条MTU为1500字节的数据链路,即数据帧最多容纳大小为1500字节的数据包。路由器需要在数据成帧之前将数据包分段成多个数据包,其中每个数据包长度不得超过1500字节;然后路由器在每片数据包的标识字段上打上相同的标记(标识符),以便接收设备可以识别出属于一个数据包的分段。
- IP Flags(标记)字段长度为3位,第1位没有使用。第2位表示不分段位(DF),取值:0(允许数据报分段)、1(数据报不能分段),置1之后路由器不能对其分段处理,如果超过MTU值则路由器不能对其转发将其丢弃,并向源点发送错误消息。第3位表示更多段位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)。
1.Fragment Offset(分片偏移)字段长度为13位,以字节为单位,用于指明分段起始点相对于包头起始点的偏移量。由于分段到达时可能错序,所以分段的偏移字段可以使接收者按照正确的顺序重组数据包。请注意,如果一个分段在传输中丢失,那么必须在网络中同一点对整个数据包重新分段并重新发送。因此,容易发生故障的数据链路会造成时延不成比例。另外,如果由于网络拥塞而造成分段丢失,那么重传整组分段会进一步加重网络拥塞。