5-ip协议首部分析二

片偏移

5-ip协议首部分析二_第1张图片
图7-片偏移

  片偏移(Fragment offset)占用13位:每次分片传输的数据之间的偏移距离,也就是某分片的数据在原数据中的相对位置,一般偏移以8字节为单位。比如:在网络层传输的ip数据报总长度最大不能超过65535字节,如果超过了,要么对ip数据报进行分片传输,否则将丢弃。

  那么问题来了,为什么是以8字节为单位?
  它是由IP头部格式中的“总长度(16bit)”和“偏移(13bit)”两个字段所决定的。总长度定义了IP包的最大长度为2^16=64KB,偏移说明了IP分片时它最多能表示2^13个偏移单位,这样偏移单位就是总长度除以偏移量得出片偏移单位(即2^16 / 2^13=2^3,即为8字节了)。

   通常,我们要发送一个非常大的数据,由于受网络传输的限制,一次性发不过去,就需要对数据进行分片传输,把数据发送到目的地后再把数据重新组装起来是根据偏移量来计算重组的。

5-ip协议首部分析二_第2张图片

  上图中要发送的数据部分大小为3800字节,在对发送的数据进行分片后分成了数据包片1,数据包片2,数据包片3,对于分片1在0 - 1399字节之间,分片2是在1400 - 2700字节之间,分片3是在2800 - 3700字节之间。

  因为偏移量是以8字节为偏移单位,对于分片1来说从0字节开始算,偏移量为0 / 8 = 0,对于分片2来说从1400字节开始算,偏移量为1400 / 8 = 175,对于分片3来说是从2800开始算,偏移量为2800 / 8 = 350。

  举个例子:拿分片3来说,因为分片3的片偏移量为350,而偏移单位是8字节,那么分片3在原数据中的开始位置就是350 * 8 = 1400字节的位置了。

  为什么片1的偏移量是0?
  因为片1是第一个数据分片,也就是说片1在原来数据中的开始位置是0字节开始的,由此,我们可知:片偏移为0表示这可能是第一个分片,也有可能是这个数据报文不支持分片

  另外,这些数据包分片的ip首部大部分都是一样的,因为它们都属于同一数据报文,对于数据进行重组就需要参考片偏移和标识这两个重要的字段,需要注意的是,片偏移是根据某一数据片的开始位置来计算的。

生存时间

5-ip协议首部分析二_第3张图片
图8-生存时间

  生存时间(Time To Live,简称TTL ),占用8个bit位,表示数据报在网络传输过程中的生存时间,目的是防止无法交付的数据包在网络中出现路由环路,最初是秒作为单位,但为了方便,现在都用“跳数”作为TTL的单位。也就是说数据报每经过一个路由器就是一跳,其TTL值就减 1,换句话说数据包在网络中传输最多经过63个路由器,当TTL值为0时,该数据包就会被丢弃。

  举个例子:当路由器R4收到数据报文TTL减1后值为0的话,那么路由器R4会丢弃该数据报文,然后向主机A发送一个ICMP超时报文。
5-ip协议首部分析二_第4张图片

  如上图所示:当主机A给主机B发送一个数据报文时,该数据报文在网络中会有一个TTL生存时间字段,就是数据报文每经过一台路由器,TTL字段值就会减1,当路由器收到数据报文后TTL字段值减1后为0的话,那么该路由器就会把数据报丢弃并向主机A发回一个ICMP超时报文,这种机制有效的防止了路由环路,也就是解决了数据报在路由器之间一直转圈的问题

协议

5-ip协议首部分析二_第5张图片
图9-协议

  协议(Protocol)字段占用8个bit位,表示数据报携带的数据使用哪一种协议,方便目的主机的网络层知道将数据部分上交给哪一种协议来处理。

5-ip协议首部分析二_第6张图片

  根据网络层的ip数据报中的协议字段值为6可知,这个数据报是要交给传输层的tcp协议来处理。


  常用的协议和对应的协议字段值如下图所示:

这里写图片描述

首部校验和

5-ip协议首部分析二_第7张图片
图10-首部校验和

  首部检验和字段占用16个bit位,只检验数据报的首部部分,并不包括数据部分,因为数据报每经过一个路由器都要重新计算一下首部校验和(一些字段,如生存时间,标志,片偏移等都可能发生变化),这里不采用 CRC 检验码而采用简单的计算方法,校验数据报在传输过程中是否被篡改或数据报被破坏。

  validation disabled表示wireshark软件把首部校验和这个功能关闭了。
  如果[Checksum Status: Good ]中是good则表示校验和是正确的,如果是bad表示是校验和是存在问题的,可能数据出现损坏或被篡改。

源地址

5-ip协议首部分析二_第8张图片
图11-源地址

  Source:就是发送数据报的源主机IP地址

目标地址

5-ip协议首部分析二_第9张图片
图12-目标地址

  Destination:接收数据报的目标主机的IP地址

可选字段(长度可变)

  IP 首部的可变部分就是一个选项字段,一般用于支持排错、测试以及安全等措施,内容很多。选项字段的长度可变,从 1 个比特到 32个比特不等,取决于所选择的项目,增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这也就增加了每一个路由器处理数据报的开销,而实际上这些选项很少被使用。

你可能感兴趣的:(tcp/ip协议修炼心法)