![36745bf74609ac5b4bc375d84175748e.png](https://i-blog.csdnimg.cn/blog_migrate/6c39f48f20da0efe21d3dfd8ce4d5bee.jpeg)
前言
ss(Socket Statistics,套接字统计):可以显示各类协议、各种状态的套接字信息,从而有效跟踪服务运行状态(如服务是否启动)和服务端与客户端的连接状态。
目录
一、描述
二、命令
三、ss命令返回字段含义
四、总结
五、思维导图
一、描述
ss(Socket Statistics,套接字统计):可以用来获取socket统计信息,它显示的内容和netstat类似。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息被,而且比netstat更快。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。ss命令利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,因此ss命令的性能会好很多。
二、命令
1、语法
ss [选项]
2、常用选项
- [ -a ]:显示所有(侦听中和已建立的)的套接字;
- [ -u ]:只显示UDP传输协议的套接字;
- [ -p ]:显示使用套接字的进程信息,包括启动该服务的程序名称、进程号等;
- [ -e ]:显示详细的套接字信息(包含了以太网的统计信息),此选项可以与-s选项组合使用;
- [ -n ]:不解析服务名称,以数字方式显示;
- [ -4 ]:显示IPv4的套接字信息;
- [ -t ]:只显示TCP传输协议的套接字;
- [ -l ]:只显示处于侦听状态的套接字;
- [ -s ]:显示按协议统计信息。默认显示IP、IPv6、ICMP、TCP、TCPv6、UDP和UDPv6的统计信息;
- [ -m ]:显示套接字的内存使用情况;
- [ -r ]:将输出信息中的IP解析到主机名后再显示;
- [ -6 ]:显示IPv6的套接字信息。
![fdd011caf172532970bf689e69fec0e9.png](https://i-blog.csdnimg.cn/blog_migrate/01220c219282b98923314759cabfa177.jpeg)
3、ss命令的帮助信息
[root@localhost ~]# ss --helpUsage: ss [ OPTIONS ] ss [ OPTIONS ] [ FILTER ] -h, --help this message -V, --version output version information -n, --numeric don't resolve service names -r, --resolve resolve host names -a, --all display all sockets -l, --listening display listening sockets -o, --options show timer information -e, --extended show detailed socket information -m, --memory show socket memory usage -p, --processes show process using socket -i, --info show internal TCP information -s, --summary show socket usage summary -b, --bpf show bpf filter socket information -E, --events continually display sockets as they are destroyed -Z, --context display process SELinux security contexts -z, --contexts display process and socket SELinux security contexts -N, --net switch to the specified network namespace name -4, --ipv4 display only IP version 4 sockets -6, --ipv6 display only IP version 6 sockets -0, --packet display PACKET sockets -t, --tcp display only TCP sockets -S, --sctp display only SCTP sockets -u, --udp display only UDP sockets -d, --dccp display only DCCP sockets -w, --raw display only RAW sockets -x, --unix display only Unix domain sockets --vsock display only vsock sockets -f, --family=FAMILY display sockets of type FAMILY FAMILY := {inet|inet6|link|unix|netlink|vsock|help} -K, --kill forcibly close sockets, display what was closed -H, --no-header Suppress header line -A, --query=QUERY, --socket=QUERY QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY] -D, --diag=FILE Dump raw information about TCP sockets to FILE -F, --filter=FILE read filter information from FILE FILTER := [ state STATE-FILTER ] [ EXPRESSION ] STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES} TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing} connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing} synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing} bucket := {syn-recv|time-wait} big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
三、ss命令返回字段含义
[root@localhost ~]# ss -atnState Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 127.0.0.1:6010 *:* ESTAB 0 36 192.168.28.200:22 192.168.28.1:51342 LISTEN 0 128 :::111 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 128 ::1:6010 :::*
在上面的输出结果中,从左到右共有5个字段,各字段的含义如下:
- State:表示连接状态(共11种),如:LISTEN(监听)、ESTABLISHED(连接已经建立)。
- Recv-Q:从远程主机传送过来的数据已经在本地接收缓冲,但是还没有被进程取走的字节数。
- Send-Q:表示对方没有收到的数据或者说没有应答Ack的字节数。
- Local Address:Port:表示本地地址和服务端口,默认显示主机名和服务名称,使用选项-n后显示主机的IP地址和端口号,若为“*”表示“所有”、若为“::”表示所有IPv6接口、若为“::1”表示IPv6回环接口lo。
- Peer Address:Port:表示与本机连接的远程主机的地址和端口,默认显示主机名和服务名称,使用选项-n后显示主机的IP地址及端口号。
例:查看所有的TCP端口和使用它们的进程
[root@localhost ~]# ss -tnapState Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=722,fd=8))LISTEN 0 5 192.168.122.1:53 *:* users:(("dnsmasq",pid=1553,fd=6))LISTEN 0 128 *:22 *:* users:(("sshd",pid=1184,fd=3))LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",pid=1181,fd=12))LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1561,fd=13))LISTEN 0 128 127.0.0.1:6010 *:* users:(("sshd",pid=1380,fd=9))ESTAB 0 36 192.168.28.200:22 192.168.28.1:51342 users:(("sshd",pid=1380,fd=3))LISTEN 0 128 :::111 :::* users:(("rpcbind",pid=722,fd=11))LISTEN 0 128 :::22 :::* users:(("sshd",pid=1184,fd=4))LISTEN 0 128 ::1:631 :::* users:(("cupsd",pid=1181,fd=11))LISTEN 0 100 ::1:25 :::* users:(("master",pid=1561,fd=14))LISTEN 0 128 ::1:6010 :::* users:(("sshd",pid=1380,fd=8))
四、总结
- ss(Socket Statistics,套接字统计):可以用来获取socket统计信息
- 显示的内容与netstat类似,但能够显示更多更详细的有关TCP和连接状态的信息
- ss命令返回5个字段的内容:State, Recv-Q, Send-Q, Local Address:Port, Peer Address:Port
五、思维导图
![dac1e756188db1cca9e76da5c95dfa77.png](https://i-blog.csdnimg.cn/blog_migrate/f639e8f06f601f633774e0c4889c7f5f.jpeg)