如何测量数据包到达的时间?

如何测量数据包到达的时间?

当数据包到达时,NIC 会生成一个中断,然后内核接管。我想测量特定 TCP 流的数据包到达的时间。

我该如何在 Linux 中执行此操作?这就是 tcpdump 等工具的作用。

答案1

tcpdump为所有数据包添加时间戳。所以你应该能够使用 tcpdump。否则,您可以尝试使用wireshark,它也可以监控网络流量,但具有漂亮且功能强大的GUI。如果您不需要编写此过程的脚本,我想说 Wireshark 在这种情况下是您的朋友。

你可以看一下http://www.howtogeek.com/104278/how-to-use-wireshark-to-capture-filter-and-inspect-packets/有关如何使用 Wireshark 的更多信息。

如果您对如何自己测量这一点更感兴趣,您可以检查tcpdumpstrace按照建议阅读源代码。strace将为您提供可以在自己的应用程序中使用的系统调用列表。然而,最简单的解决方案是运行,然后通过或其他能够过滤掉时间戳列的工具来tcpdump过滤输出。awk

此外,您还可以找到有关如何使用的更多tcpdump信息http://danielmiessler.com/study/tcpdump/

答案2

看一下 tcptrack 工具。您也许能够衡量这一点。

答案3

你的意思是像吗traceroute?该-p选项允许选择协议。

[root@osgiliath ~]# traceroute myserver.mydomain.com -p 443
traceroute to myserver.mydomain.com (10.11.20.30), 30 hops max, 60 byte packets
 1  10.119.9.253 (10.10.10.1)  0.262 ms  0.294 ms  0.360 ms
 2  10.111.225.114 (10.11.20.14)  0.326 ms  0.387 ms  0.466 ms
 3  myserver.mydomain.com (10.11.20.30)  7.558 ms  7.558 ms  7.547 ms

相关内容