前言
IP数据报是互联网传输控制协议(Internet Protocol,IP)的数据报格式,由首部和数据两部分组成。
一、首部
IP数据报的首部是控制部分,包含了数据报传输和处理所需的各种信息。首部可以分为固定部分和可变部分。
固定部分:
- 版本:占4位,指IP协议的版本。目前广泛使用的协议版本号为4(即IPv4)。通信双方的协议版本必须一致。
- 首部长度:占4位,表示数据报首部的长度。因首部长度可表示的最大数值是15个单位(每单位为4字节),所以IP的首部长度的最大值为60字节。
- 区分服务:占8位,表示对数据报的服务要求。该字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。其中,前三位表示优先级(0~7,0最低),D、T、R和C分别表示对时延、吞吐量、可靠性和路由服务费用有选择的要求。最后一位未用。
- 总长度:占16位,指整个数据报(包括首部和数据)的长度,单位为字节。数据报的最大长度为65535字节(64KB)。这个字段很重要,因为数据报在传输过程中需要被封装成链路层的帧,而帧有自己的最大传输单元MTU(Maximum Transfer Unit)。如果数据报的总长度超过了MTU,那么就需要对数据报进行分片。
- 标识:占16位,用于数据报各分片最终被重装成原来的数据报。它是一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。目的主机将相同标识字段值的各分片数据报最后进行正确地重装(合片)。
- 标志:占3位,但只有后两位有意义。最低位记作MF(More Fragment),MF=1表示后面“还有分片”,MF=0表示已是最后一个分片。次低位是DF(Don't Fragment),用来控制是否允许数据报分片。只有DF=0才允许分片。
- 片偏移:占13位,指较长的分组在分片后某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始,以便目的主机重装数据报。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节(64位)的整数倍。
- 生存时间:占8位,记为TTL(Time To Live),表示该数据所在网络中的寿命。其单位最初是秒,但为了方便,现在都用“跳数”作为TTL的单位。数据报每经过一个路由器,其TTL值就减1,当TTL值减为零时,就丢弃这个数据报。
- 协议:占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
- 首部检验和:占16位,这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
- 源地址:占32位,表示数据报的发送方地址。
- 目的地址:占32位,表示数据报的接收方地址。
可变部分:
- 可变部分是一个可选字段,其长度可变,从1个字节到40个字节不等,取决于所选择的项目。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段包括安全和处理限制(用于军事领域)、记录路径(让每个路由器都记下它的IP地址)、时间戳(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)、宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址)以及严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)等。
- 增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用,新的IP版本IPv6就将IP数据报的首部长度做成固定的。
二、数据部分
数据部分是高层需要传输的数据。在IP数据报中,数据部分紧跟在首部之后,其长度由总长度字段减去首部长度字段得到。
三、IP数据报的工作原理
封装与发送:在源主机上,传输层的数据交给IP协议后,IP协议要在其前面加上一个IP报头(即首部),用于控制对数据的转发和处理等。然后,通过地址解析协议ARP将目的IP地址映射为物理地址,把IP数据报嵌入数据链路层帧中,交由数据链路层完成将其发送到网络上的工作。
寻址与路由:当IP数据报在网间穿行时,网络上的IP协议需要对它进行寻址和路由选择,以使其正确到达目的地。
分段与重组:
- 分段:如果一个路由器收到一个IP数据报,其长度对下一个物理网络来讲太长,那么就由IP协议将它分成若干个段。分段可以在任何需要的中间路由器上进行。在IP报头中,用标识符、标志和片偏移三个字段来实现对报文的分段。
- 重组:当这些分段到达目的主机时,由端系统中的IP层将其重组成源IP数据报,然后传至传输层处理。
流量控制:IP层还提供初步的流量控制。如果由于IP分组到达主机或路由器太快而被丢弃时,IP层就会发送一个ICMP源抑制报文给发送端,告诉它数据发得太快了。
结语
每一个心灵的闪光瞬间
都是对生活的深深热爱与感悟
!!!