首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >网络层Lan网络

网络层Lan网络
EN

Stack Overflow用户
提问于 2015-09-28 01:13:02
回答 2查看 263关注 0票数 1

当我们在网络层从一台路由器向另一台路由器发送数据包时,如果数据包的大小大于路由器的最大可传输单位(maximum transferable,MTU ),我们就必须对数据包进行分段。我的问题是:假设我们需要在最后一个片段中添加填充比特,那么我们在哪里添加填充比特(在LSB或MSB中),目的路由器如何区分数据包比特或填充比特?

EN

回答 2

Stack Overflow用户

发布于 2016-09-22 22:39:26

在此之前,我希望您考虑以下几点:

  • 对IP数据报最大长度的限制是由数据链路协议规定的,
  • IP是在路由器上实现的最高层协议,原始数据报只在目的主机上实现。这减少了网络核心中的路由器需要完成的额外工作。

我将使用下图中的信息通过一个示例来帮助您找到答案。

这里数据包的初始长度是2400字节,需要根据1000字节的MTU限制进行分段。

只有13位可用于片段偏移量,并且偏移量被给出为8字节的倍数。这就是为什么第一个和第二个片段中的数据字段具有976字节的大小(它是可被8整除的最高数字,它小于1000 - 20字节)。这使得第一个和第二个片段的总大小为996字节。最后一个片段包含剩余的428字节的有效载荷(总共448字节)。

偏移可以计算为0;976/8 = 122和1952/8 = 244。

当这些片段到达目的主机时,需要进行重组。主机使用标识、标志和碎片偏移量来执行此任务。为了确定哪些片段属于哪个数据报,主机使用源地址、目的地址和标识来唯一地标识它们。使用偏移值和更多片段位来确定是否所有片段都已到达。

对您问题的回答

仅对于非最后的片段,需要将有效负载划分为8的倍数。使用偏移量除以8的原因有助于主机识别下一个片段的起始地址。如果主机遇到最后一个片段,则它不需要下一个片段的地址。因此,在最后一个片段的情况下,不需要担心有效负载是8的倍数。主机检查更多片段标志以识别最后一个片段。

补充一点信息:保证数据报文的传送不是网络层的责任。如果它遇到一个或多个片段尚未到达,则它简单地丢弃整个数据报。传输层工作在网络层之上,如果它使用TCP,将通过请求源重新传输数据来处理这件事。

参考: Computer Networking-A Top Down Approach,James F. Kurose,Keith W. Ross (第五版)

票数 2
EN

Stack Overflow用户

发布于 2016-01-19 23:22:37

您不需要添加任何填充比特。所有比特都将沿着路由向下推送,直到发送完整个帧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32810595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档