我在未学习网络基础时曾经也有过这个疑问,而且没有得到答案,今天我将答案简单写下来,因为我也在学习过程中,内容可能有错误,请指正。
首先要说这个问题,设计到OSI7层模型中的2、3、4层(数据链路层、网络层、传输层),会有几个point:
1、MTU是什么?它属于第几层的东东?
这是我在别的地方看到的一个讨论回复
“从我看到的资料看,通常意义上的以太网MTU是指没有以太网header和FCS的以太网payload部分,IEEE802规定了大小为0~1500字节;所以,二层以太网帧长应该为这个长度加上18B(6B的DA、6B的SA和2B的Length/Etype以及4B的FCS),这样大小应该<1518”
MTU其实属于2层的一个概念,它的目的是限定【MAC帧中数据部分(payload)的大小】的值,换句话说就是影响到【第3层的整个IP封包的大小】,这个大小包括IP封包的包头;而最终IP包是要放进MAC帧中的。而以太网的MTU最大为1500Byte,所以,
MTU = IP封包的大小
2、IP包头有多大?
在典型情况下(即IP包头没有附加数据时),IP包头大小是20字节。
4、ping使用的是什么协议?
ping使用的是ICMP协议,而ICMP协议包头是8字节。而ICMP是第4层的,基于IP协议工作的协议。
所以这个28字节的大小,其实就是 【ICMP的包头8字节】+【IP包头的20字节】,最后再加上实际的数据大小,就是MTU的大小了。
参考文章:各种信令协议的最大帧长和MTU