IP数据包格式及首部中的各字段

IP数据报的格式如图所示。普通的IP首部长为20个字节,除非含有选项字段。

IP数据包格式及首部中的各字段

 

分析图中的首部。最高位在左边,记为0bit;最低位在右边,记为31 bit。

1)目前的协议版本号是4,因此IP有时也称作IPv4

2)首部长度指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。

3)服务类型(TOS)字段包括一个3bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit的TO S分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。

下图列出了对不同应用建议的TO S值。

IP数据包格式及首部中的各字段

4)总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节,但是一般不会这么长。

5)标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。

 

6)3位标志13位偏移字段用于分片过程。对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中(我们现在已经看到这个字段的用途)。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。

    标识字段代表划分每个分组属于的同一个数据报,等待重新组装。

    偏于字段代表该分组位于总ip数据报偏移的长度(获取位置)

    分片:物理网络层一般要限制每次发送数据帧的最大长度。任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。

    当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

IP数据报 是指IP层端到端的传输单元(在分片之前和重新组装之后),

分组 是指在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片。

IP数据包格式及首部中的各字段

7)TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。

8)协议字段 表达了它如何被IP用来对数据报进行分用。根据它可以识别是哪个协议向IP传送数据。 
比如: 
         ICMP:1 
         IGMP:2 
         TCP:6 
         UDP:17 
         EIGRP:88 
         OSPF:89 

9)首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。

10)每一份IP数据报都包含源IP地址和目的IP地址。

11)

最后一个字段是任选项,是数据报中的一个可变长的可选信息。目前,这些任选项定义如下:

• 安全和处理限制(用于军事领域,详细内容参见RFC 1108[Kent 1991])

• 记录路径(让每个路由器都记下它的IP地址,见7.3节)

• 时间戳(让每个路由器都记下它的IP地址和时间,见7.4节)

• 宽松的源站选路(为数据报指定一系列必须经过的IP地址,见8.5节)

• 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)。

这些选项很少被使用,并非所有的主机和路由器都支持这些选项。

选项字段一直都是以32 bit作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32 bit的整数倍(这是首部长度字段所要求的)。