1.IP数据报组成及功能
IP分组称为数据报,由报头和数据两部分组成,数据报总长度限制在65535个B以内,其中,报头长度20~60B,因不同选项的运用而不同,剩余部分是来自上层数据。图5-2所示为IP数据报一般格式。
图5-2 IP数据报一般格式
IP数据报的数据是指上层协议传送过来的数据报,这些数据对IP模块是透明的。IP模块只产生IP报头将这些数据包装起来,然后如实传输到下一层。对从下层接收到的数据报,IP模块则把附加IP报头剥除并进行处理,然后再把数据传输到上一层。
2.IP报头基本格式
图5-3给出IP报头基本格式,报头长度20~60B,若不含Option,则报头基本长度20B。Option字段非必需,主要用于测试与安全。Padding是位填补字段,配合Option使用。
图5-3 IP报头基本格式
VER:Version是IP使用的IP协议版本,长度4bit。IP协议有IPv4、IPv6两种版本,IPv4的VER值为4,IPv6的VER值为6。
IHL:IHL(Internet Header Length)是IP报头的长度,该字段长度是4bit,IHL以4字节为计算单位。IP报头基本长度20B,所以IHL最小值为5;若含Option,IP报头最大长度60B,因此IHL最大值为15。
Service Type:服务类型表示数据报在网络中传输的处理方式,长度8bit,含3位优先等级位(precedence)、4位服务类型参数(Type Of Service,TOS)和1位保留位。
服务类型字段第7~5位是优先等级位,分为8级,数值越高则等级越高,表示该数据报越重要,须优先处理。当路由器出现拥塞而必须丢弃一些数据报时,低优先等级的数据报首先被丢弃。表5-1给出各种优先等级的值。
表5-1 服务类型优先等级
到目前为止,只有少数特殊网络如AUTODINII、ARPANET、PRNET等提供优先等级服务,IPv4网络很少使用。一般网络通常为Routine等级(000:路由信息)。
服务类型字段第4~1位是服务类型参数位(TOS),每一位代表不同标准,分别为延迟(Delay)、通信量(Throughput)、可靠度(Reliability)、成本(Cost)。虽每一位可为0或1,但TOS每一个组合的4个位中最多只有一位为l,其他3个位为0,默认值为0000。表5-2给出TOS的5种不同组合。
应注意,服务类型4个参数D、T、R、C并非简单组合,而是必须“牺牲”某些参数才可获得既定性能。如希望实现最小代价(0001),则必须牺牲Delay、Throughput、Reliability这3个参数,将其他的值都设为0,而只有“Cost”设为1。所以,在提高某参数性能的同时,通常会降低其他参数性能。不同应用程序对这4个参数的要求不同,见表5-3。
表5-2 服务类型参数(TOS)(www.xing528.com)
表5-3 某些应用程序的TOS组合
服务类型字段的第0位保留供以后使用,其值必须为0。
Total Length:数据报总长度。包括报头和数据,长度16bit,最大值是216−1,即65535B。以目前技术看,长度为65535B的数据报显然太长,大部分网络都无法将如此长的数据报通过。但随着传输、交换、存取技术的进步,宽频网络日益普及,允许通过网络传输的数据报的长度可能大幅提高,将实现65535B数据报的传输。
Identification:ID是由源主机指定的数据报标识码,用于将分割后的小数据报重组成原始数据报。长度16bit,可标识65535个不同的数据报。ID唯一标识数据报或数据报的流,属于同一个流的数据报拥有相同的ID。目的主机在接收到分割后的小数据报时,根据此字段将所有ID相同的数据报放在重组表的同一区,然后按分割偏移值重组属于同一流的数据报。
Flags:Flags是分割控制标志,长度3bit。最高位是预留位,其值为0。第二位是“不分割(DF)”标志位,为0表示可分割,为l表示不分割;第三位是“更多分割(MF)”标志位,为0表示是最后一个数据报,为1表示后面还有数据报。
“DF”标志位还有一个重要用途,就是与ICMP信息配合使用以找出“传送路径最大传送单元(PMTU)”。基本操作过程是:首先源主机配置DF为1,然后将数据报发出,当数据报长度超过下一个网段的MTU时,路由器将丢弃该数据报,并发回“Destination Unreachable”的ICMP报文到源主机,表明DF标志已设但必须分割数据报才可传输。源主机可利用此信息重新调整MTU值,继续该过程,直到获得正确MTU值。该方法称“Path MTU Discovery”。
Fragment offset:分割偏移表示分割后的数据报在原始数据报中的位置,以8B为计算单位,第一个数据报偏移是0。未分割的数据报此值为0。该字段长度13bit,所以分割偏移量的最大值为213-1,即8191。
Time to Live:表示数据报在IP网络中能存在的最长时间,长度8bit,所以TTL最大值为28-1,即255s。TTL值由源主机设定,通常设为传输过程中可能经过的路由器数量的两倍。当数据报在网络中传输时,每经过一个路由器,TTL值减1,当路由器检测到TTL值为0时,则必须将该数据报丢弃。这样可避免数据报在两个或更多路由器之间停留时间过长,避免网络资源浪费。TTL另一用途是源主机有意限制数据报行程。如源主机希望把数据报限制在局域网范围,则把TTL设为l,当数据报到达第一个路由器时,TTL值便减为0,此时,路由器必须丢弃该数据报,则该数据报不会流出源主机所属的局域网。
Protocol:该字段表示IP协议的上一层协议,长度8bit。各种高层协议都有对应的Protocol值,表5-4是某些高层协议的Protocol值
表5-4 某些高层协议的Protocol值
Header Checksum:报头校验和字段长度16bit,用于数据报传输过程中的错误检测。数据报在网络中传输时,每经过一个路由器,IP报头某些字段就会发生变化,所以网络中的每一结点都必须进行数据报的校验和检测。
源主机产生IP报头时,先将报头校验和字段值设为0,然后将报头划分为16位的段,计算各段总和,再转换成反码,即可得到校验和,最后将校验和填入报头校验和,目的主机接收到数据报后,对其IP报头重复上述操作,计算出各段的总和并转换成反码,如得到的校验和为0,则表示该数据报无错,目的主机接收该数据报,否则就将该数据报丢弃。
Source Address:源地址字段长度为32bit,表示发送数据报的主机IP地址。在IP数据报从源主机发送到目的主机过程中,源地址字段内容必须保持不变。如分割数据报产生新的报头,必须将源地址字段的内容复制到所有新的IP报头的源地址字段。
Destination Address:目的地址字段长度32bit,表示接收数据报的目的主机的IP地址。在IP数据报从源主机发送到目的主机的过程中,目的地址字段内容必须保持不变。如分割数据报产生新的报头,必须将目的地址字段的内容复制到所有新的IP报头。
Padding:位填补字段,长度可变。当IP报头 长度不是4B的倍数时,就利用Padding在报头的最后面填入一连串0,直到报头的长度成为4B的倍数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。