当前位置:首页 > 游戏资讯 > IPv4协议头如何像IPv6将next

IPv4协议头如何像IPv6将next

IPv4协议头中没有类似于IPv6中的nextheader字段,因此无法像IPv6一样将nextheader=59表示没有下一个协议头。在IPv4中,如果没有下一个协议头,则协议字段的值为0。这意味着IPv4数据包没有封装任何高层协议,只包含IP头。因此,如果要在IPv4中表示没有下一个协议头,则需要将协议字段设置为0。

IPV4和IPV6报文头部的区别:

IPV4报头长度(不包括选项字段):20字节

IPV6报头固定长度(基本):40字节

IPV6去除了IPV4报头中的HeaderLength(头部长度)、Identification(标识)、Flags(标志)、FragmentOffset(片偏移)、Checksum(头部校验和)、Option(选项)。却只增加了一个Flowlable(流标签)这一个字段。

去除Checksum(头部校验和)字段是因为在二层有FCS做校验,在四层有TCP/UDP等协议的Checksum做校验。所以IPV6报头无需再次校验,可以提升IPV6性能。

在讲IPV4,报头中,提到了头部校验和每经过一个设备,都要进行计算。在IPV6中去掉头部校验和,这样就可以提升转发效率。

IPv4协议头如何像IPv6将next

IPV4报文分片:每个数据链路层协议都有自己的帧格式,在这个格式中有一个字段是MTU(最大传输单元),但数据包被封装成数据帧时,数据包的总长度就必须小于这个MTU的值。

IPV4数据包最大长度65535字节,如果MTU>65535,那么就不用分片。但是如果小于,那就应该吧数据包分成很多份(分片)。

1、每个数据包都有自己的头部,头部中大部分字段是重复的(如源目IP)。

2、校验和必须重新计算(上面讲过,头部校验和每经过一个设备都要重新计算)而校验和在IPV4报文头部中,分片的时候,最少有三个字段改变了(标识,标志,片偏移)

3、如果分片后遇到设备的MTU更小,则需要再次分片。

IPV4报文头部中,使用标识,标志,片偏移来进行数据包分片。

标识(Identification):长度占16位,标志了从源主机发出的数据包,标识与源IP组合确定唯一的数据包。在进行分片时,这个字段必须复制到所有的分片中,这样目的主机接收到所有分片的报文后,才知道把那些分片组装起来。

在IPV6数据分片时在源头开始分片的,而不是像IPV4那样,在中间转发设备分片。