在 Linux 中如何使用 `ss` 命令监控 Socket 连接?

百科   2024-11-16 20:42   江苏  

在网络管理和性能监控中,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:按连接状态过滤,如 establishedlistening

  • • 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 的比较

功能ssnetstat
性能高效,支持大规模连接较慢,性能有限
支持协议全面(TCP、UDP、UNIX 等)较为有限
数据实时性实时显示较少更新
是否已废弃活跃维护停止开发

推荐:

对于日常使用,建议完全迁移到 ss 命令。


大事!运维漫谈-技术交流群对外开放!

扫码可添加小编微信,申请进

▲长按加群



运维漫谈
运维漫谈,漫谈整个网络安全、云计算、大数据、数据库、开发等运维技术干货,旨在分享干货,帮您更快学习相关知识,解决问题,同时还有福利活动哦,关注我,带你成为大神,遨游技术海洋!
 最新文章