假设TCP消息包含900个字节的数据和20个 TCP头的字节数。现在如果我们有一个可以支持512字节的最大帧大小的链接,我们将在传输层有2个TCP数据包,这些数据包足够小,可以通过此链接发送。或者它们会在数据链路层进一步分散吗?
将发生以下哪种情况:
ScalaCheckExamplesSpec.scala:11: not found: type ScalaCheck
[error] class ScalaCheckExamplesSpec extends Specification with ScalaCheck {
OR
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
答案 0 :(得分:1)
碎片是IPv4的DNA的一部分,它发生在IPv4的第3层。 IPv6已经消除了碎片,发送主机只能发送正确大小的数据包(预分片数据)。
路由器在第3层(网络层)运行,并且在IPv4的路由器中发生分段。如果IPv6数据包对于下一跳来说太大,则路由器会毫不客气地丢弃它们,并将ICMPv6消息发送回源主机。
互联网协议还提供碎片和重组 如果需要,可以通过“小数据”传输长数据报 包“网络。
和
互联网协议实现了两个基本功能:寻址和 碎片。
和
在将消息从一个互联网模块路由到另一个互联网模块时, 数据报可能需要遍历最大数据包大小为的网络 小于数据报的大小。要克服这个困难, 互联网协议中提供了碎片机制。
碎片化过程的描述:
碎片
互联网数据报的碎片化是必要的 在允许大数据包大小并且必须遍历a的本地网络中 本地网络将数据包限制为较小的大小以达到其目的 目的地。
互联网数据报可以标记为“不要碎片”。任何互联网 如此标记的数据报不会被互联网支离破碎 情况。如果互联网数据报标记不碎片不能 传送到目的地而不会破坏它,它就是 丢弃了。
通过本地网络进行分段,传输和重组 互联网协议模块不可见的内容称为内联网 碎片化,可以使用[6]。
互联网碎片和重组程序需要能够 将数据报分成几乎任意数量的碎片 稍后重新组装。片段的接收者使用 识别字段,以确保不同数据报的片段 没有混合。片段偏移字段告诉接收器 片段在原始数据报中的位置。片段偏移 和长度确定所涵盖的原始数据报的部分 这个片段。更多片段标志指示(通过重置) 最后一个片段这些字段提供了足够的信息 重新组装数据报。
标识字段用于区分一个片段 来自另一个人的数据报。一个起源协议模块 互联网数据报将标识字段设置为必须的值 对于当时的源 - 目的地对和协议是唯一的 数据报将在互联网系统中处于活动状态。起源 完整数据报的协议模块将更多片段标志设置为 零,片段偏移为零。
片段化长互联网数据报,互联网协议模块(for 例如,在网关中),创建两个新的互联网数据报和副本 从长数据报到互联网头字段的内容 两个新的互联网标题。长数据报的数据是分开的 在8个八位位组(64位)边界上的两个部分(第二部分 可能不是8个八位字节的整数倍,但第一个必须是)。 在第一部分NFB中调用8个八位字节块的数量(对于数字 片段块)。数据的第一部分放在 第一个新的互联网数据报,并将总长度字段设置为 第一个数据报的长度。更多片段标志设置为1。 第二部分数据放在第二个新的互联网中 数据报,并将总长度字段设置为长度 第二个数据报。更多片段标志带有相同的值 长数据报。第二个新的片段偏移字段 互联网数据报设置为long中该字段的值 数据报加上NFB。
此过程可以推广为n路分割,而不是 双向分裂描述。
汇集互联网数据报的片段,互联网 协议模块(例如在目的地主机)组合互联网 数据报对于四个字段都具有相同的值: 识别,来源,目的地和协议。组合是 通过将每个片段的数据部分放在相对片段中来完成 由该片段的互联网中的片段偏移指示的位置 头。第一个片段的片段偏移为零,和 最后一个片段将更多片段标志重置为零。