4.IP 数据包的格式
IP 数据包的格式能够说明 IP 协议都具有什么功能。在 TCP/IP 的标准中,各种数据格式常常以 32 比特(即 4 字节)为单位来描述。图 1-23 是 IP 数据包的格式。
从图 1-23 可以看出,一个 IP 数据包由首部和数据两部分组成。首部由固定 20 字节的基本首部和 0~40 字节可变长度的任选项组成。下面介绍首部各字段的意义。
(1)版本:占 4 比物,指 IP 协议的版本。通信双方使用的 IP 协议的版本必须一致
目前使用的 IP 协议版本为 v4(IP version 4),以前的 3 个版本目前已不使用。
(2)IHL:首部长度,占 4 比特,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后一个补丁字段加以填充。这样,数据部分永远从 4 字节的整数倍时开始,这样在实现起来会比较方便。首部长度限制为 60 字节的缺点是有时(如采用源站选路时)不够用,但这样做的用意是尽量减少额外的开销。
(3)服务类型:占 8 比特,用来获得更好的服务,其意义见图 1-23 的上在部分所示。
服务类型字段的前 3 个比特表示优先级,它可使数据包具有 8 个优先级中的一个。
第 4 个比特是 D 比特,表示要求有更低的时延。
第 5 个比特是 T 比特,表示要求有更高的吞吐量。
第 6 个比特是 R 比特,表示要求有更高的可靠性,即数据包传送的过程中,被结点交换机丢弃的概率要更小些。
第 7 个比特是 C 比特,是新增加的,表示要求选择费用更低廉的路由。最后一个比特目前尚未使用。
(4) 段总长度:段总长度指首部和数据之和的长度,单位为字节。段总长度字段为16 比特,因此数据包的最大长度为 65535 字节,这在当前是够用的。当很长的数据包要分片进行传送时,“总长度”不是指未分片前的数据包长度,而是指分片后每片的首部长度与数据长度的总和。
(5)标识(Identification):标识字段是为了使分片后的各数据包片最后能准确地重装成为原来的数据包。注意:这里的“标识”并没有顺序号的意思,因为 IP 是无连接服务的,数据服不存在按序接收的问题。
(6)标志(Flag):占 3 比特,目前只有前两个比特有意义。标志字段中的最低位记为 MF(More Fragment)。MF=1 即表示后面还有分片的数据包;MF=0表示这已是若干数据包中的最后一个。
标志字段中间的一位记为 DF(Don't Fragment),只有当 DF=0 时才允许分片。
(7) 段偏置值:该值指出较长的分组在分片后,某个分片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以 8 字节为偏移单位。
(8)生存期:TTL(Time To Live),其单位为秒(s)。生存期的建议值是 32s,但也可设定为 3~4s,甚至为 255s。
(9)协议号:占 8 比特,协议号字段指出此数据包携带的传输层数据是使用何种协议,以便目的主机的 IP 层甜美应将此数据包上交给哪个进程。常用的一些协议和相应的协议字段值(写在协议后面的短弧中)是:UDP(17)、TCP(6)、ICMP(1)、GGP(3)、EGP(8)、IGP(9)、OSPE(89)以及 OSI 的第 4 类运输协议 TP4(29)。
(10) 首部检验和:此字段只检验数据包的首部,不包括数据部分。不检验数据部分是因为数据包每经过一个结点,结点处理机就要重新计算一下首部检验和(一些字段,如寿命、标志、片偏移等都可能发生变化),如将数据部分一起检验,计算的工作量就太大了。
为了简化运算,检验和不采用 GRC 检验码。IP 检验的计算方法是:将 IP 数据包首部看成为 16 比特字的序列。先将检验的字段置零,将所有的 16 比特字相加后,将和的二进制反码写入检验和字段。收到数据包后,将首部的 16 比特字的序列再相加一次,若首部未发生任何变化,则和必为全 1.否则即认为出差错,并将此数据包丢弃。
(11) 地址:源站 IP 地址字段和目的站 IP 地址字段都各占 4 字节。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |