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