最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
详解 netstat 显示所有已建立的 TCP 连接状态
时间:2026-07-15 19:36:45 编辑:袖梨 来源:一聚教程网
最直接有效的方式是使用 netstat -tn,因为它仅筛选 TCP 协议、以数字形式显示地址端口,并默认只输出 ESTABLISHED 状态连接,避免监听或关闭状态干扰,结果清晰高效。
要查看所有已建立的 TCP 连接,最直接有效的方式是使用 netstat -tn,它只显示处于 ESTABLISHED 状态的活跃连接,不包含监听端口或未完成握手的连接,结果清晰、干扰少。
为什么用 -tn 而不是 -a 或 -t
参数组合决定输出范围和可读性:
- -t:仅筛选 TCP 协议(排除 UDP 等无关协议)
- -n:以数字形式显示 IP 和端口(跳过 DNS 解析,速度快、结果稳定)
- 不加 -l(监听)或 -a(全部),就自动过滤掉 LISTEN、TIME_WAIT、CLOSE_WAIT 等非 ESTABLISHED 状态
若用 netstat -a 或 netstat -t,会混入大量监听中或已关闭的连接,需额外用 grep ESTABLISHED 筛选,反而多一步且易漏匹配。
识别 ESTABLISHED 连接的关键字段
典型输出如下:
tcp 0 0 192.168.1.100:22 192.168.1.200:49152 ESTABLISHEDtcp 0 0 192.168.1.100:3306 10.0.0.5:51234 ESTABLISHED
- Proto:协议类型,此处为 tcp
-
Local Address:本机 IP:端口(如
192.168.1.100:22表示本机 SSH 服务正与对方通信) -
Foreign Address:对端 IP:端口(如
192.168.1.200:49152是客户端临时端口) -
State:必须为
ESTABLISHED,表示三次握手已完成,数据双向传输中
需要关联进程时加 -p 参数
仅看连接不够?想确认哪个程序在通信?加上 -p(需 root 权限):
- 命令:
sudo netstat -tnp | grep ESTABLISHED - 输出末尾会多一列 PID/Program name,例如
1234/sshd或5678/mysqld - 注意:普通用户执行
-p会提示 “can't resolve port number”,必须用sudo
快速排查常见问题的小技巧
实际运维中常结合管道提升效率:
- 查某个服务的对外连接(如 MySQL):
sudo netstat -tnp | grep :3306 | grep ESTABLISHED - 统计当前活跃连接数:
netstat -tn | grep ESTABLISHED | wc -l - 按远程 IP 归类排序:
netstat -tn | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
相关文章
- 耐玩的双人游戏无广告推荐 2026免费的双人游戏无广告盘点 07-15
- 适合小学生玩的游戏推荐 2026小学生喜欢玩的游戏合集 07-15
- 日式rpg游戏合集 2026最受欢迎的日式rpg游戏大盘点 07-15
- 濡沫江湖洛阳郊外隐藏宝箱具体位置一览 07-15
- 暗黑破坏神4怎么堆叠减伤 暗黑破坏神4堆减伤攻略 07-15
- tavo角色卡怎么导入 07-15