网络共享时 Wi-Fi 和 3G 接口上的数据包大小不同

网络共享时 Wi-Fi 和 3G 接口上的数据包大小不同

我正在使用一款手机上的应用程序android-wifi-tether。我的笔记本电脑通过 Wi-Fi 连接到手机,手机通过 3G 连接到互联网。

我使用tcpdump嗅探器嗅探 Wi-Fi 和 3G 接口来对转发的数据包进行一些分析。我发现在 3G 接口上捕获的帧大小总是比在 Wi-Fi 接口上捕获的帧大 2 个字节。这是什么原因造成的?

答案1

MTU 是针对每个媒体协议定义的,在无线网络的情况下,为具体实施留有很大余地。这是因为较大的 MTU 有助于更快地传输给定数量的数据,因为组合开销较低,但同时如果链路较差且数据经常需要重新传输,则与较小的 MTU 相比,其效率也会迅速下降。可以根据这一点选择数据包大小:良好的连接可以从较大的数据包大小中受益,而较差的连接可以从较小的数据包大小中受益。

无线存在很多变体,我甚至不会尝试列出它们,但需要注意的是,3G 变体基于与 Wifi 协议规范不同的协议规范。

这(比其他任何事情都更能)解释 3G 和 Wifi 接口之间的数据包大小差异。

正如花絮:

  • 这里是一个定义至少两个 3G 规范的 rfc。
  • 这里是详细介绍 802.11n(2009) 协议的维基百科文章。

答案2

事实证明,这额外的 2 个字节是由于 Linux 熟模式捕获 (SLL) 构建了一个假的链路层标头。可以找到更多详细信息这里

相关内容