IPV4数据包的首部格式

IPv4数据报的首部格式

这个有点复杂,要慢慢讲

一个IP数据报由首部数据两部分组成。

首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。

在首部的固定部分后面是一些可选字段,其长度是可变的。

IPV4数据包的首部格式_第1张图片

版本

用来区分IP4还是IPV6,占四个字节

首部长度

占四个字节,四个字节总共可以表示16个数(从0到15)。
每个数为1个单位,一个单位为4字节。

所以IP的首部长度最大为15个单位,60个字节

首部长度的作用在哪呢?

用户只需要接收数据部分,所以我们必须知道从哪里开始就是数据部分了。

首部长度最多60个字节,但是有20个字节是固定的了,所以可变部分最多也就40个字节

而且因为每个单位为4个字节,所以首部长度每次都是4个字节,4个字节增加的。所以要是不够四个字节怎么办?

就去填充,所以后面就有一个填充的字段。

区分服务IPV4数据包的首部格式_第2张图片
总长度

指的是整个IP数据包的长度,首部+数据部分。

首部长度是来区分首部和数据部分的

总长度是用整个IP数据报的长度,因为每个网络上允许传的IP数据报的长度都是不同的,都是有规定的。

IPV4数据包的首部格式_第3张图片

标识

占16位,它是一个计数器,用来产生IP数据报的标识。

标志和片位移

标志
占3位,目前只有前两位有意义。
标志字段的最低位是MF(More Fragment)
MF=1标识后面“还有分片”,MF=0表示最后一个分片。

标志字段中间的一位是DF(Don not Fragment) 只有当DF=0时才允许分片。

片偏移
占13位,较长的分组在分片后某片在原分组中的相对位置。
片偏移以8个字节为偏移单位

标志和片偏移都是与数据分片有关的

数据分片

为什么要数据分片?

每个网络的最长分片都是不同的,假设用户发给我的数据太长,(用户不关心下层给我提供的是什么样的服务)。

所以数据太大就得分片。
IPV4数据包的首部格式_第4张图片
IPV4数据包的首部格式_第5张图片
分片就是将数据分成不同的片,然后每一片上都加上一个首部。

在这里插入图片描述
所以就是 原始数据首部复制成各数据报片的首部,但必须修改有关字段的值

IPV4数据包的首部格式_第6张图片
IPV4数据包的首部格式_第7张图片
MF表示后面还有分片吗?原始数据报和数据报片3的MF都是0,表示后面没有更多分片了。

DF表示非允许分片吗?都是0,表示都允许分片。

生存时间TTL

在网络中占的时间太长了,就把你丢掉。

用数据包在网络中可通过的路由器数的最大值来表示TTL。

协议

协议占8位,指出数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给那个处理过程。

IPV4数据包的首部格式_第8张图片

首部检验和

首部检验和——占16位,只检验数据报的首部,不检验数据本身。这里不采用CRC检验码而采用简单的计算方法。

也就是只检验数据报在发送过程中有没有出现误码阿还是丢失阿什么情况。

数据为什么不检验?

  • 数据可能已经分过片
  • 我只保证尽最大努力传输而已

你可能感兴趣的:(计算机网络,网络,java,数据库,大数据,分布式)