分段和重组,分段和重组是什么意思

传输网/接入网/交换网

6人已加入

描述

分段和重组,分段和重组是什么意思

对于不同的网络,其中传送的包大小可能不一样,因此把大包分小的功能是必须的。分段是将数据分组分割成小块以便它们能够适合基础网络的帧。数据报也可以被标记为“不可分段”,如果一个数据报被标记了,那么在任何情况下都不准对它进行分段。如果不分段到不了目的地,那就把包在半路抛弃了。在本地网内进行的重新分段和重组对IP模块是不可见的,这种方法也可以使用。

接收系统将这些分段重新组装成原始的数据分组。对段的重组要求以下四个域有相同的值:标记,源地址,目标地址和协议。将不同的数据报根据自己带的偏移量重新组合为新段,第一个段的偏移量为0,最后一个段的多段标记为0。

MTU(最大传输单元)一词指一个帧中能够传输的最大数据量。不同的网络有不同的MTU大小,所以可能需要将数据分组分段以符合传输它们的网络的帧大小。图F-8阐释了该过程。

分段

图F-8 将数据分组分段以符合它们必须跨越的网络的帧大小网际协议(如IP)使用分段,因为数据分组在其中传输的每个网络都可能有不同的帧大小。分段发生在连接两个具有不同MTU的网络的路由器中。虽然有可能设计出具有相同MTU大小的内部网络,但对于因特网它并不是很好的选择,因为因特网包括几干个独立管理的、互相连接的网络。

因为分段会降低性能,所以它总是不合需要的。事实上,在IPv6中,就不允许分段。大的数据分组总是更可取的,特别是大文件在高性能网络中传输时。但是有些时候,试图消除或减少分段可能会引起额外的问题。IPv6通过依靠终端系统来发现MTU整个的传送路径从而尝试消除对分段的需求。它被称为路径MTU发现,IPv4中已经使用,这在后面有讨论。IPv6将加强这一点。一个重要的概念是每个分段都变成一个新的、更小的IP数据报。这是因为一个新的IP头被附加到数据报中,该数据报包含原始数据报IP头的许多信息以及与分段过程相关的信息。新的IP数据报被放入基础网络的某个帧中。后面讨论并图示了该过程。新数据报(IP头加上数据)的总的大小不能超过该网络的MTU。 

只有目的地对分段的数据分组进行重组。传输路径中的路由器从不执行重组。想一想数据分组被分段后,它的分段可能会不再采用不同的路径到达目的地。所有的分段再次出现的惟一地点就是目的地。接收器启动计时器并开始将分段放入缓冲器中,他们被保留在那里直到所有的分段都到达。如果只是某一个数据分组分段未能出现在目的地,则整个数据分组必须重新传输,因为没有请求和重新传输单个分段的机制。

因为TCP段进入IP数据报而IP数据报进入基础网络的帧,它们中间有一些有趣的关系。首先,TCP段不能大于IP数据报减去IP头。IP数据报的最大大小是65535Byte减去IP头(大小可能在20到60Byte之间)。其大小以4Byte的增量变化,这取决于头选项的设置。极少的数据链连接具有能容纳65K数据报的MTU。以太网的MTU是l500Byte,FDDI的MTU是4500Byte。

下面是一些影响分段大小的其他因素:

每个IP数据报分段必须是8Byte的倍数。

IP头被添加到IP数据报分段中,所以总的分段大小等于(数据分段+IP头)。

MTU指定所允许的最大分段大小(分段+IP头)。 

因为分段必须是8Btye的倍数,总的分段大小可能并不总是等于MTU。假设MTU是512Byte,头大小是20Byte (如果不使用选项,头大小为20Byte)。因为IP数据报只能以8Byte的倍数来分段,该示例网络的最大分段大小(在添加头之前)添加头之前,是488Byte。添加头后,总的分段大小为508Byte,处于5l2Byte的MTU限制范围内。请注意8的下一个倍数是496Byte。加上头之后总的分段大小就是5 l6Byte,超出了MTU范围。

下列字段是IP头中使用的,用来提供分段信息和控制:

数据分组标识符 一个l6bit的字段,使用一个惟一的编号标识所有分段的数据分组。在接收器处理完所有的分段之前,该编号不能被再次使用。

分段偏移 为接收器提供信息以将分段重组成原始的数据分组。改值表明分段中的数据相对于数据开始处的位置。

不分段标志 当设置为1时,不使用分段数据报进行传输。如果不能做到,数据报将会丢失,并将返回一条出错消息到发送器那里(使用 ICMP)。该标志可用于“scout”数据分组,发送这些数据分组以确定网络中可以发送的最大 MTU。请参阅后面的“路径MTU发现”一节。

