连通性与诊断类
这类命令主要用于检查网络连接是否通畅,以及定位网络问题的根源。

ping - 网络连通性“瑞士军刀”
ping 是最基础、最常用的网络命令,用于测试本地主机与另一台主机之间的网络连通性。
- 用途:检查目标主机是否在线,并测量数据包往返的时间(延迟)。
- 常用参数:
-t(Linux/macOS) 或-t(Windows): 持续不断地发送数据包,直到手动按下Ctrl+C中止。-c <count>(Linux/macOS): 指定发送数据包的数量,ping -c 4 baidu.com。-n <count>(Windows): 指定发送数据包的数量,ping -n 4 baidu.com。-l <size>(Windows): 指定发送数据包的大小(字节)。-i <ttl>(Linux/macOS): 设置数据包的生存时间。
- 示例:
# 测试是否能访问百度,并发送4个数据包 ping -c 4 baidu.com
- 解读结果:
64 bytes from 182.61.200.7: 成功收到数据包。time=15.2 ms: 往返延迟,数值越小越好。Request timed out: 请求超时,可能是目标主机不在线、网络阻塞或防火墙阻止。Destination Host Unreachable: 目标主机不可达,通常是路由问题。
traceroute (Linux/macOS) / tracert (Windows) - 网络路径“侦探”
traceroute/tracert 用于显示数据包从本地主机到目标主机所经过的路由节点(网关)。
- 用途:定位网络延迟或丢包发生在哪个环节,诊断网络路径问题。
- 工作原理:通过发送不同 TTL(生存时间)的数据包,逐跳发现路径上的路由器。
- 常用参数:
-n(Linux/macOS): 直接显示IP地址,不进行域名解析,速度更快。-d(Windows): 不将IP地址解析为主机名。-h <max_hops>(Linux/macOS): 设置最大跳数。
- 示例:
# 查看访问谷歌的路径,不进行域名解析 traceroute -n google.com # Windows tracert -d google.com
- 解读结果:
- 每一行代表一个路由跳(hop)。
1 192.168.1.1: 第一跳是家里的网关。2 10.0.0.1: 第二跳是运营商的某个路由器。- 如果某跳显示三个星号,表示该路由器响应超时或配置了不响应ICMP请求(这是很常见的情况)。
- 如果在某一跳之后所有请求都超时,说明问题可能出在该路由器或其后的网络。
telnet - 端口“探针”
telnet 是一个古老的协议,但现在它更多地被用作一个测试工具,用于检查指定IP和端口是否开放。
- 用途:测试远程主机的某个TCP端口是否可以访问。
- 示例:
# 测试百度服务器的80端口(HTTP服务)是否开放 telnet baidu.com 80
- 解读结果:
- 如果连接成功,会进入一个黑屏界面,表示端口开放。
- 如果提示
Connecting To baidu.com...Could not open connection to the host, on port 80: Connect failed,则表示端口关闭或被防火墙阻止。
信息查询类
这类命令用于获取网络、主机和服务的相关信息。

nslookup / dig - 域名系统“查询器”
这两个命令用于查询DNS(域名系统)信息,将域名解析为IP地址,或反向查询IP对应的域名。
- 用途:DNS故障排查、域名解析、查询域名记录。
nslookup(更通用):# 查询baidu.com的A记录(IPv4地址) nslookup baidu.com # 进入交互模式,查询其他域名 nslookup > www.github.com
dig(更强大、信息更详细):# 查询baidu.com的A记录 dig baidu.com # 查询MX(邮件交换)记录 dig baidu.com MX
- 解读结果:
SERVER: 使用的DNS服务器地址。ANSWER SECTION: DNS查询的答案,如域名对应的IP地址。
netstat / ss - 网络连接“快照”
netstat 是一个经典的查看网络连接状态的命令,而 ss 是 netstat 的现代替代品,功能更强、速度更快。
- 用途:查看当前系统的网络连接、路由表、接口统计信息等。
- 常用参数:
-t: 显示TCP连接。-u: 显示UDP连接。-n: 以数字形式显示地址和端口,不进行域名解析。-l: 只显示监听(Listen)状态的端口。-p: 显示进程ID和进程名(需要root权限)。-a: 显示所有连接。
- 示例:
# 查看所有监听的TCP端口 netstat -tlnp # 查看所有建立的TCP连接 netstat -ant # 使用更快的ss命令 ss -tlnp
- 解读结果:
Proto: 协议类型 (TCP/UDP)。Local Address: 本地地址和端口。Foreign Address: 远程地址和端口。State: 连接状态 (如LISTEN,ESTABLISHED,TIME_WAIT)。PID/Program name: 进程ID和程序名。
网络配置与监控类
这类命令用于配置网络接口和监控实时网络流量。
ip / ifconfig - 网络接口“配置器”
ifconfig 是传统的网络配置工具,而 ip 是现代Linux系统中的推荐工具,功能更全面。

