网络延迟是核心网络性能指标,由于网络传输、网络报文处理等多种因素的影响,网络延迟是不可避免的。但过多的网络延迟会直接影响用户体验。通常人们使用 ping 命令来测试网络延迟,ping 是基于 ICMP 协议的,它通过计算 ICMP 发出的响应报文和 ICMP 发出的请求报文之间的时间差来获得往返延迟时间。这个过程不需要特殊的认证,从而经常被很多网络攻击所利用,如,端口扫描工具 nmap、分组工具 hping3 等。因此,为了避免这些问题,很多网络服务都会禁用 ICMP,这使得我们无法使用 ping 来测试网络服务的可用性和往返延迟。在这种情况下,我们可以使用 traceroute 或 hping3 的 TCP 和 UDP 模式来获取网络延迟。
下面我详细分析如何定位网络延迟的根本原因
1、使用 hping3 和 wrk 等工具确认单个请求和并发请求的网络延迟是否正常。
┌──(root㉿kali)-[/home/kali]
└─# hping3 -c 3 -S -p 80 baidu.com
2、使用 traceroute,确认路由正确,并查看路由中每个网关跳跃点的延迟。
┌──(root㉿kali)-[/home/kali]
└─# traceroute -nT -p 80 baidu.com 备注:traceroute 会在路由的每一跳(hop)发送三个数据包,并在收到响应后输出往返延迟。如果没有响应或响应超时(默认 5s),将输出一个星号 *。
3、使用 tcpdump 和 Wireshark 确认网络数据包是否正常收发。
4、使用 strace 等观察应用程序对网络 socket 的调用是否正常。 |