在网络管理和性能监控中,Socket 连接的状态直接影响系统的运行表现。Linux 提供了强大的 ss
(Socket Statistics)命令,用于查看 Socket 连接信息和网络状态。作为 netstat
命令的现代替代品,ss
更高效,功能更强大。
ss
命令简介
ss
是 Linux 系统中用于显示套接字(Socket)状态和统计信息的工具,提供比 netstat
更快的查询速度和更全面的功能。
主要特点:
• 高效:能够快速展示成千上万的连接信息。
• 全面:支持 TCP、UDP、RAW、UNIX 等协议。
• 实时:适用于动态监控网络连接。
ss
命令是 iproute2
工具包的一部分,默认安装在现代 Linux 系统中。
ss [OPTIONS] [FILTER]
常见选项:
•
-t
:显示 TCP 套接字。•
-u
:显示 UDP 套接字。•
-l
:仅显示监听(Listening)套接字。•
-p
:显示与套接字关联的进程信息。•
-a
:显示所有套接字(监听和非监听)。•
-n
:数字格式显示地址和端口(避免 DNS 解析)。•
-r
:解析主机名。•
-i
:显示内部信息。•
-s
:显示套接字摘要统计。
过滤条件:
•
state
:按连接状态过滤,如established
、listening
。•
dport
或sport
:按目标端口或源端口过滤。•
src
或dst
:按源地址或目标地址过滤。
基本用法详解
1. 查看所有套接字
运行以下命令显示系统中所有的 Socket 连接:
ss -a
输出示例:
字段解释:
•
Netid
:套接字协议(如 TCP、UDP)。•
State
:连接状态。•
Recv-Q
/Send-Q
:接收/发送队列长度。•
Local Address:Port
:本地地址和端口。•
Peer Address:Port
:远端地址和端口。
2. 查看特定协议的连接
• TCP 套接字:
ss -t
• UDP 套接字:
ss -u
• UNIX 套接字:
ss -x
3. 仅查看监听套接字
ss -l
应用场景:
• 确认哪些服务正在监听端口。
• 调试服务器程序。
进阶功能解析
1. 显示关联的进程信息
通过 -p
选项查看哪些进程使用某些端口:
ss -tulpn
应用场景:
• 识别异常连接的源进程。
• 确认服务是否按预期监听端口。
2. 按状态过滤连接
使用 state
过滤器筛选特定状态的连接:
ss -t state established
常见状态:
•
established
:已建立连接。•
listening
:监听中。•
syn-sent
:发送 SYN 等待响应。•
closed
:已关闭。
3. 按端口或地址过滤
• 查看目标端口为 80 的连接:
ss -t dport = :80
• 查看源地址为
192.168.1.10
的连接:
ss -t src 192.168.1.10
4. 显示统计信息
使用 -s
选项查看套接字统计信息:
ss -s
示例输出:
应用场景:
• 快速掌握网络协议的使用情况。
• 排查连接异常或负载过高的问题。
ss
命令与 netstat
的比较
功能 | ss | netstat |
性能 | 高效,支持大规模连接 | 较慢,性能有限 |
支持协议 | 全面(TCP、UDP、UNIX 等) | 较为有限 |
数据实时性 | 实时显示 | 较少更新 |
是否已废弃 | 活跃维护 | 停止开发 |
推荐:
对于日常使用,建议完全迁移到 ss
命令。