我需要测试 FTP 应用程序的数据包丢失。我使用了Wireshark数据包嗅探器,得到了 TCP Stream。
如何使用 Wireshark 查找数据包丢失?
我需要测试 FTP 应用程序的数据包丢失。我使用了Wireshark数据包嗅探器,得到了 TCP Stream。
如何使用 Wireshark 查找数据包丢失?
通过查看 Wireshark 中的转储,可能很难或不可能凭经验看到数据包丢失和其他相关指标,例如误码率 (BER),具体取决于您要查看的层。其中很多很大程度上取决于您使用的协议以及实现它的软件/固件。
例如,我对 Wi-Fi 路由器有过这种确切的体验。我需要凭经验测试给定 Wi-Fi 链路的 BER。但事实证明,802.11 有一个类似 TCP 的基于 CRC 的重传系统,这一切都发生在链路层。
因此,例如,您可以从 Wi-Fi 设备 A 向 Wi-Fi 设备 B 发送 UDP 数据包。在传输过程中,几个位被翻转,设备 B 发现 CRC 错误并发送重传请求。数据包被再次发送,并再次被破坏。但是,在第三次尝试时,数据包可以正常通过。
从这里,您希望看到某种丢包指标,对吧?好吧,不幸的是没有。整个交换发生在 Wireshark 之下。它所看到的只是一个成功发送的 UDP 数据包,但到达那里的时间是正常情况的三倍。(当链路层 CRC 错误发生时,我不得不进行内核修改以发出通知。真是一团糟!)
[Zr40 在下面指出这部分是错误的:扩展我的评论 - Wireshark 确实在底部的状态栏中告诉您丢弃的数据包数量(我刚刚运行了一个示例捕获,它显示“数据包:65 显示:65已标记:0 已删除:0") 但我不确定您是否会从中获得相同的结果,具体取决于您在哪一端运行它。]
在这种情况下 - 我想您需要在每一端运行 Wireshark 并查看数据包统计信息(数据包数量 A->B、B->A)并比较差异。您不能依赖 TCP 重试等,因为这并不一定意味着数据包丢失。
此外,您只需要为 FTP 设置捕获过滤器,除非您希望您的统计信息被 ARP、DNS 查找等其他内容所影响。