为什么用 ping 命令计算目标主机 MTU 时,缓冲区大小要减掉 28 字节,才是真正的MTU值?

  我在未学习网络基础时曾经也有过这个疑问,而且没有得到答案,今天我将答案简单写下来,因为我也在学习过程中,内容可能有错误,请指正。

  

首先要说这个问题,设计到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值