ping仅验证IP层连通性,不检测端口和服务;需用telnet或nc测试TCP端口,配合ethtool确认物理链路,再按“物理→网关→IP→端口”顺序排查。

能连通,但不等于服务可用;ping 只管通不通,不管端口开不开、服务起没起。
用 ping 测试 IP 层是否可达
这是最基础的判断:本地能否发出 ICMP 包并收到回应。它只验证网络层路径,不涉及任何端口或协议逻辑。
- 发 4 个包就停:
ping -c 4 8.8.8.8—— 若返回0% packet loss,说明到该 IP 的路由通;若卡在Destination Host Unreachable或全程timeout,问题出在网关、路由或物理链路 - 绕过 DNS 直接测域名:
ping -c 4 -W 2 example.com,-W 2防止因 DNS 慢而假性超时 -
ping -c 1 192.168.1.1快速确认网关——比 ping 外网更早暴露局域网问题 - 注意:
ping被目标禁用(如云主机默认关 ICMP)时会显示超时,但不代表网络不通,得换其他方式验证
用 telnet 或 nc 测试 TCP 端口是否可连
ping 通了,不代表服务能访问;HTTP、SSH、数据库等都依赖特定端口监听。这时必须验证传输层连接能力。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
telnet example.com 443—— 成功则显示Connected to...;Connection refused表示端口有监听但拒绝连接(服务未启或配置拒连);卡住不动大概率是防火墙拦截或中间设备丢包 - 系统没装
telnet?Ubuntu/Debian 用sudo apt install telnet,CentOS/RHEL 用sudo yum install telnet - 更推荐
nc:nc -zv 10.0.0.5 22(-z扫描不发数据,-v显示详情);加-w 3设 3 秒超时,避免脚本挂死 - 批量测端口:
for port in 22 80 443; do nc -zv target-ip $port; done
查网卡本身有没有物理连接
连 ping 都发不出去,先别急着查路由,可能是网线没插、交换机断电、或接口 down 了。
-
ethtool eth0 | grep "Link detected"—— 输出yes才代表物理链路真实存在;no就得去拔插网线、查对端设备 -
cat /sys/class/net/eth0/operstate返回up是内核认为接口启用,但可能仍无物理信号;配合ethtool才可靠 -
ip link show eth0中若含NO-CARRIER,直接说明底层无链路;state UP只表示软件启用,不保真 - 别只信
ifconfig或ip a显示有 IP —— 它们不反映物理状态,容易误判
为什么 netstat 和 ss 不适合“检查连通性”
它们看的是本机当前的连接和监听状态,不是用来测“能不能通”的工具。混淆这点会导致排查方向错误。
-
netstat -tuln或ss -tuln只告诉你“本机哪些端口正在监听”,不能说明外部能否连上 -
netstat -anp显示所有连接,但只限已建立的连接 —— 连都连不上,自然不会出现在这里 - 想查谁占了 80 端口?用
lsof -i :80;想看本机有没有异常外连?ss -tnp | grep ESTAB更快 - 现代系统建议优先用
ss,netstat已被很多发行版默认移除,需手动装net-tools
真正卡点往往不在命令本身,而在顺序:先确认物理链路 → 再测网关可达性 → 接着验证目标 IP 是否可达 → 最后打端口。跳步或只依赖 ping,会把防火墙、服务未启、DNS 失败等问题全归给“网络不通”。

















