因此,我有 5 台计算机连接到 LAN,每台计算机都运行 Ubuntu 14,并分配了一个唯一的静态 IP。我正在尝试计算一组字节传输和接收至其中一台计算机所需的估计时间。以下是我通过对每台计算机执行 20 次迭代平均得到的一些 ping 结果:
ping -s [size] -c 20 [IP address]
- 200 字节 – 大约 0.6 毫秒
- 2,500 字节 – 大约 0.4 毫秒
- 10,000 字节 – 大约 0.4 毫秒
200 字节的小数据包为何比 2500 字节或 10000 字节的传输时间还要长?
请注意,它们都是在同一台机器上、在同一地址进行测试的。
答案1
ping
报告了我类似的结果localhost
:
... 来自 127.0.0.1 的 208 字节:icmp_seq=99 ttl=64 时间=0.163 毫秒 --- 本地主机 ping 统计 --- 已发送 100 个数据包,已接收 100 个数据包,数据包丢失率为 0.0% 往返最小值/平均值/最大值/标准差 = 0.078/0.172/0.269/0.044 毫秒
来自 127.0.0.1 的 2008 字节:icmp_seq=99 ttl=64 时间=0.188 毫秒 --- 本地主机 ping 统计 --- 已发送 100 个数据包,已接收 100 个数据包,数据包丢失率为 0.0% 往返最小值/平均值/最大值/标准差 = 0.065/0.170/0.262/0.042 毫秒
但是,ping
在报告往返时间方面并不是特别精确,例如,与以下相比tcpdump
:
ping
报告 208 字节数据包的 RTT 为 0.076 毫秒,而tcpdump
显示数据包离开和返回仅用了 0.033 毫秒:
tcpdump -i lo0 -nK -t 5 -c 2 icmp 00:00:00.000000 IP 127.0.0.1 > 127.0.0.1:ICMP 回显请求,ID 37477,序列号 0,长度 208 00:00:00.000033 IP 127.0.0.1 > 127.0.0.1:ICMP 回显答复,ID 37477,序号 0,长度 208
对于 2008 字节的数据包,ping
报告的 RTT 为 0.087 毫秒,但tcpdump
实际报告的只有 0.042 毫秒。
简而言之,ping
它是一个具有开销和系统依赖性的程序,使其不适合测量微小的差异:它不是一个精密工具。