网络相关工具使用

ping

ping google.com

返回的信息里会直接显示出 google.com 对应的 IP 地址。这也可以用来判断 DNS 解析是否正常。

Ping 通不代表一切
有一个误区需要注意:Ping 不通并不代表网站挂了。 很多服务器为了防攻击会在防火墙里设置 “禁 Ping”。这时候用 ping 会显示超时,但实际上用浏览器是可以正常打开网页的。

Ping 使用的是 ICMP 协议,工作在网络层;而网站服务(如网页、API)通常运行在传输层的 TCP 协议上。即使服务器不理会 Ping 信号,也会响应端口请求。

可以使用 curl 来测试端口连通性,curl 工作在应用层 (HTTP)

# 测试 80 端口(HTTP)
curl -I google.com

# 测试自定义端口
curl telnet://1.1.1.1:80

telnet

telnet 工作在传输层,使用格式:telnet [参数] [主机名/IP地址] [端口号]
telnet google.com 80

参数 说明
-4 强制使用 IPv4 地址。
-6 强制使用 IPv6 地址。
-l [user] 登录时指定用户名(多用于连接老式路由器)。
-a 尝试自动登录(将本地用户名传递给远程系统)。
-e [char] 设置转义字符(默认是 Ctrl + ])。

nc

nc 命令工作在传输层 (TCP/UDP),支持脚本调用

# -z 表示只扫描不发送数据,-v 表示详细模式
nc -zv google.com 443

traceroute

traceroute 不属于 Linux 内核的一部分,你需要手动安装它

# Ubuntu / Debian / Kali / Mint
sudo apt update
sudo apt install traceroute

# CentOS / RHEL / Fedora
sudo yum install traceroute
# 或者在较新版本使用
sudo dnf install traceroute
# 如果是极简版,可能需要先执行:sudo yum install net-tools

用法

直接输入命令加域名或 IP。这会显示路径上所有的路由器信息(包括域名解析)。

traceroute baidu.com

-n

这是最推荐的日常用法。-n 代表 "numeric"(数字),它不会尝试把 IP 转换成好记的名字。这能省去大量的等待时间,避免因为 DNS 解析慢导致的卡顿。

指定协议用法 (-I 或 -T)

有时候默认的 traceroute 全是星号 (* * *),是因为防火墙拦截了默认的 UDP 包。你可以尝试切换协议:

使用 Ping 协议 (ICMP): traceroute -I baidu.com

image

结果中,看到一行或几行 * * * 是非常普遍的现象。它代表“请求超时” (Request Timeout),即 traceroute 在规定的时间内没有收到该节点的任何回信。

具体来说,这通常由以下三个原因造成:

  1. 路由器配置了防火墙(最常见)
    为了安全或减轻负担,许多互联网服务商(ISP)或公司的核心路由器会设置为“禁 Ping”或“禁止响应 ICMP/UDP 探测包”
    现象:中间某几跳是 * * *,但最后几跳又能显示出 IP。
    结论:这通常不是故障。虽然它不回信,但它依然在帮你转发数据,只是隐藏了自己的身份。

  2. 网络在这一跳断了(真正的故障)
    如果从某一行开始,后面所有的结果全都是 * * *,直到第 30 跳结束。
    这说明网络在第 5 跳到第 6 跳之间彻底中断了,或者目标服务器宕机了。

  3. 返回路径不对称
    traceroute 的原理是:你发一个包过去,对方回一个包过来。
    原理:有时候包确实到达了该节点,但该节点在把回信传回给你时,走了一条完全不同的路径,而那条路径恰好堵塞或不通。这种情况下也只能看到星号。

使用网页协议 (TCP): (通常用于测试服务器 80 或 443 端口是否通畅):traceroute -T baidu.com

[root@localhost ~]# traceroute -T baidu.com
traceroute to baidu.com (111.63.65.103), 30 hops max, 60 byte packets
 1  _gateway (192.168.65.2)  2.017 ms  1.853 ms  1.800 ms
 2  111.63.65.103 (111.63.65.103)  101.808 ms  111.401 ms  111.437 ms

Windows 上的 traceroute: tracert

虽然功能一致,但 Windows 的命令名和参数有所不同:

功能 Linux/macOS (traceroute) Windows (tracert)
不解析域名 traceroute -n tracert -d
设置最大跳数 -m 30 -h 30
等待超时(ms) -w 1.0 (秒) -w 1000 (毫秒)
指定源地址 -s [IP] -S [IP]

mtr

很多系统会预装 mtr(My Traceroute)。它结合了 ping 和 traceroute 的优点,而且是动态实时刷新的。
与普通的 traceroute 只探测一次不同,mtr 会持续动态地更新每一跳的状态。可以实时看到网络延迟的波动(Jitter)和丢包率(Loss),是定位网络卡顿、间歇性断线、游戏延迟的工具。它能持续监测每一跳的丢包率和延迟波动,比 traceroute 只看一眼要精准得多。

执行mtr baidu.com后会进入一个交互式界面,数据会每秒自动刷新一次。

image

指标解释:

  1. Loss%: 最重要的指标。显示每一跳的丢包率。正常情况下应为 0%。
  2. Snt: 已发送的数据包总数。
  3. Last: 最近一次探测的延迟(ms)。
  4. Avg: 平均延迟。
  5. Best / Wrst: 探测过程中的最低和最高延迟。
  6. StDev: 标准偏差。数值越高,说明网络波动(抖动)越剧烈。

常用参数

  1. -n 最常用。不解析域名(只显示 IP),速度极快且不容易卡顿。
  2. -r (Report) 报告模式。不进入交互界面,探测一段时间后直接输出统计报告(适合发给运维)。
  3. -c [次数] 设置探测的包数。配合 -r 使用,例如 -c 10 表示发 10 个包后停止。
  4. -i [秒数] 设置探测间隔(默认 1 秒)。
  5. -T / -U 使用 TCP 或 UDP 协议探测,而不是默认的 ICMP。
  6. -P [端口] 配合 -T 使用,探测特定端口(如 443)。
posted @ 2026-02-01 13:00  vonlinee  阅读(2)  评论(0)    收藏  举报