我试着理解OSI模型的封装,总的来说,对我来说很清楚,但我有一个问题。
请看这张照片http://www.just2good.co.uk/images/gif/ethernetFrame.gif
默认以太网帧。这张照片很适合我的问题。您可以看到显示了IP封装。
据我所知,data的一部分Ethernet frame从46个字节到1500个字节。这意味着对于上层协议,只有1500-46 = 1454字节。好吧。
我的问题是:这一切都意味着数据包大小会随着级别数的减少而减小,我的意思是网络层有数据包大小<链路层等等,因为封装了数据包的data部分正在减少,对吗?但是为什么我发现TCP数据包的大小是64千字节!
如果我们在1454 bytes上为数据(减去上层的头)设置了data link layer?
请给我解释一下,我会非常感激的。
发布于 2016-01-03 15:16:58
答案很简单,TCP段可以被分割成多个IP数据包。最大段大小(mss)是可以容纳单个IP数据包的最大TCP段。IP数据包的大小受最大传输单元(MTU)的限制,它依赖于物理媒体。
发布于 2016-01-03 17:05:27
除了罗恩·特伦克的回答,你对第三层协议的大小是不正确的.以太网有效载荷(层-3)可以是最小的46个字节和最大的1500个字节,我不知道为什么要从最大值中减去最小值,以使第三层协议的最大值为1454字节;在以太网帧中,最大层-3协议的最大值是1500个字节。
然后你必须看一下第三层协议。IPv4的头至少需要20个字节,但是有一些选项可以将其增加到60个字节。IPv6使用固定的40个字节作为它的头,尽管它也可以有选项头。在第三层协议中,有效载荷(第三层)大小可以根据第三层协议的头大小(1500字节-层-3报头大小)而变化。
层-4协议也将有一个报头,因此它可以传递的有效载荷进一步减少(1500字节-层-3头大小层-4报头大小)。第四层协议的要点是,它是应用程序使用的端到端协议.应用程序可以向第4层协议提供一个大数据报,而第4层协议处理将其分解成块(段)进行传输,并将另一端的接收段重新组装成原始的大数据报以呈现给接收应用程序。根据第4层协议的不同,这可能是可以保证的,也可能不是保证的。例如,TCP保证为接收应用程序重新组装完整的数据报,但UDP没有。
https://networkengineering.stackexchange.com/questions/25592
复制相似问题