网络测试工具
本章介绍了traceroute,mtr,ipert 三个网络测试工具,具体用途如下
分类名称 | 包含工具 | 说明 |
---|---|---|
连通性测试工具 | ping , mtr | 判断主机/路径是否可达,是否存在丢包 |
路由路径分析工具 | traceroute , mtr | 显示经过哪些路由器,是否有路径异常 |
性能测试工具 | iperf | 测试带宽、延迟、抖动、丢包等网络性能 |
traceroute
1.traceroute
工具简介
traceroute
是一款用于网络路径追踪的诊断工具,它可以显示从本地主机到目标主机之间,数据包所经过的每一跳(即每一个中间路由器)的详细信息。通过它,用户可以分析网络连接中是否存在中断、延迟、路由不通等问题,是网络排障中的重要工具。
1.基本原理
traceroute
的核心思想基于 TTL(Time To Live)机制:
每个 IP 数据包都有一个 TTL 值,表示数据包在网络中最多可以经过的路由跳数。
每经过一个路由器,TTL 值会减 1。
当 TTL 减为 0 时,该路由器会丢弃该数据包,并返回一个 ICMP “Time Exceeded” 报文。
traceroute
就是通过逐步增加 TTL 值(从 1 开始),从而探测每一跳所经过的路由器。当数据包最终到达目标主机时,通常会返回一个 ICMP “Echo Reply” 或对应服务端口响应,从而终止探测。
这个过程模拟了数据包的真实路由路径,显示了路径上每个路由器的 IP 和响应时间(RTT)。
用途:显示数据包从源主机到目标主机之间经过的每一跳(路由器)的 IP 地址及响应时间。
2.工具功能
追踪数据包从源主机到目标主机经过的完整路径;
显示每一跳的 IP、DNS 主机名、响应时间;
检测路径中的网络瓶颈和高延迟点;
排查网络不可达、路由错误、防火墙过滤等问题;
支持多种协议方式(UDP、ICMP、TCP)探测,兼容性强。
3.工作原理:
1.利用 TTL(Time To Live)值逐跳探测路径。
2.每次将 TTL 值从 1 开始递增,触发中间路由器返回 ICMP Time Exceeded
报文。
3.当 TTL 足够大到达目标主机时,返回 ICMP Echo Reply
(或其他响应)。
2.基本命令格式
traceroute [选项] 目标主机
1.常用参数说明
参数 | 含义 |
---|---|
-n | 直接显示 IP,不进行 DNS 解析 |
-I | 使用 ICMP 回显(ping),而非默认的 UDP 数据包(更类似 Windows 的 tracert) |
-T | 使用 TCP SYN 数据包(常用于绕过部分防火墙) |
-p port | 指定目标端口(默认是 33434) |
-m hops | 设置最大跳数(默认 30) |
-q count | 每跳发送的探测包个数(默认 3 个) |
2.使用示例
基础用法:查看到 www.baidu.com 的路由路径
traceroute www.baidu.com
使用 ICMP 模式(更像 Windows 的
tracert
)traceroute -I www.baidu.com
使用 TCP 模式探测(如防火墙屏蔽了 UDP)
traceroute -T www.baidu.com
不解析域名,仅显示 IP
traceroute -n www.baidu.com
3.结果输出
[root@localhost xyc]# traceroute -I www.baidu.com
traceroute to www.baidu.com (180.101.49.44), 30 hops max, 60 byte packets1 _gateway (192.168.17.2) 0.209 ms 0.264 ms *2 * * *3 * * *4 * * *5 * * *6 * * *7 58.213.95.222 (58.213.95.222) 14.639 ms 14.421 ms 14.233 ms8 58.213.95.210 (58.213.95.210) 11.029 ms 11.029 ms 11.005 ms9 58.213.96.66 (58.213.96.66) 10.939 ms 10.905 ms 10.871 ms
10 * * *
11 * * *
12 10.166.112.48 (10.166.112.48) 9.438 ms 6.732 ms 8.158 ms
13 * * *
14 180.101.49.44 (180.101.49.44) 6.069 ms 5.926 ms 6.070 ms
每一行表示一个路由跳(Hop);
每行中的三个时间:表示发送的三个数据包的 RTT(往返时间);
星号(\*
):表示该跳的响应超时或被防火墙丢弃;
IP 和主机名:显示的是该跳路由器的地址,若 DNS 可用也会解析主机名。
mtr
1.mtr工具简介
mtr
(My Traceroute)是集 ping
和 traceroute
功能于一体的网络诊断工具,能实时显示从本地主机到目标主机之间每一跳的路由路径、延迟和丢包情况。相比传统的 traceroute
,mtr
更强大、更直观,尤其适合排查网络不稳定、丢包、延迟等问题。
1.工具原理
1.mtr每隔固定时间向目标主机发送探测包;
2.与 traceroute
一样,mtr
使用 递增的 TTL 值 探测网络路径;
3.不同的是,它会持续发送数据包并实时更新统计信息,包括:
每一跳的平均延迟
丢包率
最小/最大延迟
标准差(jitter)
4.支持 ICMP、UDP、TCP 三种模式,兼容性好
2.基本命令格式
mtr [选项] <目标主机/IP>
1.常用参数详解
参数 | 描述 |
---|---|
-n | 不解析主机名,显示 IP(提高速度) |
-r | 以报告模式运行(一次性输出统计信息) |
-c <次数> | 指定探测次数,默认无限直到退出 |
-i <间隔秒> | 设置发送探测包的间隔 |
-w | 宽屏模式(显示更多列) |
-b | 显示每一跳的带宽信息(部分版本支持) |
-z | 使用压缩输出格式(适合日志分析) |
--report-wide | 宽格式报告模式,列信息更完整 |
-4 或 -6 | 强制使用 IPv4 / IPv6 |
--tcp | 使用 TCP SYN 包代替默认的 ICMP |
--udp | 使用 UDP 探测包 |
2.使用实例
1.基本用法:实时显示到目标的路由状态
mtr www.baidu.com
2.不解析域名,只显示 IP 地址
mtr -n www.baidu.com
3.指定发送 10 次探测并输出报告模式
mtr -r -c 10 www.baidu.com
4.宽格式报告输出
mtr --report-wide -c 10 www.baidu.com
5.使用 TCP 模式探测(绕过 ICMP 屏蔽)
mtr --tcp www.baidu.com
3.输出结果
1.字段解释
字段 | 含义 |
---|---|
Loss% | 丢包率,越高表示网络质量越差 |
Snt | 已发送的探测包数量 |
Last | 最后一个探测包的 RTT |
Avg | 平均 RTT(越小越好) |
Best/Wrst | 最小/最大 RTT |
StDev | RTT 的标准差(反映稳定性) |
* | 表示该跳无响应,可能被防火墙丢弃或丢包严重 |
2.实用建议
如果你想把 mtr
作为一次性测试工具使用,请使用 -r -c
报告模式,便于保存日志。
若网络路径中存在多个 *
或高丢包,请结合 ping
和 traceroute
进一步分析。
某些运营商节点可能限制 ICMP,使用 --tcp
模式可更真实反映 TCP 连接质量。
3.导出为文本文件
mtr -r -c 10 www.baidu.com > mtr_report.txt#以json格式输出
mtr -r -c 10 --json www.baidu.com
iperf
1.iperf 工具简介
iperf
是一款开源、跨平台的网络性能测试工具,主要用于测量两个主机之间的网络吞吐量(带宽)以及网络质量(延迟、抖动、丢包等)。它支持 TCP、UDP 和 SCTP(部分版本)协议,可用于测试局域网、广域网、VPN 等多种场景下的网络传输能力。
1.基本原理
1.iperf
分为两个角色:服务端(Server) 和 客户端(Client);
2.服务端监听某个端口,等待客户端连接;
3.客户端发起连接后,会不断发送大量数据包到服务端;
4.服务端接收数据后进行统计,返回吞吐量(单位 Mbps)等性能数据;
5.支持单向或双向测试,适合分析网络瓶颈和带宽限制。
2.主要功能
功能 | 说明 |
---|---|
TCP 带宽测试 | 测试可达的最大吞吐量,支持窗口大小调整 |
UDP 测试 | 支持指定目标带宽,并返回丢包率、抖动等 |
双向测试 | 可以测试双向带宽和网络性能 |
多线程测试 | 可模拟多个并发连接 |
自定义传输时间、包大小、端口等 | |
可导出 JSON 报告(iperf3 支持) |
2.基本命令格式
1. 启动服务端(监听端口)
iperf -s
2. 启动客户端并连接服务端
iperf -c <服务端IP> #例如:
iperf -c 192.168.17.88
1.详细参数详解
通用选项(服务端和客户端通用)
参数 | 说明 |
---|---|
-p <端口> | 指定端口(默认 5201) |
-t <时间> | 测试持续时间(秒),默认 10 秒 |
-i <秒> | 每隔多少秒打印一次实时报告 |
-f | 指定输出格式(k 、m 、g ) |
客户端参数(-c后使用)
参数 | 说明 |
---|---|
-u | 使用 UDP 模式 |
-b | 指定 UDP 带宽(例如 10M ) |
-R | 反向测试(服务端发数据) |
-P | 开启多个并发线程连接 |
-w | 设置 TCP 窗口大小 |
3.结果输出
1.基本TCP带宽测试(单线程)
服务端(192.168.17.88)
iperf -s
客户端(192.168.17.89)
iperf -c 192.168.17.88
2.UDP 模式带宽测试(目标带宽 10Mbps)
服务端(192.168.17.88)
iperf -s -u
客户端(192.168.17.89)
iperf -c 192.168.17.88 -u -b 10M
3.测试持续 30 秒并每 5 秒输出一次报告
服务端(192.168.17.88)
iperf -s
客户端(192.168.17.89)
iperf -c 192.168.17.88 -t 30 -i 5
4.客户端接收数据(反向测试)该功能需要iperf3支持
iperf3 -c 192.168.1.100 -R
5.输出格式以 MB 为单位
服务端(192.168.17.88)
iperf -s
客户端(192.168.17.89)
iperf3 -c 192.168.17.88 -f M
4.结果解释
[root@localhost traceroute]# iperf -c 192.168.17.88 -t 30 -i 5
------------------------------------------------------------
Client connecting to 192.168.17.88, TCP port 5001
TCP window size: 204 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.17.89 port 46940 connected with 192.168.17.88 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 5.0 sec 21.2 MBytes 35.6 Mbits/sec
[ 3] 5.0-10.0 sec 25.8 MBytes 43.3 Mbits/sec
[ 3] 10.0-15.0 sec 16.5 MBytes 27.7 Mbits/sec
[ 3] 15.0-20.0 sec 11.6 MBytes 19.5 Mbits/sec
[ 3] 20.0-25.0 sec 2.08 MBytes 3.48 Mbits/sec
[ 3] 25.0-30.0 sec 0.00 Bytes 0.00 bits/sec
[ 3] 0.0-30.1 sec 77.3 MBytes 21.6 Mbits/sec
Interval
:测试时间区间;
Transfer
:传输的数据总量;
Bandwidth
:平均带宽(发出和接收);
UDP 模式还会显示丢包率(Lost/Total)、抖动(Jitter)。
5.常见测试场景
场景 | 推荐命令 |
---|---|
内网带宽测试 | iperf -c 目标IP |
验证 UDP 丢包 | iperf -c 目标IP -u -b 50M |
跨地域链路测试 | 在公网开启 iperf -s ,客户端使用 -c 测试 |
检测网卡或路由瓶颈 | 使用 -P 多线程拉满链路 |
6.注意事项
防火墙可能会阻止默认端口 5201
,需放行;
UDP 模式不会做拥塞控制,带宽设置过高容易丢包;
公网测试时,需公网 IP 或端口转发;
TCP 吞吐受限于双方机器的窗口大小和网卡性能。