服务时间:8:30-18:00

首页 >华为认证网

IP报头结构详解

发布时间:2023-02-20 16:58 字数:1408字 阅读:101

IP报头结构详解,IP报头格式如图1所示,该图展示了RFC 791对IP报文报头格式的定义。

IP报头格式

图1 IP报头格式

为了让读者能更好地理解IP报头,笔者对IP报头进行了翻译整理,如表1所示,各字段含义如下所述。

表1 IP报头

IP报头

① 版本(Version):长度为4比特,有IPv4和IPv6这两个版本。因为这两个版本的报头格式不同,所以这个位置是很重要的,它直接影响了主机在解析报文时按照什么版本来读取哪些位置的数据。

② 报头长度(Header Length):长度为4比特,表示 IP报文头部的长度,以32比特(4字节)为单位递增,该字段的最小值为5,也就是说报文长度的最小值为5×32比特(4字节)=20字节。如此演算,如果该字段4比特都置位,等于十进制的15,15×32比特(4字节)=60字节,也就是说,IP报文的头部长度最大为60字节。

③ 服务类型(Type of Service):长度为8比特。该字段指出应该如何处理数据报文,也有文献称其为差分服务、区分服务。

④ 总长度(Total Length):长度为16比特,表示该IP报文的总大小,包括报头和携带的数据。

⑤ 标识(Identification):长度为16比特,唯一标识原始IPv4数据包的数据分片。

⑥ 标志位(Flag):长度为3比特,主要用于指出是否进行分片以及是否有更多分片。

⑦ 分片偏移(Fragment Offset):长度为13比特,当一个报文过大不能够在一个数据帧中传输时,可以使用分片和重组功能,这里主要是用于表示偏移量,即将一个报文分开封装,分别发出,到达目的地再根据偏移量进行重组。

⑧ 存活时间(Time To Live,TTL):长度为8比特,表示报文在网络中可以生存的时间,当计时器到期时该报文将被网络丢弃。有趣的是,虽然设计之初是按照时间这个概念来设计的,然而在现代网络环境中设备的转发速度很快,一般经过一台转发设备的时间都非常短(一般不会超过1秒),于是就直接在生存时间上减少1秒,最后,这一设计就变成了实际上是计算报文经过的转发设备数量了,也就是我们将要在路由部分了解的“跳数”。一般情况下,该值始发时根据设备和环境不同,可能是64、128或255。当TTL为0时会丢弃数据包。

⑨ 协议(Protocol):长度为8比特,标识承载数据使用什么协议,以便于接收者将数据交给相应的协议或者程序来处理;支持网络层协议和上层协议,比如TCP/UDP/ICMP/ARP/OSPF,等等。

⑩ 报头校验和(Header Checksum):长度为16比特,是对报头进行循环冗余校验(Cyclic Redundancy Check,CRC)的结果。

⑪源 IP地址(Source Address):长度为32比特,表示发送者的 IP地址。

⑫目的 IP地址(Destination Address):长度为32比特,表示接收者的 IP地址。

⑬选项(Options):用于安全、测试等目的。需要注意的是,根据在 RFC 791中的定义,该字段的长度必须为32比特的倍数。当没有选项时,可以为0;如果有且不足32比特时,则需要以0来填充至32比特的倍数。

⑭填充(Padding):长度可变。在使用选项的过程中,有可能造成数据包包头部分不是32比特的整数倍,那么需要填充数据来补齐。