2301_79943928 2024-04-26 13:35 采纳率: 92.1%
浏览 83
已结题

计算机网络计算片偏移量问题

img


请问一下第八题该怎么算,最终结果应该是多少,非常感谢你的回答!

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-26 13:35
    关注

    引自免费微信小程序:皆我百晓生

    第八题是一个关于IPv4数据报分片的问题。根据题目描述,一个IP数据报的总长度为4200字节,而目标网络的MTU(最大传输单元)为1000字节。由于IP数据报的首部固定为20字节,我们需要先计算实际的数据载荷长度,然后进行分片。

    首先,确定数据报的总长度减去首部长度得到数据载荷长度:

    数据载荷长度 = 总长度 - 首部长度 数据载荷长度 = 4200 - 20 数据载荷长度 = 4180 字节

    接下来,我们通过将数据载荷长度除以MTU并向上取整得到需要分片的数量。每个分片除了首部外,还会有一个额外的8字节用于记录分片信息(包括片偏移字段、标志位等),所以实际可承载的有效数据会少一些。

    每个分片的有效数据长度 = MTU - IP首部 + 分片头额外开销 每个分片的有效数据长度 = 1000 - 20 + 8 每个分片的有效数据长度 = 988 字节

    因为数据载荷长度为4180字节,我们可以计算出第一个分片包含的数据长度为988字节,其余分片也是988字节,直到最后一片可能不足988字节。我们将数据载荷长度对988求余数,得到最后一片的特殊处理长度。

    剩余数据长度 = 数据载荷长度 % 每个分片的有效数据长度 剩余数据长度 = 4180 % 988 剩余数据长度 = 444 字节

    现在我们知道最后一个分片有444字节的有效数据,而它之前的所有分片都是988字节。因此,我们可以计算出第一个分片到倒数第二个分片的总长度,然后从总长度中减去这个值,得到最后一个分片的起始位置,即片偏移字段的值。

    第一个分片到倒数第二个分片的总长度 = (倒数第二个分片数量 - 1) * 每个分片的有效数据长度 倒数第二个分片数量 = 地址载荷长度 / 每个分片的有效数据长度 倒数第二个分片数量 = 4180 / 988 倒数第二个分片数量 = 4(向下取整)

    第一个分片到倒数第二个分片的总长度 = (4 - 1) * 988 第一个分片到倒数第二个分片的总长度 = 3 * 988 第一个分片到倒数第二个分片的总长度 = 2964 字节

    现在我们计算最后一个分片的片偏移字段值:

    片偏移字段值 = 第一个分片到倒数第二个分片的总长度 + 前面所有分片的片偏移字段默认值(每个分片默认片偏移字段为0) 片偏移字段值 = 2964 + 0 片偏移字段值 = 2964 十进制

    但需要注意的是,片偏移字段是用13位二进制表示的,所以我们需要将2964转换成二进制,并将其转换回十进制以匹配题目要求的格式。由于题目中提到的选项范围是125到500,我们可以直接比较这些选项,看哪个最接近转换后的值。

    2964的二进制表示为:1001010011100,其中最高两位(MSB)表示是否还有后续分片,由于这是最后一个分片,应该设为0。因此,我们只考虑最低13位作为片偏移字段,即10010100111,转换回十进制为:488。

    所以,正确答案是 B. 488。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月22日
  • 已采纳回答 5月14日
  • 创建了问题 4月26日