null第5章 IP
第5章 IP协议因特网的核心协议是IP和TCP两大协议。
作用:IP协议是TCP/IP协议簇中的核心协议,提供数据传输的最基本服务,是实现网络互联的基本协议。
位置:IP协议位于网络层,位于同一层次的协议还有下面的ARP和RARP以及上面的因特网控制报文协议ICMP和因特网组管理协议IGMP。
关系:ARP和RARP报文不被封装在IP数据报中,而ICMP和IGMP的数据则要封装在IP数据报中进行传输。由于IP协议在网络层中具有重要的地位,人们又将TCP/IP协议的网络层称为IP层。
IP是不可靠的无连接数据报协议,提供尽力而为的传输服务。null正因为IP协议采用了尽力传输的思想,所以使得IP协议的效率非常高,实现起来也较简单。
IP层通过IP地址实现了物理地址的统一;
通过IP数据报实现了物理数据帧的统一。IP层通过对以上两个方面的统一达到了向上屏蔽底层差异的目的。
重点讨论IP数据报的格式和无连接数据报的传输机制。第5章 IP协议第5章 IP协议5.1 IP数据报格式
5.2 无连接数据报传输
5.3 IP数据报选项
5.4 IP模块的结构5.1 IP数据报格式5.1 IP数据报格式IP协议所处理的数据单元称为IP数据报。nullIP数据报=首部+数据
IP数据报首部分为定长部分和变长部分。
(1)版本(4位)表示数据报的IP协议版本,版本号
了数据报的格式。IPv4=4
(2)首部长度(4位)指出数据报首部长度(32位为单位)。
(3)服务类型(8位)规定对本数据报的处理方式。服务类型的含义如图1-2所示。null
服务类型null随着因特网应用的迅速发展,多媒体数据传输和实时应用对TCP/IP的服务类型提出了更高的要求,为此,因特网工程任务组IETF将IP数据报的服务类型字段改成了区分业务字段。区分业务字段仍然是8位,最后两位保留未用,前面6位为“码点” 。6位码点可以提供64种不同的编码,对应不同的业务。 null(4)数据报总长度指示整个IP数据报的长度。
数据长度=数据报总长度-首部长度×4
(5)标识(16位)由信源机赋给IP数据报,每个IP数据报有一个本地惟一的标识符。数据报的标识由信源机产生,每次自动加1后分配给要发送的数据报。
(6)标志(3位)用于表示该IP数据报是否允许分片和是否是最后的一片。
(7)片偏移(13位)表示本片数据在它所属的原始数据报数据区中的偏移量(以8字节为单位)。
(8)生存时间TTL(8位)控制IP数据报在网络中的传输时间。
(9)协议(8位)指明被IP数据报封装的协议。(P83)null(10)首部校验和(16位)用于保证首部数据的完整性。
(11)源地址表示本IP数据报的最初发送者的IP地址;目的地址一般表示本IP数据报最终接收者的IP地址。
(12)IP选项用于控制数据在网络中的传输路径、
数据报走过的路由器以及获取数据报所途径经过的路由器的时间戳。
(13)数据字段用于携带上层数据,长度受数据报总长度限制(≤65535-首部长度×4)。返回5.2 无连接数据报传输5.2 无连接数据报传输IP数据报传输是IP层要解决的重要问
之一,是影响数据传输效率的一个重要因素。
IP数据报在经过路由器进行转发时一般要进行三个方面的处理:
首部校验
路由选择
数据分片
这一节将讨论通常首部校验和数据分片问题。5.2.1 首部校验5.2.1 首部校验IP层不对数据进行校验。原因:上层传输层是端到端的协议,进行端到端的校验比进行点到点的校验开销小得多,在通信线路较好的情况下尤其如此。另外,上层协议可以根据对于数据可靠性的要求,选择进行校验或不进行校验,甚至可以考虑采用不同的校验方法,这给系统带来很大的灵活性。
IP协议对IP数据报首部进行校验。原因:
IP首部属于IP层协议的内容,不可能由上层协议处理。
IP首部中的部分字段在点到点的传递过程中是不断变化的,只能在每个中间点重新形成校验数据,在相邻点之间完成校验。null两个层次的校验如图所示。
IP数据报的首部通过校验和(Checksum)来保证其正确性。null计算首部校验和:
发送方将IP数据报的首部按顺序分为多个16比特的小数据块
首部校验和字段的初始值被设置为0
用1的补码算法对16比特小数据块进行求和
最后再对结果求补
将经过计算得到的首部校验和填回到数据报的首部校验和字段,封装成帧后发给通往信宿的下一跳设备。
校验:下一跳设备作为接收方将收到的IP数据报的首部再分为多个16比特的小数据块,用1的补码算法对16位小数据块进行求和,最后再对结果求补,若得到的结果为0,就验证了数据报首部的正确性。null发送方用1的补码计算和数时,首部校验和字段被设置为0,等于没有参加计算,求补后的校验和与和数各位正好相反。
接收方用1的补码计算和数时,新的首部校验和字段已经被加入,正确情况下所得的和数应该为0xffff,因此,求补后的结果应该为0x0000。1的补码算法1的补码算法 1的补码算法中指定了两个二进制数相加的
。规则指出:
如果两个1相加,结果是0,同时产生一个1的进位;1+1=10
如果将三个1相加,那么结果是1,并且也产生一个1的进位;1+1+1=11
如果最后一列数字的和产生了进位,那么最后的结果必须加1.null例子:本例中没有IP选项,所以首部长度为5,数据总长度为128字节,数据报的标识为1,未分片,TTL值为4,封装的是TCP协议数据,源地址和目的地址分别为:192.168.20.86和192.168.21.20。
计算中要注意加上进位。生成的校验和为3005。null接收方对同一数据报首部进行校验:求补后得到的校验和值为0,表明IP数据报首部在传输过程中没有出现差错。5.2.2 数据分片与重组 5.2.2 数据分片与重组 IP数据报在从信源到信宿的传输过程中要穿过多个不同的网络。由于各种物理网络存在着差异,对帧的最大长度有不同的规定,因此,各个物理网络的最大传输单元MTU可能不同。物理网络的MTU是由硬件决定的。
通常,网络的速度越高,MTU也就越大。如以太网中,最大的传输帧为1518字节,FDDI为4500字节,令牌环帧在4500字节到17800字节之间 nullTCP/IP协议的封装:
将数据报以从信源到信宿路径上的最小MTU进行封装(IPv6)
将数据报先以信源网络的MTU进行封装,在传输过程中再根据需要对数据报进行动态分片(IPv4)
1.数据报分片1.数据报分片当数据报被分片时,每个分片都会得到一个首部。分片首部的大部分内容和原数据报相同,如IP地址、版本号、协议和数据报标识等,所不同的是标志字段、数据报总长度和片偏移。分片既可以带也可以不带原数据报的选项.
在IP数据报中与分片相关的字段是标识字段、标志字段和片偏移字段。
1)数据报标识是分片所属数据报的关键信息,是分片重组的依据。 null 2)标志字段由3位构成,低两位有效,最高位未用;D位表示是否允许该数据报分片;M位表示该片是否是分片的最后一片。
3)片偏移字段指出本片数据在原始数据报数据区中的偏移量。由于各分片独立传输,其到达信宿机的顺序无法保证,需要片偏移为重组提供顺序信息。null一个例子 null该例子中数据报首部长度为20个字节,数据区长度为1600个字节,进入MTU为1420字节的物理网络时进行第一次分片。第一次分片后,形成一个1400字节的分片和一个200字节的分片。第一片的片偏移为0(0/8),片未完标志为1;第二片的片偏移为175(1400/8),片未完标志为0,表示该片是数据报的最后一片。当第一个分片进入MTU为820字节的物理网络时再次进行分片。第二次分片后,又形成了一个800字节的分片和一个600字节的分片。前者的片偏移为0(0/8),片未完标志为1;后者的片偏移为100(800/8),片未完标志也为1。
分片必须满足两个条件:
各片尽可能大,但必须能为帧所封装,
片中数据的大小必须为8字节的整数倍,否则IP无法表达其偏移量。 2.分片的重组2.分片的重组分片可以在信源机或传输路径上的任何一台路由器上进行,而分片的重组只能在信宿机上进行。 (为什么?)
信宿机在进行分片的重组时,采用了一组重组定时器。开始重组时,启动定时器,如果重组定时器超时时,仍然未能完成重组(由于某些分片未及时到达信宿机),信宿机的IP层将丢弃该数据报,并产生一个超时错误,报告给信源机。
片重组的控制主要根据数据报首部中的标识、标志和片偏移字段。
数据报的分片和重组操作对用户和应用程序的编程人员都是透明的,分片和重组操作由网络操作系统自动完成。null目的主机进行重组
减少了中间路由器的计算量
路由器可以为每个分片独立选路
返回5.3 IP数据报选项5.3 IP数据报选项IP选项是IP数据报首部中的变长部分
用于网络控制和测试目的(如源路由、记录路由、时间戳等)。
IP选项的最大长度不能超过40字节。
IP选项在使用时是可选的,但在TCP/IP软件的实现中却是必须有的,也就是说用户可以使用也可以不使用IP选项。但所有实现IP协议的设备必须能处理IP选项5.3.1 选项格式5.3.1 选项格式IP选项的格式如图5-10所示。选项由三个部分组成:
选项码(Option Code)
选项长度
选项数据。null选项码由8位构成,分为复制位(COPY)、选项类和选项号3个子字段。
复制位占一比特,用于控制分片时是否将选项复制到各个分片。复制位为“1”时,表示将原数据报所带的选项复制到所有的分片中,复制位为“0”时,表示仅将选项复制到第一个分片中。
选项类占2比特,用于定义选项的一般作用。
选项号占5比特,用于定义选项的具体类型。选项类区别选项的一般目的,而选项号则对同一类选项进行进一步的细化。
选项长度为8位,用于定义选项的长度。长度信息除包括选项数据部分的长度外还包括选项码和长度字段本身。有些选项不含长度字段。
选项数据不定长,用于定义选项请求。选项是单方向发送的请求,不需要信宿机进行响应。5.3.2 选项类型5.3.2 选项类型两位IP选项类定义了四种选项类型:00用于IP数据报路径的控制和测试;10用于时间戳的测试;01类和11类未用。
每一选项类又由选项号进行细分,其中00类中常用的有5个选项号,10类中只有1个选项号在用。
选项类 选项号 长度 含义
00 00000 无 选项结束
00 00001 无 无操作(作为填充数据)
00 00011 变长 宽松源路由
00 00111 变长 记录路径
00 01001 变长 严格源路由
10 00100 变长 时间戳1.单字节选项1.单字节选项表中的前面两个选项为单字节选项,负责标识IP选项的结束和对IP数据报首部进行填充。当IP数据报首部中选用了IP选项时,选项不定长,而数据报要求首部是32位的整数倍,若不是,则需要进行填充。
填充由“无操作”(No Operation)符和选项结束符(End of Option)组成。当需要一个以上的字节对选项进行填充时,先用多个“无操作”符进行填充,最后用选项结束符结束整个选项。2.源路由选项2.源路由选项作用:通常IP数据报在传输时,由路由器自动为其选择路由。但网络管理人员为了使数据报绕开出错网络,或者为了对某特定网络的吞吐率进行测试,需要在信源机控制IP数据报的传输路径。源路由(Source Route)就是为了满足这一要求而设计的选项。
方法:源路由指由信源机上的发送者规定本数据报穿越网络的路径。
种类:源路由选项分为两种。
严格源路由
宽松源路由(1)严格源路由(1)严格源路由严格源路由选项要求信源机上的发送者指定数据报必须经过的每一个路由器。也就是说,数据报必须严格按照发送方规定的路径穿过每一个路由器。严格源路由选项的格式如图所示。null选项码137的含义是:复制位为“1”(严格源路由分片时选项要复制到各个分片),选项类为“00”,选项号为“01001”,即128+0+9=137。
指针字段的含义:
当设备(信源机或路由器)发出带该选项的数据报时,指针指的是该设备的下下跳路由器的入口IP地址。
当一个路由器收到数据报时,指针指的是该路由器的下一跳IP地址,路由器转发数据报前要将指针值加4,这样发出去的数据报的指针又指向了它的下下跳路由器的入口IP地址。
这里要注意的是,源路由对于数据报中目的IP地址的处理和一般情况下有所不同。在源路由传输过程中数据报的目的IP地址会不断变化,而且选项中的IP地址表也会发生变化。null信源机从上层收到源路由IP地址表后,将第一个IP地址从列表中去掉(将该IP地址作为当前数据报的目的地址),再将剩余的表项前移,然后将最终要去的目的地址写入到选项地址表的最后。结果如图5-12中的A选项表所示。 (2)宽松源路由(2)宽松源路由宽松源路由IP选项的格式与严格源路由相同,如图所示。所不同的是,宽松源路由在选项的IP地址表中并不给出一条完备的路径,而是只给出路径中的某些关键点,关键点之间无直接物理连接时,通过路由器的自动路由选择功能进行补充。 3.记录路由3.记录路由记录路由选项用于记录IP数据报从信源机到信宿机所经过路径上各路由器的IP地址。可以测试路由器的路由配置是否正确记录路由选项格式与源路由选项格式相同,如图所示。 null地址区域的大小由源机预先分配(根据对所需记录的地址数的估计)并初始化。
指针域指向地址区域中下一个可存放地址的位置。假如预先分配的地址区域大小不足以记录下全部路径,IP软件将放弃记录余下地址的尝试。4.时间戳4.时间戳时间戳选项用于记录IP数据报经过各路由器时的当地时间,根据时间戳可以估算IP数据报从一个路由器到另一个路由器所花费的时间,从而帮助分析网络的吞吐率和负载情况。时间戳选项格式如图5-15所示。 (0+64(10)+4=68)null溢出域记录因信源机分配的数据空间不够而未能记录下来的时戳个数。
标志域用于控制时戳选项格式。其意义如下:
标志值 意 义
0 只记录时间,不记录IP地址
1 时间、地址同时记录
3 地址由源机指定,只记录指定地址处的时间
时戳中的时间采用世界时间(universal time)表示,以千分之一秒为单位。
注意:1) 假如采用标志值为“1”的时戳,该选项可以用于替代记录路径选项。
2)由于互联网中各网关时钟并不严格同步,时戳只能作为参考。返回5.4 IP模块的结构5.4 IP模块的结构IP协议的主要功能包括将上层传来的数据封装成IP数据报,对数据报进行分片和重组,处理数据环回、IP选项、校验码和TTL值,进行路由选择等。本章要点本章要点IP是不可靠的无连接数据报协议,提供尽力而为的传输服务。
IP层通过IP地址实现了物理地址的统一,通过IP数据报实现了物理数据帧的统一。IP层通过这两个方面的统一屏蔽了底层的差异,向上层提供了统一的服务。
IP数据报由首部和数据两部分构成。首部分为定长部分和变长部分。选项是数据报首部的变长部分。定长部分20字节,选项不超过40字节。
IP数据报中首部长度以32位字为单位,数据报总长度以字节为单位,片偏移以8字节(64比特)为单位。数据报中的数据长度=数据报总长度-首部长度×4。nullIP协议支持动态分片,控制分片和重组的字段是标识、标志和片偏移,影响分片的因素是网络的最大传输单元MTU,MTU是物理网络帧可以封装的最大数据字节数。通常不同协议的物理网络具有不同的MTU。分片的重组只能在信宿机进行。
生存时间TTL是IP数据报在网络上传输时可以生存的最大时间,每经过一个路由器,数据报的TTL值减1。
IP数据报只对首部进行校验,不对数据进行校验。
IP选项用于网络控制和测试,重要包括严格源路由、宽松源路由、记录路由和时间戳。
IP协议的主要功能包括封装IP数据报,对数据报进行分片和重组,处理数据环回、IP选项、校验码和TTL值,进行路由选择等。返回