ss
命令是一个网络状态查看工具,类似与前面提到的 netstat
的作用。只是当主机上存在非常多的连接时,ss
命令的速度可能是 netstat
命令的好几倍,即 ss
命令的效率更高。
ss
命令的使用格式如下:
ss [options] [ FILTER ]
options:常用选项
-t:tcp 协议相关;
-u:udp 协议相关;
-w:裸套接字相关;
-x:unix socket 相关;
-l:listen 状态的连接;
-a:所有;
-n:数字格式;
-p:相关程序及 PID;
-e:扩展的信息;
-m:内存用量;
-o:显示计时器信息;
FILTER:用来指定过滤条件;
[ state TCP-STATE ] [ EXPRESSION ]:
state:指定 tcp 连接有限状态机的状态,如 established;
EXPRESSION:
dport = :<PORT>:指定源端口;
sport = :<PORT>:指定目标端口;
src <addr>:匹配本地地址;
dst <sddr>:匹配远程地址;
TCP 的有限状态机(tcp finite state machine)指的是 TCP 的状态一定是在几个状态间转换,常见状态有如下:
- LISTEN:监听;
- ESTABALISHED:已建立、正在通信中的连接;
- SYN_SENT:三次握手的第一次;
- SYN_RECV:对方收到信息;
- CLOSEED:断开、已关闭;
例 1:显示所有 tcp 连接。
[root@zze ~]# ss -ta
例 2:列出所有处于监听状态的连接。
[root@zze ~]# ss -ta
例 3:显示所有状态为 established 的 HTTP 连接。
[root@zze ~]# ss -o state established '( dport = :http or sport = :http )'
例 4:列举出处于 FIN-WAIT-1 状态的源端口为 80 或者 443,目标网络为 193.233.7/24
所有 tcp 套接字。
[root@zze ~]# ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
评论区