如何检查网络链路是否通畅?常用的工具有哪些?

检查网络链路是否通畅常用的工具有:

  1. Ping:使用ICMP协议的Echo Request和Echo Reply报文检测网络连通性。可以检测网络时延和丢包率。
  2. Traceroute:使用ICMP回射请求和TTL设置检测网络路径。可以查看数据包通过的网络设备和路径。
  3. MTR:类似于Traceroute,可以持续监测网络路径和延迟变化。
  4. TCPing:使用TCP握手完成连接来检查网络连接是否通畅。相比Ping更加准确可靠,能够检测到更多网络问题。

这些工具的原理和代码示例如下:

python
# Ping
import subprocess

result = subprocess.run(['ping', '-c', '3', 'www.example.com'])
print(result.returncode)   # 0连接成功 非0连接失败

# Traceroute  
import subprocess

result = subprocess.run(['traceroute', 'www.example.com']) 
print(result.stdout.decode())   # 打印每个网络跳跃的TTL,时延和IP

# TCPing 
import tcping

host = tcping.TcpingHost('www.example.com', 80)
delay = host.ping()
print(delay)    # 打印TCP连接成功所用的RTT(ms)

# MTR  
import subprocess

result = subprocess.run(['mtr', '--report', 'www.example.com'])
print(result.stdout.decode())   # 每隔5秒打印一次网络路径追踪结果