IPV4报头

以下是IPV4的图解和说明:

IPV4报头

 

1.Version:(版本)可以区分IPV4与IPV6法人协议版本号,IPV4是0100,IPV6是0110,大小否是四个字(半位),
  而值得注意的是IPV4与IPV6头部除了版本字段位置相同外再无其他是一样的,因此,两个协议不能直接互操作。

2、IHL(Internet header length)(报头长度) :保存IPV4头部中32位字的数量,包括任何选项(options),
   由于是4位,所以IPV4头部被限制为最多15个32位字,用8位字换算即相当于60字节。
   如果没有选项(后面会解释)的加入,字段的正常值为5,即20字节。IPV6中不存在
    这个字段,其头部长度固定为40字节,IPV4的两倍。

3.Type of Service :(服务类型)服务类型字段(TOS)共8位长的字段被分为两个部分,
   前六位被称为区分服务字段(DS字段),后两位是显示拥塞通知(ECN)字段或指示位,在QS中用到。

4.Total length:IPV4数据报的总长度,通过这个字段和上边说过的IHL字段,
   我们知道数据报的数据部分从哪里开始,以及它的长度。由于他是一个16位的字段,
   所以IPV4数据报的最大长度(包括头部)位65535字节,数据报长度等于Total length - IHL

5.Identification : 标识符,大小16位,在三层把流量区分开来,可以类比于动态端口号,
   与流量一一对应,同一种流量在网络层的标识符就是相同的,用于流量分片。

6.Flags:标记位,大小3位,分为三部分,保留位(reserved bit),分片位(Don’t fragment)
    为1代表数据未分片,为0则未分片,更多位(more fragment),例如分片数据报共100个,
    则前99个的MF都等于1,标识后面还有分片数据包,100的MF等于0,标识分片数据包的结束,
   同时开启排序,但并不一定数据包的排序在整个分片数据报传递后开始,因为数据包的收发可能后发先至。

7.Fragment Offest :分片偏移,大小13位,用来重排序。第一个分片数据报文偏移为0,
   第二个为第一个数据报文的大小,以此类推,第n个为前n-1个数据报文的大小之和。

8.TTL :(生存时间) Time to Live大小8位,用于设置一个数据报文可经过的路由器的数量上限,
    可路由的次数,IP数据报文防环的底线,单位为s对应生存跳数,而不是跳数。由于原来
    路由器性能差的时候常需要1s才能转发数据,故设置了255s作为上限,不符合现在路由器
    转发数据几十毫秒的时代,IPV6已经改善,改为Hop limit。(当TTL数值等于0时,数据包会被自动丢弃

9.Protocol : 标识上一层的协议号(0-255)8为大小,用于识别封装的协议是否为一种传输层协议。

10.Header checksum :头部校验(16位)和计算数据帧的完整性,TTL不参与校验,
    随路由次数一直改变,IPV6删除该字段,由于各层也在校验数据帧的完整性。

11.Source address :源IP(32位)。

12.destination address :目标IP(32位),这里可以发现IPV4数据报的每一行大小都是32位。

13.options :松散路由,严格路由,路由记录,时间戳。

14.Padding:通过可选字段后面添0来补足32位保证options,padding之和为0 32或32的倍数