📜  网络层分片

📅  最后修改于: 2021-09-28 11:07:12             🧑  作者: Mango

先决条件 – IPv4 数据报分段和延迟

当数据报的最大大小大于可以容纳一帧的最大数据大小时,即其最大传输单元 (MTU) 时,网络层会进行分段。网络层将从传输层接收到的数据报分成片段,从而不中断数据流。

  • 由于 IP 报头的总长度为 16 位,因此 IP 数据报的最大大小 = 2 16 – 1 = 65, 535 个字节。
  • 它由目的端的网络层完成,通常在路由器处完成。
  • 由于传输层的明智(良好)分段,源端不需要分段,即代替在传输层进行分段和在网络层进行分段,传输层查看数据报数据限制和帧数据限制并以这样的方式进行分段:生成的数据可以很容易地放入一个框架中,而无需碎片化。
  • 接收器使用 IP 标头中的标识(16 位)字段来标识帧。帧的每个片段具有相同的标识号。
  • 接收器使用 IP 标头中的片段偏移量(13 位)字段识别帧序列
  • 由于分段引入的额外报头,因此存在网络层的开销。

用于分段的 IP 标头中的字段 –

  • 标识(16 位)——用于标识同一帧的片段。
  • 片段偏移量(13 位)——用于识别帧中的片段序列。它通常表示片段之前或之前的数据字节数。
    可能的最大片段偏移量 = (65535 – 20) – 1 = 65514
    {其中 65535 是数据报的最大大小,20 是 IP 报头的最小大小}
    因此,我们需要 ceil(log 2 65514) = 16 位用于片段偏移,但片段偏移字段只有 13 位。因此,为了有效地表示,我们需要将片段偏移字段按比例缩小 2 16 /2 13 = 8,作为缩放因子。因此,除最后一个片段之外的所有片段都应该具有 8 的倍数的数据,以便片段偏移量 ∈ N。
  • More fragment (MF = 1 bit) –说明是否有更多的片段在这个片段之前,即如果 MF = 1,更多的片段在这个片段之前,如果 MF = 0,它是最后一个片段。
  • 不分段(DF = 1 位)——如果我们不希望数据包被分段,则设置 DF,即 DF = 1。

片段的重组——

它只发生在目的地而不是路由器,因为数据包采取独立的路径(数据报数据包交换),所以所有可能不会在路由器相遇,因此可能会再次出现分片的需要。片段也可能无序到达。

算法 –

  1. Destination 应标识数据报是从 MF、Fragment offset 字段中分片的。
  2. 目的地应从标识字段中标识属于同一数据报的所有片段。
  3. 识别第一个片段(偏移量 = 0)。
  4. 使用标头长度、片段偏移量识别后续片段。
  5. 重复直到 MF = 0。

效率 –

效率 (e) = 有用/总计 =(不带标题的数据)/(带标题的数据)
吞吐量 = e * B { 其中 B 是瓶颈带宽 }示例 –最大传输单元 (MTU) 为 200 字节的 IP 路由器已收到大小为 520 字节且 IP 标头长度为 20 字节的 IP 数据包。 IP 标头中相关字段的值。

说明 –由于 MTU 是 200 字节,20 字节是标头大小,所以数据的最大长度 = 180 字节,但不能用片段偏移表示,因为它不能被 8 整除,因此,可行的最大数据长度 = 176字节。
片段数 = (520/200) = 3。
标头长度 = 5(因为缩放因子为 4,因此 20/4 = 5)
效率,e =(无标题的数据)/(有标题的数据)= 500/560 = 89.2 %

GATE 练习题——

  1. 门CS 2013 |第 65 题
  2. GATE-CS-2014-(Set-3) |第 38 题
  3. GATE-CS-2015(套装2)|第 65 题
  4. GATE-CS-2016(套装1)|第 63 题
  5. GATE CS 2018 |问题 37