如何解决Android上的TCP / UDP数据包碎片问题

时间:2012-02-25 02:53:42

标签: android tcp network-programming networkstream tcpdump

全部:

我对MTU设置并不熟悉,并且想知道如何处理通过TCP / UDP看到的碎片(我们通过Android应用程序通过蜂窝网络发送数据包)。

我们看到很多数据包碎片从Android设备发送到服务器。我想获得有关该主题的更多信息:

  1. 什么是MTU?
  2. 我们可以使用哪些工具来查看或验证数据包碎片(Wireshark,tcpdump等)?
  3. 我们如何使用Android设备上的ping / traceroute等标准工具(这有用)?
  4. 提前致谢

1 个答案:

答案 0 :(得分:4)

MTU表示最大传输单元 - 它表示本机链路层将传输的最大数据包大小。例如,基于以太网的网络的MTU通常为1500字节。当系统希望发送大于网络MTU的IP数据报时,它必须将数据包分成不大于MTU的块。请注意,TCP很少发生碎片,特别是因为大多数TCP实现现在都使用路径MTU发现。当UDP与异常大的数据包一起使用时,碎片通常只是一个问题。

您确实可以通过各种监视原始网络的工具来观察数据包碎片,包括tcpdump,wireshark等。

如果你想了解更多关于像这样的低级TCP / IP机制,除了像Wikipedia这样的常用资源之外,我建议阅读Stevens,“TCP / IP Illustrated”,第1卷。