TCP数据包在网络层的碎片化



假设包含900个字节的TCP消息和20TCP标头字节。现在,如果我们有一个可以支持最大帧大小为512个字节的链接,我们是否会在足够小的传输层处有2个TCP数据包,以便可以通过此链接发送它们。还是在数据链路层上进一步碎片?

以下哪项将发生:

Transport layer:    h1   data
Network layer:      h2 h1 data
data link layer:  frame 1 -  h3 h2 h1 data-part1
                  frame 2 -  h3 h2 h1 data-part2

data link layer:  frame 1 -  h3 h2 h1 data-part1
                  frame 2 -  h3 data-part2

片段是IPv4的DNA的一部分,在IPv4的第3层中发生。IPv6消除了碎片化,并且由发送主机仅发送正确尺寸的数据包(预处理数据)。

路由器在第3层(网络层)上操作,而碎片发生在IPv4的路由器中。如果IPv6数据包太大而无法进行下一个跳跃,则路由器将它们毫不客气地删除,然后将ICMPV6消息发送回源主机。

RFC 791,互联网协议:

互联网协议还提供了分散和重新组装如有必要,长时间的数据报,以通过"小数据包网络。

Internet协议实现了两个基本功能:地址和碎片。

在将消息从一个Internet模块路由到另一个Internet模块中,数据报可能需要穿越最大数据包大小的网络小于数据报的大小。为了克服这个困难,互联网协议中提供了分裂机制。

碎片过程的描述:

碎片

Internet数据报的分裂是必要的在允许大包大小且必须穿越的本地网中将数据包限制为较小的本地网以达到其尺寸目的地。

可以标记"不要碎片"的Internet数据报。任何互联网数据报,因此标记不应在任何下面互联网上分散情况。如果Internet数据报标记为不碎片将其送到目的地而不破碎,它是取而代之的是丢弃。

跨本地网络的破碎,传输和重新组装Internet协议模块不可见的是Intranet碎裂,可以使用[6]。

互联网分裂和重新组装过程需要能够将数据报分解为几乎任意数量的零件稍后重新组装。碎片的接收器使用标识字段以确保不同数据报的片段不混杂。片段偏移字段告诉接收器片段在原始数据报中的位置。碎片偏移长度确定原始数据报的部分这个碎片。更多的碎片标志(通过重置)表示最后片段。这些字段提供了足够的信息重新组装数据报。

标识字段用于区分一个来自另一个的数据报。一个原始协议模块Internet数据报将标识字段设置为必须对于该源用途对和协议是唯一的数据报将在Internet系统中处于活动状态。原始完整数据报的协议模块将更多的碎片标志设置为零,片段偏移为零。

要分布一个长的Internet数据报,一个Internet协议模块(用于例如,在网关中)创建两个新的Internet数据报和副本互联网标题字段的内容从长数据报到两个新的互联网标题。长数据报的数据被划分在8八位(64位)边界上分为两部分(第二部分可能不是8个八位字节的组成倍数,但第一个必须是)。在第一个部分NFB中调用8个八位位块的号码(对于号码碎片块)。数据的第一部分放在第一个新的Internet数据报,总长度字段设置为第一个数据报的长度。更多的碎片标志设置为一个。数据的第二部分放置在第二个新互联网中数据报,总长度字段设置为第二个数据报。越来越碎片的标志具有与长数据报。第二个新的片段偏移字段Internet数据报设置为该字段的值数据报和NFB。

可以将此过程概括为n-way拆分,而不是

的双向拆分。

组装Internet数据报的片段,Internet协议模块(例如,在目标主机上)结合了互联网所有这些字段都具有相同值的数据报:标识,来源,目的地和协议。组合是通过将每个片段的数据部分放在相对中完成该片段的互联网中片段偏移指示的位置标题。第一个片段将具有片段偏移零,并且最后一个片段将使更多的碎片标志重置为零。

最新更新