一、基础网络连接检测(主机是否可达)
核心命令:ping
典型现象
- 浏览器打开任何网页均提示“无法连接到服务器”
- 微信、QQ等软件显示“网络未连接”
- 本地设备连接WiFi后,路由器后台显示“设备离线”
工具使用与解读
- 执行
ping 192.168.1.1(网关IP):- 若无响应(Request timed out):本地到网关的链路故障(如网线松动、网卡禁用)。
- 若丢包率高(丢失>30%):WiFi信号弱、路由器负载过高或硬件故障。
- 执行
ping 8.8.8.8(公共IP):- 若失败但
ping 网关成功:网关到外网的链路故障(如路由器拨号失败)。
- 若失败但
解决办法
- 链路故障:重新插拔网线/重启网卡(Windows:禁用后启用;Linux:
sudo ip link set eth0 up)。 - 网关故障:重启路由器/光猫,检查WAN口是否获取公网IP(登录路由器管理页查看)。
- 外网故障:联系运营商确认宽带是否欠费或线路故障。
在排查网络问题时,ping 命令的输出包含关键的网络连通性信息,不同返回值对应不同的网络状态。
一、先看「正常 ping 通」的输出格式(以 Windows 为例)
当目标地址(如 github.com)能正常连通时,输出会包含 4 类核心信息,每一行对应一次「发送-接收」的过程:
正在 Ping github.com [140.82.112.4] 具有 32 字节的数据:
来自 140.82.112.4 的回复: 字节=32 时间=189ms TTL=52
来自 140.82.112.4 的回复: 字节=32 时间=192ms TTL=52
来自 140.82.112.4 的回复: 字节=32 时间=187ms TTL=52
来自 140.82.112.4 的回复: 字节=32 时间=190ms TTL=52
github.com [140.82.112.4] 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 187ms,最长 = 192ms,平均 = 189ms
关键字段含义:
| 字段 | 含义 |
|---|---|
[140.82.112.4] |
目标域名(github.com)解析后的IP 地址(确认 DNS 解析是否正常)。 |
字节=32 |
发送的测试数据包大小(默认 32 字节,可通过 -l 参数修改)。 |
时间=189ms |
往返延迟(从本地发送数据包到接收目标回复的时间):<br>- 数值越小,网络越流畅;<br>- 超过 100ms 可能有轻微卡顿,超过 500ms 属于高延迟。 |
TTL=52 |
生存时间(数据包在网络中能经过的「路由器跳数上限」):<br>- 不同系统默认 TTL 不同(Windows 默认为 128,Linux 默认为 64);<br>- 数值每经过一个路由器会减 1,减到 0 时数据包会被丢弃(此时会返回「TTL 过期」错误)。 |
丢失=0 (0% 丢失) |
数据包丢失率:0% 表示网络连通性极佳;丢失率超过 10% 说明网络不稳定(丢包)。 |
二、常见「异常返回值」及含义(重点排查方向)
当 ping 失败时,输出会提示具体错误,不同错误对应不同的网络问题,按排查优先级排序如下:
1. 「请求超时(Request timed out)」
- 输出示例:
来自 192.168.1.1 的回复: 目标主机不可达。 请求超时。 请求超时。 - 含义:本地发送的数据包没有收到目标的任何回复(最常见错误)。
- 排查方向:
- 优先确认目标地址是否正确(比如域名拼错、IP 地址错误);
- 检查目标是否「禁止 ping」(很多服务器/网站会关闭 ICMP 协议,导致 ping 不通但实际服务可用,比如国内部分云服务器、GitHub 有时也会屏蔽 ping);
- 排查本地网络:Wi-Fi 断连、网线松动,或路由器故障(重启路由器试试);
- 排查防火墙/杀毒软件:本地防火墙是否拦截了 ICMP 数据包(临时关闭后重试)。
2. 「目标主机不可达(Destination host unreachable)」
- 输出示例:
正在 Ping 192.168.1.100 具有 32 字节的数据: 来自 192.168.1.1 的回复: 目标主机不可达。 来自 192.168.1.1 的回复: 目标主机不可达。 - 含义:本地网关(如路由器)无法找到目标地址(目标不在当前网络,或目标设备未开机/未联网)。
- 排查方向:
- 若目标是「局域网设备」(如 192.168.1.100):确认目标设备是否开机、是否连入同一 Wi-Fi/网线;
- 若目标是「公网地址」(如 github.com):检查本地网关配置是否正常(比如路由器是否获取到正确的公网 IP),或是否有路由表错误(一般普通用户无需修改,重启路由器即可)。
3. 「未知主机(Unknown host)」
- 输出示例:
ping: unknown host github.com - 含义:DNS 解析失败(本地无法将域名转换为 IP 地址)。
- 排查方向:
- 检查域名是否拼错(比如把
github.com写成githbu.com); - 手动修改 DNS 服务器(换成公共 DNS,如谷歌
8.8.8.8、国内114.114.114.114); - 排查 DNS 缓存:Windows 执行
ipconfig /flushdns清空缓存,Linux/macOS 执行sudo dscacheutil -flushcache。
- 检查域名是否拼错(比如把
4. 「TTL 过期(TTL expired in transit)」
- 输出示例:
来自 10.0.0.1 的回复: TTL 过期在传输中。 来自 10.0.0.1 的回复: TTL 过期在传输中。 - 含义:数据包在网络中经过的路由器跳数超过了 TTL 上限(默认 128/64),被中间路由器丢弃(一般是「路由环路」导致)。
- 排查方向:
- 临时增大 TTL 值测试(Windows 用
ping github.com -i 255,Linux/macOS 用ping github.com -t 255); - 若仍失败:可能是 ISP(运营商)的路由故障,联系运营商客服反馈。
- 临时增大 TTL 值测试(Windows 用
5. 「一般故障(General failure)」
- 输出示例:
正在 Ping github.com [140.82.112.4] 具有 32 字节的数据: 一般故障。 一般故障。 - 含义:本地网络接口(如网卡)故障,或网络配置错误(如 IP 地址冲突)。
- 排查方向:
- 检查本地网卡是否正常(Windows 打开「设备管理器」看网卡是否有黄色感叹号,macOS 看「系统设置-网络」是否显示「已连接」);
- 排查 IP 冲突:同一局域网内是否有其他设备和本地电脑用了相同的 IP(Windows 用
ipconfig查看本地 IP,macOS/Linux 用ifconfig)。
三、补充:ping 命令的实用参数(帮你更精准排查)
除了默认用法,添加参数能获取更多信息:
ping -t 目标地址(Windows)/ping -c 次数 目标地址(Linux/macOS):持续 ping(Windows 按 Ctrl+C 停止,Linux/macOS 用-c 10表示 ping 10 次);ping -l 数据包大小 目标地址(Windows)/ping -s 数据包大小 目标地址(Linux/macOS):测试不同大小数据包的传输(如ping -l 1024 github.com发送 1024 字节的包);ping -n 次数 目标地址(Windows):指定 ping 的次数(如ping -n 5 github.com只 ping 5 次)。
总结:看 ping 输出的核心逻辑
- 先看「是否解析出 IP」:有 IP → DNS 正常;无 IP → 查 DNS 或域名拼写;
- 再看「是否有回复」:有回复 → 看延迟(时间)和丢包率;无回复 → 查超时/不可达原因;
- 最后结合「错误提示」定向排查:超时查防火墙/目标禁 ping,不可达查目标联网状态,TTL 过期查路由。
注意:ping 只是「网络连通性测试」,即使 ping 不通,也不代表目标服务(如 Git、网页)不可用(比如目标禁 ping 但 443/22 端口正常),需结合后续 telnet 或浏览器访问进一步确认。
二、DNS解析问题(域名无法转化为IP)
核心命令:nslookup、dig(Linux/macOS)
典型现象
- 输入
www.baidu.com提示“无法解析域名”,但直接输入180.101.50.242(百度IP)可打开网页 - 电脑能ping通IP(如
ping 114.114.114.114),但ping域名时提示“未知主机”
工具使用与解读
- 执行
nslookup www.baidu.com:- 若显示
Non-existent domain:域名不存在或DNS服务器无该记录(可能是拼写错误)。 - 若显示
DNS request timed out:本地DNS服务器不可用(如路由器DNS配置错误)。
- 若显示
- 执行
dig @8.8.8.8 www.baidu.com(指定谷歌DNS):- 若成功解析:本地默认DNS服务器故障,需更换DNS。
解决办法
- 清除DNS缓存:
- Windows:
ipconfig /flushdns - Linux:
sudo systemctl restart nscd - macOS:
sudo dscacheutil -flushcache
- Windows:
- 更换DNS服务器:手动配置为114.114.114.114(国内)或223.5.5.5(阿里)(通过网卡属性或路由器设置)。
三、端口连通性检测(服务是否开放)
核心命令:telnet、nc、test-netconnection
典型现象
- 访问公司OA系统(端口8080)提示“连接被拒绝”,但能ping通服务器IP
- 远程连接服务器(SSH 22端口)时提示“端口未开放”
- 本地启动服务后,其他设备无法通过端口访问(如Tomcat的8080端口)
工具使用与解读
- 执行
telnet 192.168.1.100 8080(目标IP+端口):- 若提示“无法连接”:端口未开放或被防火墙拦截。
- 若连接后黑屏:端口正常开放,问题可能在服务本身(如服务未启动)。
- 执行
nc -zv 192.168.1.100 22(Linux):- 显示
Connection refused:端口明确未开放;显示succeeded:端口正常。
- 显示
解决办法
- 开放端口:
- Windows:防火墙“入站规则”添加端口允许(如8080)。
- Linux:
sudo ufw allow 22/tcp(UFW防火墙)或sudo firewall-cmd --add-port=8080/tcp。
- 重启服务:若端口开放但服务无响应,重启对应服务(如
sudo systemctl restart sshd)。 - 端口映射:若目标在局域网内,需在路由器配置“端口映射”(公网端口→内网IP:端口)。
四、本地网络配置查看(IP、网关、DNS等)
核心命令:ipconfig(Windows)、ip addr(Linux)
典型现象
- 电脑连接网络后,右下角提示“无网络访问权限”
- 手动设置IP后能上内网,但无法访问外网
- 局域网内设备互相ping不通(如电脑ping手机失败)
工具使用与解读
- 执行
ipconfig /all(Windows)或ip addr(Linux):- 若IP为
169.254.x.x:DHCP服务器未分配IP(路由器DHCP功能未启用)。 - 若网关为空或错误(如网关设为192.168.1.255):无法访问外网。
- 若DNS服务器为
0.0.0.0:域名解析会失败。
- 若IP为
解决办法
- DHCP问题:释放并重新获取IP(Windows:
ipconfig /release && ipconfig /renew;Linux:sudo dhclient -r && sudo dhclient)。 - 手动配置错误:修改IP、网关、DNS为正确值(如IP:192.168.1.100,网关:192.168.1.1,DNS:114.114.114.114)。
- IP冲突:在路由器中绑定IP与MAC地址(防止重复分配),或手动修改IP为未占用地址。
五、网络路径追踪(定位中间节点故障)
核心命令:tracert(Windows)、traceroute(Linux)
典型现象
- 访问国外网站(如GitHub)时提示“超时”,但国内网站正常
- 游戏延迟极高(>500ms),且同网络其他设备也有类似问题
工具使用与解读
- 执行
tracert www.github.com:- 若某一跳(如第5跳)开始持续显示
* * *:该节点到下一跳的链路中断(如运营商骨干网故障)。 - 若某一跳延迟骤增(如从50ms升至500ms):该节点负载过高或路由拥堵。
- 若某一跳(如第5跳)开始持续显示
解决办法
- 节点故障:记录故障节点IP(如
203.0.113.xx),反馈给运营商(如电信10000)排查。 - 路由拥堵:尝试切换网络(如手机热点),或修改本地DNS为运营商专用DNS(提升解析速度)。
六、网络连接与端口占用查询
核心命令:netstat、ss(Linux)、lsof(Linux/macOS)
典型现象
- 启动Tomcat时提示“Address already in use: 8080端口被占用”
- 电脑后台有不明进程占用大量带宽,导致网络卡顿
- 怀疑有恶意程序连接外部IP(如挖矿程序)
工具使用与解读
- 执行
netstat -ano | findstr "8080"(Windows):- 输出中
LISTENING状态的PID表示占用端口的进程,通过任务管理器结束该进程。
- 输出中
- 执行
ss -tulnp | grep "22"(Linux):- 显示
ssh 1234 root:22端口被SSH服务(PID 1234)占用,属正常现象。
- 显示
- 执行
lsof -i :80(Linux/macOS):- 若显示不明进程(如
unknown 5678):可能是恶意程序,需终止并查杀。
- 若显示不明进程(如
解决办法
- 端口占用:终止占用进程(Windows:任务管理器结束PID;Linux:
sudo kill -9 PID),或修改服务端口(如Tomcat改8081)。 - 异常连接:通过
netstat -an查看ESTABLISHED状态的外部IP,若为陌生IP,用防火墙拦截该IP。
七、路由表与网关配置(跨网段通信问题)
核心命令:route(Windows)、ip route(Linux)
典型现象
- 能访问192.168.1.x网段(本地局域网),但无法访问192.168.2.x网段(另一个子网)
- 手动配置IP后,内网互通正常,但外网访问失败
工具使用与解读
- 执行
route print(Windows)或ip route show(Linux):- 若缺省路由(0.0.0.0)未指向网关(如指向192.168.1.255):无法访问外网。
- 若目标网段(如192.168.2.0)无路由条目:无法跨网段通信。
解决办法
- 修复缺省路由:
- Windows:
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 -p(-p永久生效)。 - Linux:
sudo ip route add default via 192.168.1.1,并写入/etc/netplan/*.yaml配置文件。
- Windows:
- 添加跨网段路由:
- 访问192.168.2.0网段需通过网关192.168.1.254:
- Windows:
route add 192.168.2.0 mask 255.255.255.0 192.168.1.254 -p。 - Linux:
sudo ip route add 192.168.2.0/24 via 192.168.1.254。
- Windows:
- 访问192.168.2.0网段需通过网关192.168.1.254:
八、高级网络诊断与抓包
核心命令:tcpdump(Linux/macOS)、wireshark(跨系统)
典型现象
- 网络频繁断连,但基础命令(ping、telnet)检测正常
- 传输文件时速度骤降,且无明显带宽占用
- 浏览器访问特定网站时提示“SSL证书错误”或“连接重置”
工具使用与解读
- 执行
tcpdump -i eth0 port 443(抓取HTTPS流量):- 若大量出现
RST包:服务器主动关闭连接(如网站防火墙拦截)。 - 若出现
Duplicate ACK包:网络丢包导致数据重传,需排查链路稳定性。
- 若大量出现
- 使用Wireshark过滤
tcp.flags.reset==1:- 定位发送RST包的IP,判断是本地防火墙还是目标服务器拦截。
解决办法
- 丢包问题:更换网线、升级路由器固件(修复硬件兼容性bug)。
- 拦截问题:关闭本地防火墙(临时测试),或在目标服务器白名单中添加本地IP。
- SSL错误:清除浏览器缓存,或检查系统时间是否同步(证书依赖时间验证)。
总结:现象→工具→解决办法流程图
- 任何网络都不通 →
ping 网关→ 检查链路/重启网关 - 域名不通但IP通 →
nslookup→ 清缓存/换DNS - IP通但服务不通 →
telnet/nc→ 开端口/重启服务 - 本地配置异常 →
ipconfig/ip addr→ 修复IP/网关/DNS - 跨网延迟/中断 →
tracert→ 反馈运营商/切换路由 - 端口被占/异常连接 →
netstat/ss→ 杀进程/封IP - 复杂问题(如丢包/重置) →
tcpdump/Wireshark→ 抓包分析链路/拦截原因
按此流程操作,可逐步定位并解决90%以上的网络故障。