要查看 linux 系统端口监听的详细协议栈统计信息,必须解析 /proc/net/ 下的原始文件:/proc/net/{tcp,tcp6,udp,udp6} 提供套接字五元组、状态码、队列长度等底层字段;/proc/net/nf_conntrack 展示 nat 与有状态连接快照;通过 ino 字段可反查对应进程。

要查看 Linux 系统端口监听的详细协议栈统计信息,不能只依赖高层命令(如 ss 或 netstat)的汇总输出,而需深入内核暴露的原始数据源——/proc/net/ 下的各协议文件。它们直接映射内核内存中的连接状态、套接字参数和连接跟踪表,字段精确、无缓存延迟,是获取真实协议栈行为的唯一可靠途径。
/proc/net/tcp 和 /proc/net/tcp6:TCP 监听与连接全貌
这两个文件分别列出 IPv4 和 IPv6 的 TCP 套接字,每行代表一个 socket,包含完整五元组、状态码、队列长度、超时等底层信息。关键字段需手动解析:
-
local_address 和 rem_address:十六进制 IP:PORT 格式(如
0100007F:0016表示127.0.0.1:22),可直接转换验证监听地址范围 -
st:十六进制状态码(
0A= LISTEN,01= ESTABLISHED),比文字状态更稳定,适合脚本判断 - tx_queue/rx_queue:发送/接收队列当前字节数,非零值可能提示应用未及时读取或写入阻塞
- timer 列(若存在):显示定时器类型(0=无,1=重传,4=keepalive)及剩余秒数,用于诊断连接僵死或保活异常
/proc/net/udp 和 /proc/net/udp6:UDP 绑定与接收状态
UDP 无连接状态,但 /proc/net/udp* 能确认端口是否真正绑定、是否有数据积压:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 每行对应一个已
bind()的 UDP socket,st字段恒为07(UDP),ino(inode 号)可用于关联进程 -
rx_queue 非零表示内核已收到但用户态尚未
recv()的数据包字节数,持续增长说明应用处理慢或丢包 - 配合
ss -uln可交叉验证:若ss显示监听而/proc/net/udp中无对应行,说明 socket 已关闭但资源未完全释放
/proc/net/nf_conntrack:NAT 与有状态连接的实时快照
当系统启用 conntrack(如配置 iptables NAT 或防火墙规则),该文件提供所有被跟踪连接的双向地址、端口、协议、超时剩余时间及状态标记:
- 每条记录含
src/dst、sport/dport、timeout(秒)、[ASSURED](表示已通过三次握手或足够数据交换) - 过滤特定连接:
sudo cat /proc/net/nf_conntrack | grep 'dport=80' | head -5,快速定位 HTTP 流量路径 -
timeout值骤降或频繁刷新,可能反映连接频繁重建;[ASSURED]缺失则连接未完成握手,需检查 SYN 包是否丢失
结合 inode 反查进程:从 socket 定位到具体程序
仅知道端口不够,需锁定占用 socket 的进程。核心方法是通过 inode 关联:
- 从
/proc/net/{tcp,udp}中提取某行的ino字段(如ino:000000008A9E4C2B) - 遍历所有进程的 fd:
for pid in /proc/[0-9]*; do sudo ls -l $pid/fd/ 2>/dev/null | grep "socket:\[$ino\]"; done | cut -d' ' -f1,9 - 得到 PID 后,用
ps -p $PID -o pid,comm,cmd查看进程名与启动命令,避免-p参数权限不足导致的遗漏










