当前位置: 首页 > news >正文

网络测试工具

本章介绍了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.使用示例
  1. 基础用法:查看到 www.baidu.com 的路由路径

    traceroute www.baidu.com
  2. 使用 ICMP 模式(更像 Windows 的 tracert

    traceroute -I www.baidu.com 
  3. 使用 TCP 模式探测(如防火墙屏蔽了 UDP)

    traceroute -T www.baidu.com 
  4. 不解析域名,仅显示 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)是集 pingtraceroute 功能于一体的网络诊断工具,能实时显示从本地主机到目标主机之间每一跳的路由路径、延迟和丢包情况。相比传统的 traceroutemtr 更强大、更直观,尤其适合排查网络不稳定、丢包、延迟等问题。

1.工具原理

1.mtr每隔固定时间向目标主机发送探测包;

2.与 traceroute 一样,mtr 使用 递增的 TTL 值 探测网络路径;

3.不同的是,它会持续发送数据包并实时更新统计信息,包括:

     每一跳的平均延迟

     丢包率

     最小/最大延迟

     标准差(jitter)

4.支持 ICMPUDPTCP 三种模式,兼容性好

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
StDevRTT 的标准差(反映稳定性)
*表示该跳无响应,可能被防火墙丢弃或丢包严重

2.实用建议

如果你想把 mtr 作为一次性测试工具使用,请使用 -r -c 报告模式,便于保存日志。

若网络路径中存在多个 * 或高丢包,请结合 pingtraceroute 进一步分析。

某些运营商节点可能限制 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指定输出格式(kmg

 客户端参数(-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 吞吐受限于双方机器的窗口大小和网卡性能。

http://www.xdnf.cn/news/1177147.html

相关文章:

  • 在vue3中watch和watchEffect的区别
  • Windows下使用UIAutomation技术遍历桌面窗口和指定窗口内容的AutomationWalker.exe的C#源代码
  • C++高效实现轨迹规划、自动泊车、RTS游戏、战术迂回包抄、空中轨迹、手术机器人、KD树
  • Java技术栈/面试题合集(17)-Git篇
  • Spring-狂神说
  • day20 双向链表
  • MAC包头、IP包头 、UDP包头中的长度含义是啥?三者之间有啥区别?
  • 【SpringAI实战】提示词工程实现哄哄模拟器
  • 中小企业安全落地:低成本漏洞管理与攻击防御方案
  • SpringCache
  • 双紫擒龙紫紫红黄安装使用攻略,2025通达信指标源码,擒龙追踪源码公式学习
  • 遨游三防平板|国产芯片鸿蒙系统单北斗三防平板,安全高效
  • 算法调试技巧
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——4. 前后端联动:打通QML与C++的任督二脉
  • 【基础】go基础学习笔记
  • 极客大挑战2019-HTTP
  • 基于Odoo的微信小程序全栈开发探索分析
  • 探索复杂列表开发:从基础到高级的全面指南
  • SSE与Websocket有什么区别?
  • 如何在 conda 中删除环境
  • rust-结构体使用示例
  • Elasticsearch 的聚合(Aggregations)操作详解
  • 使用phpstudy极简快速安装mysql
  • Java 大视界 -- Java 大数据在智能家居能源管理与节能优化中的深度应用(361)
  • API安全监测工具:数字经济的免疫哨兵
  • 五、Vue项目开发流程
  • LeetCode 2563.统计公平数对的数目
  • Effective Python 第16条:用get处理字典缺失键,避免in与KeyError的陷阱
  • 【低空经济之无人集群】
  • runc源码解读(一)——runc create