我正在使用一款手机上的应用程序android-wifi-tether
。我的笔记本电脑通过 Wi-Fi 连接到手机,手机通过 3G 连接到互联网。
我使用tcpdump
嗅探器嗅探 Wi-Fi 和 3G 接口来对转发的数据包进行一些分析。我发现在 3G 接口上捕获的帧大小总是比在 Wi-Fi 接口上捕获的帧大 2 个字节。这是什么原因造成的?
答案1
MTU 是针对每个媒体协议定义的,在无线网络的情况下,为具体实施留有很大余地。这是因为较大的 MTU 有助于更快地传输给定数量的数据,因为组合开销较低,但同时如果链路较差且数据经常需要重新传输,则与较小的 MTU 相比,其效率也会迅速下降。可以根据这一点选择数据包大小:良好的连接可以从较大的数据包大小中受益,而较差的连接可以从较小的数据包大小中受益。
无线存在很多变体,我甚至不会尝试列出它们,但需要注意的是,3G 变体基于与 Wifi 协议规范不同的协议规范。
这(比其他任何事情都更能)解释 3G 和 Wifi 接口之间的数据包大小差异。
正如花絮:
答案2
事实证明,这额外的 2 个字节是由于 Linux 熟模式捕获 (SLL) 构建了一个假的链路层标头。可以找到更多详细信息这里