Administrator
Published on 2025-07-14 / 2 Visits
0
0

端口在握,运维不慌:一文看懂 ss 查询端口号的奥义(TCP/UDP全解析 + 字段详解)

🚀 这是你必须收藏的一篇运维干货!从新手到老鸟都绕不开的“ss查端口”技巧,全面解析TCP/UDP连接状态、进程追踪、字段含义,一网打尽!


一、背景:为什么要用 ss 查询端口?

在网络运维、安全排查、系统调优等实战场景中,我们常常需要:

  • 判断是否存在异常监听端口(如木马监听)

  • 查清哪个进程监听了哪个端口

  • 查看服务器对外连接是否异常或被攻击(如UDP泛洪)

  • 分析连接状态,如 ESTAB、LISTEN、CLOSE-WAIT 等

  • 核对应用绑定端口是否符合预期,防止端口冲突

虽然经典命令如 netstat 也能实现,但:

  • netstat 启动慢

  • ❌ 一些系统甚至不再默认安装

  • ✅ 而 ss(socket statistics)是更快更现代的替代品


二、常用命令:ss 查端口的最全命令合集

目的

命令

查看所有监听的TCP端口

ss -lt

查看所有监听的UDP端口

ss -lu

显示所有TCP连接(含非监听)

ss -at

显示所有UDP连接

ss -au

显示所有监听端口和对应进程(超级关键)

ss -ltnp(TCP)ss -lnup(UDP)

查询指定端口是否被监听(如80端口)

ss -ltnp | grep ':80'

-l:仅显示监听(Listening)状态的端口

-t:仅显示 TCP 协议

-n:不解析主机名与端口名称(加快速度)

-p:显示进程(PID/程序名)

查询某个程序是否绑定端口,不确定监听协议是TCP还是UDP

ss -lpn | grep nginx

-l:只显示监听(Listening)状态的 socket

-p:显示程序名和 PID

-n:不进行主机和端口解析(加快速度)

grep nginx:只显示与 nginx 相关的监听信息

✳️ 推荐加 -H 参数取消标题栏,利于脚本处理。


三、字段详解:你看到的都是什么意思?

下面是一条典型的 ss -ltnp 输出结果:

State   Recv-Q Send-Q Local Address:Port  Peer Address:Port  Process
LISTEN  0      128     0.0.0.0:80         0.0.0.0:*           users:(("nginx",pid=1234,fd=6))

字段

解释

State

当前连接状态,如 LISTEN、ESTAB(已连接)、CLOSE-WAIT

Recv-Q / Send-Q

接收/发送队列,通常为0,非0表示缓冲堆积

Local Address:Port

本地绑定的 IP 和端口

Peer Address:Port

对端 IP 和端口,LISTEN 状态下通常为 *

Process(重点)

正在监听该端口的进程信息


四、重点讲解 Process 字段结构(含括号内含义)

来看这一段内容:

users:(("nginx",pid=1234,fd=6))

含义逐项解释如下:

子字段

含义

"nginx"

进程名称,说明是 nginx 服务监听该端口

pid=1234

进程的 PID,可用于进一步查杀或调试

fd=6

File Descriptor,即该进程打开的 socket 文件描述符编号,用于高级调试

延伸知识:

  • 可以用 ls -l /proc/1234/fd/6 查到这个 socket 绑定的信息。

  • 有些进程可能会显示多个监听端口,也会出现多个 fd。


五、UDP 端口怎么查?是否也能显示进程?

可以!命令为:

ss -lnup

UDP 是无连接的协议,所以状态字段不像 TCP 那么丰富,常常显示为 UNCONN 或省略状态。

示例:

UNCONN  0  0  127.0.0.1:123  0.0.0.0:*  users:(("chronyd",pid=950,fd=5))

这表示 chronyd 这个时间同步服务监听了 123 端口,协议是 UDP。


六、实战案例:快速定位异常占用端口

场景一:谁监听了 8080?

ss -ltnp | grep :8080

输出:

LISTEN 0 128 0.0.0.0:8080  0.0.0.0:* users:(("java",pid=2301,fd=45))

➡️ 说明是某个 java 应用绑定了 8080,你可以结合 ps -p 2301 -f 进一步确认是哪一个。


场景二:排查UDP木马

ss -lnup

看到陌生服务监听了一些非常规端口,如 53413、65732,可立刻用如下命令查明路径:

ls -l /proc/6573/exe

查出其来源,结合 chkconfigsystemctl 查看是否开机启动。


七、小结:ss 是现代运维必备工具!

对象

推荐命令

TCP监听端口

ss -ltnp

UDP监听端口

ss -lnup

全部连接(含状态)

ss -anp

只看某端口

ss -anp | grep ":80"

🌟 进阶建议:可将 ss 结合 watch 实时查看端口连接情况,命令如下:

watch -n 1 'ss -s'

最后一句总结:

看清每一个端口的背后,是你对系统安全与运行状态的真正掌控!

📌 收藏这篇文章,当你哪天“端口异常”抓耳挠腮时,它就是你的救命指南!


Comment