前语
在IP协议的报头中,除了TTL字段,还有几个字段是非常重要的,这便是咱们今日要评论的标识符、标志位以及偏移量,这3个字段在IP数据报的分片与重组中,是非常重要的字段。
咱们都知道,不同类型的网络,其MTU(最大传输单元)各不相同,如以太网中,最大的传输帧为1518字节,FDDI为4500字节,令牌环帧在4500字节到17800字节之间,而IP协议的一个重要功用,便是能够对传输的数据大于硬件接口的MTU时,对其进行分段传输。即大于MTU的数据报将被分为2个或多个的适宜的巨细被传输。一个分片在抵达接纳主机的途径中,还或许被持续分片,因而,分片的IP数据报或许会以不同的途径传输到接纳主机,接纳主机经过一系列的重组,将其还原为一个完好的IP数据报,再提交给上层协议处理。
IP标识符
IP标识符、标志、偏移量3个字段在IP报头中的方位如下图1所示:
在发送数据报前,发送主机给每个数据报一个ID值,放在16位的标识符字段中。此ID用于标识仅有的数据报或数据流。接纳主机使用此ID对收到的数据报进行重组。正如前面所说,当分片的IP数据报从源地址发送到意图地址的时分,因为网络推迟或许不同的传输途径的联系,在抵达意图主机时,这些分片数据报并不总是有序的摆放,而是处于一种无序状况,因而,接纳主机便用此ID判别接纳的这些分片数据报是否归于同一个数据流,然后再进行重组(重组将在偏移量中评论)。
标志
标志字段在IP报头中占3位,第1位作为保存,置0;第2位,分段,有两个不同的取值:该方位0,表明能够分段;该方位1,表明不能分段;第3位,更多分段,相同有两个取值:该方位0,表明这是数据流中的最终一个分段,该方位1,表明数据流未完,后续还有分段,当一个数据报没有分段时,则该方位0,表明这是仅有的一个分段。见下图2:
当意图主机接纳到一个IP数据报时,会首先查看该数据报的标识符,并且查看标志位的第3位是置0或置1,以确认是否还有更多的分段,假如还有后续报文,接纳主机则将接纳到的报文放在缓存直到接纳完一切具有相同标识符的数据报,然后再进行重组。
更多分段位能够让接纳主机判别分片的数据报是否发送结束;而分段位除了能够将将数据报分段,并且还能够完成另一个用处,在某些状况下,能够使用分段位动态的找到网络端到端的MTU巨细。假如路由器装备时,置此位为0,则当主机测验发送一个比传输途径上的数据报大的帧时,路由器不转发该帧,而是丢掉,并给源主机发送%&&&&&%MP报文,阐明该数据报太大,源主机使用此信息调整数据报巨细,再从头发送。
偏移量
13位的偏移量字段用来表明分段的数据报在整个数据流中的方位,即相当于分片数据报的顺序号。发送主机对榜首个数据报的偏移量置为0,而后续的分片数据报的偏移量则以网络的MTU巨细赋值。偏移量关于接纳方进行数据重组的时分,这是一个要害的字段。关于分片的数据段(单位:字节)有必要为8的整数倍,不然IP无法表达其偏移量。如下图3所示:
以太网中,源主机假如需求经过UDP传送3000字节的数据到意图主机,这时的分段状况如下图4所示(在同一网段):
此处需求留意的是关于分片1的报头,相关于其他两个分片的报头而言,要多出8个字节UDP协议的报头开支,因而,在核算实践传输的数据净载荷时,分片1要多减去8字节UDP报头。最终,接纳主机经过此偏移值将数据重组成完好的数据报。
总结
IP协议虽然是咱们习以为常的一个协议,可是,关于其报头结构,报头中每个字段的意义,仍是需求咱们不断学习,才干真实了解IP协议的精华。