网络调试四剑客:ping / telnet / nc / netstat 速查指令集

摘要: 本文整理开发中常用的四种网络排查工具:用 ping 判断主机连通性,用 telnet 快速探测端口,用 nc 完成扫端口、传文件和临时通信,用 netstat 检查本机端口占用与连接状态。文末还提供常见场景速查表和踩坑提醒,方便遇到网络问题时按顺序快速定位。


1. ping ------ 先看路通不通

我最先用它。它就是我的"网络试金石",看目标主机在不在、往返要多久。

我常用的几种打法:

命令 什么时候用 我的示例
ping 目标 最简单的健康检查,看对方是否活着。 ping google.com
ping -c 4 目标 我只想看个大概结果,不想让它一直跑。 ping -c 4 192.168.1.1
ping -i 0.5 目标 网络不太稳定时,我想看看快速发包的效果。 ping -i 0.5 baidu.com
ping -s 1024 目标 有时我想测测大包会不会被丢。 ping -s 1024 8.8.8.8

重点看 time 值是否波动太大,以及有没有连续丢包。一旦 icmp_seq 不连续,我就知道链路可能有点问题了。


2. telnet ------ 快速摸一下端口

如果我怀疑是防火墙或服务没起来,我就用 telnet 简单探一下端口。虽然它不安全,但胜在几乎所有系统都有。

使用方式:

命令 什么时候用 我的示例
telnet 主机 端口 最直接的端口探测,能通就是好。 telnet 192.168.1.10 80
连接成功后 偶尔我会手动发个 HTTP 请求试试应用层。 输入 GET / HTTP/1.1 再按两下回车

判断结果的法则:

  • 连上 → 端口开着,往下查应用。
  • Connection refused → 服务根本没起来,或者端口没监听。
  • Connection timed out → 八成是防火墙拦了,或者 IP/端口写错了。

现在很多新机器默认没装 telnet,真要用就 yum install telnet 或 apt install telnet 先装上。


3. nc (netcat) ------ 功能最强的"瑞士军刀"

这玩意儿是工具箱里的"瑞士军刀"------能探测端口、传文件、甚至当简易服务器用。脚本里我最爱用它。

常用招数:

场景 我的命令 我这么用
快速扫端口 nc -zv 192.168.1.10 22-80 -z 只扫不连,-v 给我看结果,扫一段端口特别快。
设置超时 nc -w 2 -zv 10.0.0.1 443 网络慢的时候,别傻等着,2 秒没反应就放弃。
传文件(接收端) nc -l -p 1234 > file.txt 我这边先开着监听,等文件从另一边过来。
传文件(发送端) nc 192.168.1.2 1234 < file.txt 这是发送方,把文件内容送到接收端的 1234 端口。
临时聊天/调试 服务端:nc -l -p 5555 客户端:nc 192.168.1.2 5555 我偶尔用它做两个主机间的简单文本通信,比如调试时发个消息。

4. netstat ------ 查本机在干什么

前面三个都是往外看,netstat 是往内看------看机器上开了哪些端口、哪个进程占了端口、连接状态怎么样。这是我最常用来定位"端口被谁占了"的命令。

核心命令表:

命令 我什么时候用它 我的示例
netstat -tuln 查看本机在监听哪些端口,我最常用的命令。 netstat -tuln
netstat -antp 排查端口占用,这个命令带进程信息,定位问题首选。 netstat -antp
netstat -an 看所有连接的状态,包括建立的、等待的。 netstat -an
netstat -i 网卡是不是在丢包,用它看一眼统计。 netstat -i
netstat -r 我想知道数据包往哪个网关走了。 netstat -r
netstat -c -antp 持续监控连接变化,像 top 一样实时刷新。 netstat -c -antp

看输出的小窍门:

  • Local Address 是 0.0.0.0:80 → 表示所有 IP 的 80 端口都在监听。
  • State 是 LISTEN → 正在等待连接;ESTABLISHED → 连接已建立;TIME_WAIT → 正在关闭。
  • 用 -p 参数能看到进程 PID,找麻烦的进程就靠它。

实际案例: 有次我启动服务报 8080端口被占用,直接 netstat -antp | grep 8080,立刻找到是哪个进程,kill 掉就解决了。


场景速查表

遇到网络问题,按这个顺序来:

我的需求 我用的工具 我敲的命令
看看对方主机在不在 ping ping -c 4 8.8.8.8
随便探探某个端口通不通 telnet telnet 192.168.1.1 3306
快速扫一下端口范围 nc nc -zv 192.168.1.1 80-90
临时传个文件给同事 nc 我开监听,他发数据
看本机开了哪些端口 netstat netstat -tuln
查谁占了我想要的端口 netstat `netstat -antp

踩过的坑

  1. 安全提醒: 用 telnet 和 nc 传敏感信息?别,都是明文。
  2. 权限问题: 监听 1024 以下的端口,比如 80、443,必须用 sudo。netstat -p 也得加 sudo 才能看到进程名。
  3. Windows 上怎么办: Windows 有 ping,telnet 得去"启用或关闭 Windows 功能"里开,nc 就装个 Nmap 吧。netstat -ano 在 Windows 上也能用,就是少了 -p 的参数。
  4. 排查顺序: 我的习惯是 ping → telnet/nc → netstat → 再看应用日志,基本能解决 90% 的问题。
相关推荐
chenbingjie_c8 小时前
C++ 进阶核心知识点总结:模板、内存分区、new/delete、内存池
开发语言·c++
Escalating_xu9 小时前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言
实心儿儿9 小时前
Qt — Qt 事件
开发语言·qt
周杰偷奶茶9 小时前
【Java】数据类型与变量
java·开发语言
code斗9 小时前
Java数据结构:堆详解
java·开发语言·数据结构
YoungStudyAI9 小时前
QA的下一个自动化阶段,可能不是再写更多脚本,而是设计测试Agent
运维·自动化
重生之小比特9 小时前
【C++进阶】map和set
java·开发语言·c++
圆圆讲门店10 小时前
挑选同城获客服务机构时需要考量的核心因素都有哪些?
大数据·网络·人工智能·python
lie..10 小时前
30天从零开始学AI应用开发(Day 12):像产品一样稳:流式输出、报错重试、花钱控制
开发语言·人工智能·php
傻啦嘿哟10 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习