华为网络基础 | IP报文头部

  • 内容
  • 相关

上一篇讲解了RS | 数据包帧字节——图例详解,已经知道了数据通信过程中,封装的大概概念和封装的一般组成。

上图是以太帧的格式,从图中可以看出Type字段值为0x0800,表示该帧的网络层协议为IP协议

在剥掉帧的头部和尾部之前,网络设备需要根据帧头中Type字段确定下一步将帧发送到哪个上层协议进行处理。本例中的帧头部Type字段表示该帧需要上送到IP协议进行处理。接着将介绍帧的头部和尾部被剥掉后,IP协议将如何处理帧中的数据。

IPv4报文头部定义如下:

(1)4bit的版本(Version):由于IP协议不止一个版本,因此根据IP协议的定义,数据包要在头部的一开头即列明这个数据包是使用哪个版本的IP协议进行封装的,不同版本的IP协议所采用的数据包头部封装格式也各部相同。目前网络中使用的IP协议几乎都是IPv4或者IPv6。即 0100或者0110。

(2)4bit的首部长度(Header Length):如上图,IPv4的数据包头部中定义了一个可选项字段。由于可选项字段的长度并不固定,因此IPv4的数据包头部长度也是不固定的,这就是为什么IPv4需要在头部定义一个头部长度字段来界定整个数据包中,哪一部分是数据包的头部,以及数据部分从哪里开始。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为15,即首部最大60字节。

(3)8bit的服务类型(Type of Service):服务类型字段的定义和名称都发生过很多次变化,但其宗旨都是界定这个数据包要接受什么等级的服务。目前,这个字段已经改称为区分服务(Differentiated Services)字段,用来说明这个数据需要执行加速传输还是精确传输,以及数据在传输过程中是否经历了拥塞

(4)16bit的数据长度(Length):这个字段负责列明整个数据包的长度,也就是头部长度和数据长度之和。

(5)16bit的标识(Identification):当数据包的长度大于链路允许传输的数据长度时,这个数据包就需要进行分片(Fragment),目的设备接收后再通过重组进行还原。标识字段的作用就是在分片前,指明哪些分片此前属于同一个数据包,以备未来重组数据包时之用。通常每发一份报文,它的值会加1。

(6)3bit的标志/记(Flag):标记位的作用是标识这个数据包是否允许路由器对其进行分片(标记位的第2位),以及这个分片是不是整个数据包的最后一个分片(标记位的第3位)。

具体来说,如果标记位的第2位被设置为1,那么当路由器发现必须要对这个数据包进行分片才能将其转发到目的地时,由于你设置为1(即不分片),路由器就会丢弃这个数据包,因此标记位的第2位叫做DF位,译为“勿分片(Don't Fragment)”位。

如果标记位的第3位没有被设置为1,则代表这个分片是整个数据包的最后一个分片,整个数据包的分片都已到达,后面不再有任何这个数据包的分片了,因此这一位译为“还有更多分片“(More Fragments)位(可叫做MF位)。第一位的用途,IP协议并没有进行定义。

(7)13bit的分片偏移(Fragment Offset):分片偏移字段的作用是告诉重组分片的设备,应该按照什么样的顺序重组数据包。即用来标识这个分片在整个数据包中的位置。

(8)8bit的生存时间(TTL:Time to Live)字段:用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,设备在转发时,就会将其值减1,直到0时该数据报被丢弃。

(9)8bit的协议字段(Protocol):指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。以便让对端设备知道该如何在传输层对数据包进行进一步的解封装。

(10)16bit的头部校验和字段(Checksum):内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。由于IP数据包头部的TTL字段会随着数据包的传输而减小,因此校验和也需要在每跳重新进行计算。大部分情况下,路由器会丢弃头部校验和字段校验失败的数据包。

(11)32bit的源IP地址(Source IP Address):用来标明发送IP数据报文的源主机地址。

(12)32bit的目的IP地址(Source IP Address):用来标明接收IP报文的目标主机地址。

(13)32bit的可选项字段(Option):用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。

说一下中间的分片部分:图中报文的第二层三个部分给IP的分片和重组提供了足够的信息。

管理员设置 回复 可见隐藏内容

是否,感觉要记的东西好多,对数据包封装格式用理解记忆的方式可能更好一些,也不必死记硬背,那样没效果,今天背着了,明天也会忘记的。

 您阅读这篇文章共花了:

上一篇:闲谈 | 没有自学能力,你还是转行吧

下一篇:华为网络基础 | TCP头部封装

本文标签:    

版权声明:本文依据CC-BY-NC-SA 3.0协议发布,若无特殊注明,本文皆为《fishyoung》原创,转载请保留文章出处。

本文链接:华为网络基础 | IP报文头部 - http://www.fishyoung.com/post-133.html