IP数据报格式详解

就像所有的网络协议消息一样,IP对它的数据报使用一种特定的格式。这里我们使用的是IPv4,所以我们将研究IPv4的数据报格式。

IPv4数据报在概念上分为两部分:header和payload。头部包含地址和控制字段。而payload携带在网络上发送的实际数据。

尽管IP是相对简单的,无连接的不可靠协议。IPv4报头包含了相当多的信息,这使得它相当的大。至少它是20个字节长,并且携带其他选项的话会更长。IP数据包格式将在表Table 1和图Figure 2中描述

下图Figure 1为Wireshark抓包工具抓到的数据包,我截取了IP协议段的数据,你可以参考这张图进行理解。
                                                        

图 Figure 1


在这里插入图片描述

Table 1
Field NameSize (bytes)Description
Version1/2
(4 bits)
Version: 标识用于生成数据报的IP版本。对于IPv4,这当然是数字4。这个字段的目的是确保运行不同版本IP的设备之间的兼容性。运行旧版本IP的设备将拒绝由新实现创建的数据报,假设旧版本可能无法正确解释新数据报。
IHL1/2
(4 bits)
Internet Header Length (IHL): 指定IP头的长度, 单位32位(4字节), 这包括任何选项字段的长度和填充, 当不使用选项时,该字段的正常值是5(5*4 = 20字节) 
TOS1为IP数据报携带信息以提供服务质量特性的字段,如优先交付。它从未像最初定义的那样被广泛使用,它的含义后来被重新定义,以供称为差异化服务(Differentiated Services, DS)的技术使用。
TL2Total Length (TL): 指定IP数据报的总长度,以字节为单位。由于这个字段是16位宽,IP数据报的最大长度是65,535字节,但实际大多数情况下都要小得多。
Identification2

Identification: 这个字段包含一个16位的值,它是属于特定消息的每个片段的公共值(比如一段消息被分成了两段发送);对于最初发送的未分片的数据报,它仍然被填充。因此,如果数据报在传输过程中必须被路由器分片,就可以使用它。收件人使用此字段重新组合消息,而不会意外地混合来自不同消息的片段。这是必要的,因为碎片可能来自多个消息混合在一起,因为IP数据报可以从任何设备无序接收。

See the discussion of IP message fragmentation.

Flags3/8
(3 bits)

三个控制标识位,其中两个被用于管理分片。 另一个是保留未使用的。

Fragment Offset1 5/8
(13 bits
Fragment Offset: 当消息出现分段时,该字段指定在整个消息中该分段中的数据的偏移量或位置。单位为8字节(64位)。第一个片段的偏移量为0。请参阅 see the discussion of fragmentation 以了解如何使用字段。
TTL1Time To Live (TTL): 根据路由器跳数指定允许数据报在网络上“存活”的时间。每个路由器在发送TTL字段之前都会减少它的值(减少1)。如果TTL字段为0,则认为该数据报占用的路由时间过长而被丢弃。
Protocol1

标识携带的数据报的高层协议(通常是一个传输层(TCP)协议或者封装的网络层协议) 。该字段的值被定义在IETF标准 RFC1700. 现在被IANA维护。

Header Checksum2Header Checksum: 在报头上计算的一种校验和,以提供基本的保护,防止传输中的损坏。这不是以太网等数据链路层技术通常使用的更复杂的CRC代码,它只是一个16位校验和。它的计算方法是将报头字节分成单词(一个单词是两个字节),然后将它们相加,数据不进行校验和,只有header部分进行校验和。在每一跳接收数据报的设备做相同的校验和计算,在不匹配时,丢弃已损坏的数据报。
Source Address4Source Address: 数据报发起者的32位IP地址. 注意,即使中间设备(如路由器)可以处理数据报,它们通常也不会将它们的地址放入这个字段——它总是最初发送数据报的设备。
Destination Address4Destination Address: 数据报的预期接收者的32位IP地址。同样,即使路由器之类的设备可能是数据报的中间目标,这个字段始终是用于最终目的地的。
OptionsVariableOptions:在某些IP数据报的标准报头之后可能包含一个或多个类型的选项。
PaddingVariablePadding:如果包含一个或多个选项,并且它们使用的位数不是32的倍数,那么将添加足够的0位来“填充”头部为32位的倍数(4字节)。
DataVariable数据:数据报中要传输的数据,可以是整个高层消息,也可以是其中的一个片段。

图 Figure 2 : Internet Protocol Version 4 (IPv4) Datagram Format

 这个图表以图形方式显示了非常重要的IPv4数据报格式。前20个字节是固定的IP头,后面是可选的Options部分和变长Data区域。注意,Type Of Service字段显示为IPv4标准中最初的定义。

参考: The TCP/IP Guide - The TCP/IP Guide


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值