繁体   English   中英

网络层TCP数据包的分片

[英]Fragmentation of TCP packet at network layer

假设一个TCP消息包含900字节的数据和20字节的TCP标头。 现在,如果我们有一个链接可以支持最大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协议模块不可见的跨本地网络的分段,传输和重组称为内部网分段,可以使用[6]。

Internet分段和重组过程需要能够将数据报分解为几乎任意数量的片段,以便稍后进行重组。 片段的接收者使用标识字段来确保不同数据报的片段不会混合。 片段偏移字段告诉接收者片段在原始数据报中的位置。 片段的偏移量和长度确定了此片段覆盖的原始数据报的部分。 more-fragments标志指示(通过重置)最后一个片段。 这些字段提供了足够的信息来重组数据报。

标识字段用于区分一个数据报的片段和另一个数据报的片段。 Internet数据报的始发协议模块将标识字段设置为对于该源-目的地对和协议必须唯一的值,以确保该数据报在Internet系统中处于活动状态。 完整数据报的始发协议模块将more-fragments标志设置为零,并将片段偏移设置为零。

为了分段较长的Internet数据报,Internet协议模块(例如,在网关中)将创建两个新的Internet数据报,并将Internet报头字段的内容从长数据报复制到两个新的Internet报头中。 长数据报的数据在8个八位位组(64位)边界上分为两部分(第二部分可能不是8个八位位组的整数倍,但第一部分必须是)。 在第一部分NFB中调用8个八位位组块的数量(对于分块数量)。 数据的第一部分放置在第一个新的Internet数据报中,并且总长度字段设置为第一个数据报的长度。 more-fragments标志设置为1。 数据的第二部分放置在第二个新的Internet数据报中,并且总长度字段设置为第二个数据报的长度。 more-fragments标志带有与长数据报相同的值。 第二个新的Internet数据报的分片偏移字段设置为长数据报加NFB中该字段的值。

可以将此过程推广到n向拆分,而不是所描述的双向拆分。

为了组装Internet数据报的片段,Internet协议模块(例如,在目标主机上)将Internet数据报的四个字段(标识,源,目标和协议)的值都相同。 通过将每个片段的数据部分放置在该片段的Internet标头中的片段偏移量指示的相对位置来完成组合。 第一个片段的片段偏移量将为零,而最后一个片段的more-fragments标志将重置为零。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM