IP首部格式如图5-5所示。IP首部的长度不固定,是4字节的整数倍,其中前20字节的各字段是必须具备的。下面介绍各字段的含义。
图5-5 IP首部
1)版本:占4bit,指示IP使用的版本,用来确保发送者、接收者和路由器使用一致的数据报格式。利用网络抓包软件Wireshark等可截获网卡上传输的IP数据报的具体内容,如图5-6所示,图中捕获了两个IP数据报。每个数据报图中的下方是用十六进制表示的IP数据报字节内容,上方是对该数据报各字段的解析。图中阴影部分就是版本字段。通常使用的IPv4(图左)版本该字段为0x4,而IPv6(图右)该字段为0x6。
图5-6 IP版本号实例
2)互联网首部长度(IHL):4bit字段,标识以4字节为单位的IP首部长度,例如,不包含填充项或IP选项的IP首部长度为20字节,IHL值为20字节/4字节=5。当然这也是最小的IP首部长度了。
3)服务类型(TOS):8bit字段,包括一个3bit的优先权子字段、4bit的TOS子字段和1bit未用位(但必须置0)。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。目前几乎所有的路由器都忽略该字段。
4)总长度:16bit字段,表明IP数据报的总长度,包括IP首部和数据,以字节为单位。最大值为65535字节。
5)生存期(TTL):8bit字段,规定了一个数据报可以在互联网上存活的时间,TTL值由源主机设置(通常为32或64),每经过一个路由器,它的值会减1。(www.daowen.com)
6)标识符:16bit字段,通常每发送一个数据报,该标识符值加1作为下一个IP数据报的标识符。它等同于每个数据报的身份证号码,在一定时间范围内,该标识符连同源、目的IP地址一起,在整个互联网上是唯一的。当IP数据报分片时,该字段用来在重装时识别各分片是否属于同一个数据报。
7)标志:3bit字段,目前只定义了2bit,“后续”比特用于数据的分片和重装,该位被置1,意味着仍有后续分片;该位置0,意味着不再有后续分片。“不分片”比特用于设置该数据报是否允许被分片。当该位被置1时,则路由器不能对该数据报进行分片。这对于没有重装分片能力的目的端系统是很有益的。当然,如果数据报长度超出了途径某个网络的最大传输单元(MTU),而该数据报又设置为不可分片,那么这个数据报就会被丢弃。
8)数据报分片偏移量:13bit字段,同样用于分片和重装。该字段指出这个数据报分片在原数据报中的位置,以8字节为单位。
9)协议:8bit字段,指出目的系统中,接收数据字段的高层协议。接收端根据这个字段确定接收到的数据报该交给哪个上层协议去处理。
10)首部校验和:16bit字段,对IP首部的起差错检验作用,保证首部的准确性。为了计算一份数据报的IP校验和,首先把校验和字段置为0,然后,对首部中每个16bit进行二进制反码求和(将整个首部看成是由一串16bit的字组成的),循环进位累加,结果取反存在校验和字段中。当收到一份IP数据报后,同样对首部中每个16bit进行二进制反码求和。由于接收方在计算过程中包含了发送方存在首部中的校验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。因为发送和接收一般使用同一段程序,计算结果取反后(全1取反后为全0)作为返回结果,进行判断。该字段仅仅提供了对于IP首部的检验,并没有提供对于数据部分的检验。这也就是为什么说互联网络层并不包含数据的差错控制。
11)源地址(目的地址):32bit字段,发送端(接收端)的IP地址。
12)选项(可选):用于额外的控制和测试,定义了安全性、源路由、时间戳、路由记录和流标识5个选项。
13)填充(可选):用于确保数据报的首部是32bit的整数倍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。