IP数据报的格式

  • 格式:pdf
  • 大小:103.42 KB
  • 文档页数:2

IP数据报的格式

IP协议具有什么功能从数据报的格式中就能够知道,⼀个IP数据报被分为了⾸部和数据两个部分,在⾸部中有20个字节是固定的,还有⼀些可选字段长度是可变的,下⾯是IP数据报的具体格式:

IP数据报各个字段的意义

1.版本号

版本号占4位,指使⽤的IP协议的版本,通信双⽅使⽤的版本要⼀致才能通信,⽬前的版本有IPv4和IPv6,

2.⾸部长度

指数据报的⾸部的长度,占4位,注意这⾥的⾸部长度的单位是4个字节,所以最⼤的⾸部长度可以达到 15 * 4 = 60 个字节,当⾸部长

度不是4个整数倍的时候,就要使⽤填充字段进⾏填充。

3.区分服务

占8位,⽤来获得更好的服务,只有在使⽤区分服务的时候,这个字段才有⽤,⼀般情况下,都不使⽤这个字段

4.总长度

⾸部和数据部分长度之和,占16位,因此IP数据报的最⼤长度位2的16次⽅ - 1, 即65535个字节,然⽽这样长度的数据报是极少遇到

的,我们知道在数据链层规定了MTU的⼤⼩(常⽤的以太⽹的MTU为1500字节),当数据报的⼤⼩超过MTU时,就要进⾏分⽚处理。

IP协议规定所有的主机和路由器,必须能够接受长度不超过576字节的数据报,当要发送的数据包的长度超过576个字节时,就应该先

了解⽬的主机是否能够接受所发送的数据报的长度,否则就要进⾏分⽚处理了。

5.标识

占16位,IP软件在存储器中维持⼀个计数器,每产⽣⼀个数据报,就将计数器加⼀,并将此值赋值给标识字段,当数据报的长度,超过

⽹络的MTU时,就必须进⾏分⽚处理,这个标识将会赋值到所有的分⽚中,也就是说⼀个数据报经过分⽚之后的形成的多个数据报的标识是

⼀样的,这样做是为了将它们组成⼀个完整的数据报。

6.标志

占3位,但⽬前只有两位有意义,

󰀀 标志字段的最低位为MF,当MF = 1 时,表⽰后⾯还有分⽚,MF = 0表⽰这是最后⼀个分⽚

󰀀 中间位位DF,DF的意思是不能分⽚,当DF=0时,才允许分⽚

7.⽚位移

占13位,分⽚之后的每⼀⽚在原来的数据报中的位置,即相对于数据报的起点位置,该⽚从何处开始,⽚位移以8个字节位单位,

8.⽣存时间

占8位,英⽂缩写为TTL(Time To Live),这个字段指明数据报在⽹络中的⽣存时间,每当数据报经过⼀个路由器,TTL就减1,当TTL为0时,路由器就丢弃该数据报,⽽不进⾏转发了,这样做的⽬的是为了防⽌数据报 在⽹络中“兜圈⼦”⽽⽩⽩消耗⽹络资源,⼀般的操作

系统都有默认的TTL:

󰀀 Linux 64

󰀀 Windows 128

󰀀 Unix 256

9.协议

占8位,协议字段指出数据包的数据部分使⽤的是何种协议,以便使⽬的主机的IP层知道应该将数据报中的数据交给哪个部分来处理,

常见的协议和对应的字段值如下:

󰀀 ICMP 1

󰀀 IGMP 2

󰀀 IP 4 , IP数据报再封装到IP数据报中

󰀀 TCP 6

󰀀 IGP 9

󰀀 UDP 17

󰀀 IPv6 41

󰀀 ESP 50

󰀀 OSPF 89

10.⾸部检验和

占16位,只将⾸部检验过后的检验和填⼊此字段中,不检验数据报的数据部分,数据报每经过⼀个路由器都要重新计算检验和,检验和的计算过程如下:

󰀀 先将检验和字段设置为全0,

󰀀 然后将IP数据报的⾸部划分位以16位为⼀个单位的序列,将这些字段进⾏反码算术运算求和,

󰀀 将得到的结果取反,并写⼊检验和字段,注意这个取反后的结果和原来的结果相加为全1

󰀀 接收⽅收到数据报之后,也将IP数据报的⾸部划分位以16位为⼀个单位的序列,将这些字段进⾏反码算术运算求和,

󰀀 若将得到的结果取反不为0,那么证明出错了,则丢弃该数据报,若取反结果为0,将数据报上交。

11.源地址和⽬的地址

各占32位

12.可变部分

IP⾸部的可变部分就是⼀个选项字段,选项字段可以⽤来⽀持排错、测量以及安全等措施,内容丰富,选项字段最多为40个字节,最⼩

为0个字节,实际上这些字段都是很少⽤的,因为这样⼀来减⼩了开销,IPv6版本的IP数据报的⾸部就是固定长度的,