ss
1、概述
是 Socket Statistics 的缩写,用来显示处于活动状态的套接字信息,iproute2 包附带的一个工具
它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快
当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢,此时应使用ss
2、语法,参数
ss [参数]
ss [参数] [过滤]
参数 | 说明 | 备注 | |
-h | --help | 帮助信息 | |
-V | --version | 程序版本信息 | |
-n | --numeric | 不解析服务名称 | |
-r | --resolve | 解析主机名 | |
-a | --all | 显示所有监听的端口及建立的连接 | |
-l | --listening | 显示监听状态的端口 | |
-o | --options | 显示计时器信息 | |
-e | --extended | 显示详细的套接字(sockets)信息 | |
-m | --memory | 显示套接字(socket)的内存使用情况 | |
-p | --processes | 显示监听端口的进程 | |
-i | --info | 显示 TCP内部信息 | |
-s | --summary | 显示套接字(socket)使用概况 | |
-4 | --ipv4 | 仅显示IPv4的套接字 | |
-6 | --ipv6 | 仅显示IPv6的套接字 | |
-0 | --packet | 显示 PACKET 套接字 | |
-t | --tcp | 仅显示使用TCP协议的 | |
-u | --udp | 仅显示使用UDP协议的 | |
-d | --dccp | 仅显示使用DCCP协议的 | |
-w | --raw | 仅显示 RAW套接字(sockets) | |
-x | --unix | 仅显示 Unix套接字(sockets) | |
-f | --family=FAMILY | 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink | |
-A | --query=QUERY, --socket=QUERY | QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] | |
-D | --diag=FILE | 将原始TCP套接字(sockets)信息转储到文件 | |
-F | --filter=FILE | 从文件中除去过滤器信息 |
3、每列含义
使用ss不加参数,默认输出所有建立的连接(不包含监听的端口),包括 tcp, udp, and unix socket 三种类型的连接
列名 | 含义 |
Netid | 网络标识符 |
State | 每个服务的连接状态 |
Recv-Q | LISTEN 状态下,表示当前全连接队列的大小;非LISTEN状态下,表示已收到但未被应用进程读取的字节数 |
Send-Q | LISTEN 状态下,表示当前全连接最大队列长度;非LISTEN状态下,表示已发送但未收到确认的字节数 |
Local Address:Port | 运行本地的计算机地址及端口 |
Peer Address:Port | 对端地址及端口 |
4、实例
按网络传输类型显示总体统计信息
[root@mysql ~]# ss -s Total: 37360 (kernel 48199) TCP: 21430 (estab 2, closed 21420, orphaned 5, synrecv 0, timewait 119/0), ports 0 Transport Total IP IPv6 * 48199 - - RAW 0 0 0 UDP 2 2 0 TCP 10 6 4 INET 12 8 4 FRAG 0 0 0
ss -tln | 显示使用tcp协议监听的端口 |
ss -tlnp | 显示使用tcp协议监听的端口及进程信息 |
ss -tan | 显示使用tcp协议监听的端口及连接信息 |
ss -talnp | 显示使用tcp协议监控的端口,进程和连接信息 |
ss -tan|awk 'NR>1{++S[$1]}END{for (a in S) print a,S[a]}' | 统计tcp连接状态及数量 |
5、匹配远程与本地地址和端口号
- dst:过滤连接的目标地址
- src:过滤连接的本地地址
- dport:目标端口
- sport:来源端口
实例
#匹配本地端口和端口号 ss src 192.168.157.166 ss src 192.168.157.166:22 ss src 192.168.157.166:ssh #匹配远程地址和端口号 ss dst 192.168.157.33 ss dst 192.168.157.33:443 ss dst 192.168.157.33:http
6、将本地与远程端口和一个数进行比较
语法:
ss dport OP num
ss sport OP num
OP 可以代表以下任意一个
<= | le | 小于或等于某个端口号 |
>= | ge | 大于或等于某个端口号 |
== | eq | 等于某个端口号 |
!= | ne | 不等于某个端口号 |
> | gt | 大于某个端口号 |
< | lt | 小于某个端口号 |
实例
#显示来源端口小于50的端口号的内容 ss -tuln sport lt 50 #如果要用符号,则需要在符号前面加上转义符 ss -tuln sport \< 50
7、通过 TCP 的状态进行过滤
支持的TCP状态:
established syn-sent syn-recv fin-wait-1 fin-wait-2 time-wait closed close-wait last-ack listening closing connected 列出除了 listening 和 closing 之外的所有 TCP 状态 synchronized 列出除了 syn-sent 之外的所有 TCP 状态 bucket 列出 maintained 的状态,如:time-wait 和 syn-recv big 列出和 bucket 相反的状态
实例
#显示所有状态为 established 的连接 ss state established #过滤ipv4的地址 ss -4n state established #显示所有状态为 Established 的 HTTP 连接 ss state established '( sport = :http or dport = :http )' ss state established \( sport = :http or dport = :http \) #所有连接到 22 端口的连接和对 22 端口的监听 ss state all dport = :22
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端