IP Packet Header

2018年6月26日08:57:54 发表评论 855 views

IP <wbr>Packet <wbr>Header

1. Version, 4个bit,4带表IPV4,6代表IPV6和SIP,其他的数值不常用。

2. Header Length, 4个bit,其值为IP包头的长度。因为有option字段,所以要设置这个值。

3. ToS,现在所用的IP包的这个字段已经被DiffServ所代替,一共8个字节,前6个为DSCP(DiffServ Code Point),后两个为ECN。

4.Total Length, 因为前面标记过Header Length,因此用Total Length减去头部的长度就可以得到数据包的长度。total length一共16个字节, which indicates that IP包的最大长度为65535.

5.Identifier,因为数据链路层的协议限制了MTU的大小,当数据包的长度超过二层协议的MTU的时候,就需要将IP包进行分段。相同的IP包被分段后具有相同的Identifier值,因此传输之后重新组合的时候可以区分不同的数据包。

  PS:IP包一旦被分段之后,将会一直到receiver才会进行重组。

6.Flags, 一共3个字节,第一个bit保留不用,which is always zero~. 第二个bit叫做DF。 DONOT FRAGMENT,这个字段如果被置为1的话路由器将不会对数据包进行分段。这个功能可以用来检测二层协议的MTU值。第三个bit叫做MF, More Fragment。接收者受到数据包之后将检测这个字段,在被分段的数据包中,只有最后一个这个字节是0,其他的全部为1,因此接收者可以根据这个值判断是否接收到最后一个分段,从而进行重组。

7.Fragment Offset, 记录分段的偏移值。接收者会根据这个值进行数据包的重新组和。

8.TTL,不同的应用程序对TTL有不同的初始值。建议的默认TTL为64. This value will be decreased by router hop by hop, and sometimes people also call this number as hop count.

9. Protocol, 用来记录端口号,8位,因此PC的端口号为0~65535

10. Header Checksum, 校验和。路由器并不计算被封装在IP包内的数据的校验和,因为内部数据有自己的校验字段。而由于TTL是逐跳变化的,因此这个CHECKSUM必须在每台路由器上都要计算。RFC1141提出了简化计算的方案。

11.Source&Destination Address 32位的IPV4地址。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: