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