更多分段标志 当设置为1,该标志表明将会有更多分段。0则表示数据分组是最后一个分段。 

图F-9阐释了一个l300By泌的数据报是如何被分段成网络中的三个数据报的,其中该网络中的MTU为500Byte(为清楚起见,值都被四舍五入)。

图F-9分段过程

路由器必须接受具有指定MTU大小的挂接网络的数据报。而且它们还必须接受大小为576Byte的最小数据报,该值是在1983年RFC 879为了帮助供货商创建能够共同操作的路由器而定义的。RFC 879中的规则指定“主机不能发送大于576Byte的数据报,除非它们明确知道目标主机已准备好接受更大的数据报”。现在,大多数路由器支持l500Byte的MTU,但是在具有未知MTU大小的非本地网络中传输时仍然使用最小值。通常,因特网中的网络现在都支持576Byte的最小MTU。

RFC 879中制定的规则的另一部分是最大的TCP段大小(数据进入IP数据报,而IP数据报则会分段)等于最大的IP数据报大小加上40Byte的头。因此,最大的TCP段大小是536Byte(576Byte减去40Byte)。

大多数操作系统都提供有更改MTU大小的方法。例如,在Windows 98,可以按如下方式查看并更改拨号网络的设置。打开“控制面板”中的“网络”实用程序,单击“配置”选项卡,选项“拨号适配器”,然后单击“属性”。在“高级”选项卡中,单击“IP数据分组大小”。出现下列可用的值:  自动默认设置 大 1500Byte?

中 1000Byte  小 576Byte??  在“自动”模式中,所有低于128kbit/s的PPP连接都使用576Byte的MTU,而高于128kbit/s的连接则使用1500Byte的MTU。

路径MTU发现

最大转移单位(MTU)是对单个传输的数据字节最大号码限制的链接层。路径MTU是源节点和目标节点之间的路径中的所有链接中的最小MTU。路径MTU发现是一个过程,在这个过程中,数据分组就像“scout”一样被发送到网络中以发现最小的路径MTU。发现最小的MTU后,发送器可使用该值作为最大的IP数据报大小,以便在传输过程中不用分段数据分组。如前所述,分段会增加开销并降低性能。只要可能就应该使用大的数据分组。

MTU路径的发现过程

我们使用非碎片比特在IP头信息作为动态地发现一条给定的线路的路径MTU标记。消息提供者承担一条路径的PMTU是已知的MTU的第一个中断段。

他需要发送所有的数据包并且设置非段位。

如果沿着目的主机的路径,有一路由器需要数据包到片段为了把它传递给下一个中断段,如果非段位被设置,将产生一条ICMP错误消息(类型3代码4“段需要和DF设置”)。

当发送主机收到ICMP错误消息时应该减少假定的PMTU。

当估计的PMTU是足够低的数据包不成碎片时进程能结束。在一些时候形成碎片的数据包,消息提供者自己能停止该过程。DF位通常被加装在所有的数据包,如果一条路由变化成目的主机,并且PMTU降低,我们就能发现借此发现它。

因为在路由上拓扑的变化,一条路径的PMTU可能会增加。为了能够检测到它,发送主机应为此链接周期性地增加假定的PMTU。在ICMP中的MTU链接领域 " 碎片存储需要和DF设定 "的错误信息携带MTU跳跃,使来源主机能够知道他需要设置PMTU那条路径以外允许数据包的传送的准确的值(路由器)没有碎片。

路径MTU发现的工作原理如下:

1.发送器传输数据分组(通常是本地网络的默认大小)并将“不分段”标志设置为1。

2.如果数据分组大于网络中的任何MTU,连接到该网络的路由器将会丢失数据分组并返回给发送器一条ICMP消息。该消息指示如果数据分组不分段,将无法转发而且还包含引起问题的网络的MTU。

3.发送器再次尝试新的数据分组大小并从第l步开始处理。连接到某个具有更小MTU的网络的路由器可能丢失数据分组并返回一条错误消息。 

通过使用路径MTU发现,系统可以在多个使用尽可能最大的数据分组的网络中发送数据分组而不用支付分段及重组的开销。

但是,路径MTU发现也有它自己的成本。实际的数据直到发现最好的MTU以后才传输,这就造成了延迟。使用新的MTU大小,几个路由器可能都返回错误消息。而且,发现数据分组使用网络带宽并需要网络中路由器的额外处理。尽管如此,人们认为这种带宽的使用以及处理还是比分段数据报要优越。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分