检查网络链路是否通畅常用的工具有:
- Ping:使用ICMP协议的Echo Request和Echo Reply报文检测网络连通性。可以检测网络时延和丢包率。
- Traceroute:使用ICMP回射请求和TTL设置检测网络路径。可以查看数据包通过的网络设备和路径。
- MTR:类似于Traceroute,可以持续监测网络路径和延迟变化。
- 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秒打印一次网络路径追踪结果