一、ss命令介绍
二、ss命令格式和使用
1、命令格式
2、ss命令的常用选项
3、命令的常见用法
3.1 找出打开套接字/端口应用程序
3.2 检查系统的监听套接字
3.3 显示所有状态为established的SMTP连接
3.4 查看建立的 TCP 连接
3.5 通过 -r 选项解析 IP 和端口号
3.7 通过 TCP 的状态进行过滤
ss命令的功能和netstat类似,相对netstat,但它具有一些明显的优势:
首先,ss命令能显示更多更详细的TCP和连接状态的信息。
其次,它在处理大量socket连接时,比netstat更快更高效。这是因为ss命令利用了TCP协议栈中的tcp_diag模块,这个模块可以获得Linux内核中的第一手信息,因此其性能优于其他工具。
ss命令的使用方式也非常灵活,可以通过添加不同的参数来查看不同类型的信息。例如,使用-a参数可以列出所有连接状态;使用-t参数可以只列出TCP连接状态;使用-u参数可以只列出UDP连接状态;使用-l参数可以只列出监听状态;使用-s参数可以列出已经建立的连接状态。这些参数可以组合使用,以满足不同的查看需求。
ss -help
如下列举一些常用的选项,若需要了解更多,可以使用 ss --help 查看
-n, --numeric:以数字格式显示地址和端口。使用此选项可以避免将地址和端口转换为主机名或服务名,从而加快查询速度
-t, --tcp:仅显示TCP套接字信息
-u, --udp:仅显示UDP套接字信息
-l, --listening:仅显示处于监听状态的套接字
-a, --all:显示所有套接字信息,包括监听和非监听状态的套接字
-r, --resolve:尝试解析服务名为主机名
-p, --processes:显示与每个套接字相关联的进程信息,包括进程ID和进程名称
-e, --extended:显示详细的TCP套接字信息
-s, --summary:显示套接字统计摘要信息。
ss -tnlp | grep port
如下java程序pid:18034 ,监听端口2181
监听套接字是系统等待外部连接的地方。使用ss命令可以轻松检查这些套接字:
ss -l | grep 1019
ss -o state 'established'
ss -o state established '( dport = :smtp or sport = :smtp )'
ss -tna
显示 TCP 协议的 sockets 只显示处于监听状态的端口
ss -tlr
# 匹配本地地址和端口号
ss src 192.168.2.152
# 匹配远程地址和端口号
ss dst 192.168.2.152
ss dst 192.168.2.153:50460
ss dst 192.168.2.153:mysql
ss 命令还可以通过 TCP 连接的状态进程过滤,支持的 TCP 协议中的状态有:
{established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
# 列举出处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为192.168.2/24所有 tcp套接字
ss -o state FIN-WAIT-1 dst 192.168.2/24
# 显示所有状态为 Established的HTTP连接
ss state listening '( sport = :http or dport = :http )'
#使用 ipv4 时的过滤语法
ss -4n state listening
# 列出所有连接到2181端口的连接和对2181端口的监听
ss -r state all dport = :2181