IP 数据报的格式
IP数据报的格式能够说明IP都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(即4字节)为单位来描述。图4-13是数据报的完整格式。 从图 4 - 13 可看出,一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。下面介绍首部各字段的意义。
1、IP数据报首部的固定部分中的各字段
(1)版本。 (4位)
占 4 位,指IP协议的版本。IP协议版本号为4(即 IPv4),IPv6(即版本6的IP协议)。
(2)首部长度。 (4位)
占 4 位,可表示的最大十进制数值是15。请注意,首部长度字段所表示数的单位是32位字(1个32位字长是4字节)。因为IP首部的固定长度是20字节,因此首部长度字段的最小值是5(二进制表示的首部长度是 0101)。而当首部长度为最大值1111时(即十进制数的15),就表明首部长度达到最大值15个32位字长,即 60 字节。
(3)区分服务。 (8位)
占 8 位,用来获得更好的服务。旧标准中叫做服务类型,后改名为区分服务(Different Services)。只有在使用区分服务时,这个字段才起作用。
(4)总长度。 (16位)
总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16 - 1 = 65535 字节。
(5)标识。 (16位)
占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标识。 (3位)
占三位,但目前只有两位有意义。
- 标志字段中最低位记为MF(More Fragment)。MF = 1 即表示后面“还有分片”的数据报。MF = 0 表示这已是若干数据报片中的最后一个。
- 标志字段中间的一位记为DF(Don’t Fragment)。意思是“不能分片”。只有当DF = 0 时才允许分片。
(7)片偏移。 (13位)
占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8字节为偏移单位。这就是说,除最后一个数据报片外,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间。 (8位)
占8位,生存时间字段常用的英文缩写是TTL(Time To Live),表明这是数据报在网络中的寿命。其目的是防止无法交付的数据报无限制地在互联网中兜圈子,因而白白消耗网络资源。
(9)协议。 (8位)
占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。
常用的一些协议和相应的协议字段值如下:
协议名 | ICMP | IGMP | IP | TCP | EGP | IGP | UDP | IPv6 | ESP | OSPF |
---|---|---|---|---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 4 | 6 | 8 | 9 | 17 | 41 | 50 | 89 |
(10)首部检验和。 (16位)
占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和。
(11)源地址。 (32位)
(12)目的地址。 (32位)
2、IP数据报首部的可变部分
IP数据报首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。某些选项项目只需要1个字节,它只包括1个字节的选项代码。而有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
来源:CSDN
作者:萝卜要加酱丶
链接:https://blog.csdn.net/weixin_43564391/article/details/104712214