- 用途:查看、启用、禁用网络接口,配置IP地址、子网掩码、网关等。
ifconfig(已逐渐被淘汰,但仍常见):# 查看所有网络接口信息 ifconfig # 启用或禁用eth0接口 ifconfig eth0 up ifconfig eth0 down
ip(现代Linux):# 查看所有网络接口信息 ip addr show # 查看路由表 ip route show # 临时为eth0配置IP地址 ip addr add 192.168.1.100/24 dev eth0
- 解读结果:
inet: IPv4地址。netmask: 子网掩码。broadcast: 广播地址。
nettop (macOS) / nethogs (Linux) / Resource Monitor (Windows) - 实时流量“监控器”
这些工具可以实时显示哪个进程正在消耗网络带宽。
- 用途:排查哪个程序在后台“偷跑”流量,导致网速变慢。
- 示例:
# Linux上安装nethogs后使用 sudo nethogs # macOS上使用 sudo nettop # Windows上打开任务管理器 -> 性能 -> 网络
- 解读结果:会列出每个进程及其当前的上传/下载速度。
高级与安全类
curl / wget - 网络数据“传输器”
这两个是强大的命令行工具,用于从Web服务器下载文件或与Web服务交互。
- 用途:下载文件、测试API接口、获取网页内容、模拟HTTP请求。
curl(功能极其丰富):# 下载网页内容并显示在终端 curl http://example.com # 下载文件并保存为output.html curl -o output.html http://example.com # 发送一个带有自定义Header的POST请求 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.com/datawget(专注于下载):# 下载单个文件 wget http://example.com/file.zip # 递归下载整个网站(谨慎使用) wget -r http://example.com
arp - 地址解析“查看器”
arp 用于查看和操作本地ARP(地址解析协议)缓存表。
- 用途:排查IP地址与MAC地址(物理地址)的映射问题,检测ARP欺骗(网络嗅探)。
- 示例:
# 查看本机的ARP缓存表 arp -a
- 解读结果:
Interface: 网络接口。Internet Address: IP地址。Physical Address: 对应的MAC地址。Type: 动态(Dynamic)或静态(Static)。
总结表格
| 命令 | 主要用途 | 平台 | 常用场景 |
|---|---|---|---|
ping |
测试网络连通性、延迟 | All | 确认网站是否能访问,检查网络是否通。 |
traceroute/tracert |
跟踪数据包路径,定位问题节点 | All | 网络卡顿、丢包时,看问题出在哪一跳。 |
nslookup/dig |
DNS域名解析查询 | All | 域名无法访问时,检查DNS解析是否正常。 |
netstat/ss |
查看网络连接、端口状态 | All | 查看哪个端口在监听,哪个程序在联网。 |
ip/ifconfig |
配置和查看网络接口 | Linux/Unix | 查看本机IP地址,临时修改IP。 |
curl/wget |
下载文件、与Web交互 | All | 下载软件、测试API接口。 |
telnet |
测试TCP端口是否开放 | All | 检查服务(如HTTP, SSH)是否正常运行。 |
nethogs/nettop |
按进程监控实时流量 | Linux/macOS | 找出哪个程序占用了大量网速。 |
arp |
查看和管理ARP缓存 | All | 排查局域网内IP与MAC地址的映射问题。 |
掌握这些经典命令,并能将它们组合使用(先用 ping,再用 traceroute,最后用 netstat 查看本地端口),就能高效地解决绝大多数常见的网络问题。
