我只是使用不同的工具检查网络延迟,例如hping3
:
sudo hping3 -A -n -p 80 www.google.ro
HPING www.google.ro (ppp0 172.217.20.3): A set, 40 headers + 0 data bytes
len=40 ip=172.217.20.3 ttl=59 id=14578 sport=80 flags=R seq=0 win=0 rtt=23.7 ms
len=40 ip=172.217.20.3 ttl=59 id=60364 sport=80 flags=R seq=1 win=0 rtt=23.2 ms
len=40 ip=172.217.20.3 ttl=59 id=28510 sport=80 flags=R seq=2 win=0 rtt=22.8 ms
len=40 ip=172.217.20.3 ttl=59 id=38493 sport=80 flags=R seq=3 win=0 rtt=22.4 ms
len=40 ip=172.217.20.3 ttl=122 id=35817 sport=80 flags=R seq=4 win=0 rtt=25.7 ms
len=40 ip=172.217.20.3 ttl=122 id=8842 sport=80 flags=R seq=5 win=0 rtt=20.5 ms
^C
--- www.google.ro hping statistic ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 20.5/23.1/25.7 ms
与ping
:
ping www.google.ro
PING www.google.ro (172.217.20.3) 56(84) bytes of data.
64 bytes from bud02s28-in-f3.1e100.net (172.217.20.3): icmp_seq=1 ttl=56 time=16.3 ms
64 bytes from bud02s28-in-f3.1e100.net (172.217.20.3): icmp_seq=2 ttl=56 time=17.1 ms
64 bytes from bud02s28-in-f3.1e100.net (172.217.20.3): icmp_seq=3 ttl=56 time=16.9 ms
64 bytes from bud02s28-in-f3.1e100.net (172.217.20.3): icmp_seq=4 ttl=56 time=16.5 ms
64 bytes from bud02s28-in-f3.1e100.net (172.217.20.3): icmp_seq=5 ttl=56 time=16.3 ms
64 bytes from bud02s28-in-f3.1e100.net (172.217.20.3): icmp_seq=6 ttl=56 time=16.3 ms
^C
--- www.google.ro ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 16.365/16.613/17.105/0.341 ms
在使用这两个命令进行了几个系列之后,我注意到总是hping3
报告比ping
.为什么会发生这种情况以及如何才能使固定它?
PS:使用Ubuntu 16.04.5 LTS(直接连接互联网)和超细纤维束(版本0.35)
答案1
您不会看到使用不同工具运行相同的测试。 hping3
正在端口 80 上使用 TCP 协议运行“ping”;ping
正在运行 ICMP 回显请求,这是完全不同的测试。
ICMP 是 IP 协议 1(请参阅RFC792); TCP 是 IP 协议 6(在RFC793)。 TCP(和 UDP 一样)有端口,ICMP 没有端口,只有类型和代码。
一般来说,ICMP 回显请求将是一个“较轻的提升”,因为它是一个“较轻的重量”协议(例如,寻址不需要指定源或端点端口),这意味着,在所有条件相同的情况下,它更有可能比由于处理要求比同类 TCP 数据包少,因此响应时间不会更短。
ICMP 数据包的数据包标头大小为 52 字节(以太网、IP 和 ICMP 分别为 24、20 和 8 字节),而 TCP 数据包的数据包标头大小为 64 btyes(24 、以太网、IP 和 TCP 分别为 20 和 20 字节)。