Linux进程之间通过socket进行通信。有一些工具可以列出、解析和提供有关套接字的信息。Ss就是其中之一。Netstat命令也可以列出和解析套接字,但是它很慢,因为有很多套接字。Ss直接从Linux内核获取关于socket的信息。
列出所有连接
首先,可以列出所有现有连接、侦听Unix和网络套接字 -l
.
$ ss -l

-
Netid
列指定套接字的类型,如nl、uúdgr、tcp、udp -
State
列指定套接字的当前状态,如侦听、已建立等。 -
Recv-Q
列显示接收到的数据包 -
Send-Q
列显示发送 小包 -
Local Address:Port
列显示本地地址和端口或等效值 -
Remote Address:Port
列显示远程 地址和端口或等效值
筛选TCP连接
列出所有连接将在终端上创建大量输出,特别是在繁忙的服务器中。或者我们可能只需要TCP连接就可以列出 检查。有两种方法可以只列出TCP连接。一种方法是使用TCP选项 -t
直接。这将筛选并列出所有已建立的TCP连接。
$ ss -t

或者
$ ss -A tcp

正如我们所看到的,两个命令都输出了相同的输出,因为它们执行相同的操作,只是语法不同。 -A
选项用于简单和复杂的查询,我们将在下面查看它。我们将TCP协议指定为查询过滤器,以便只列出TCP连接。
筛选UDP 插座
像过滤TCP连接一样,UDP连接可以像下面这样过滤。在第一个示例中,我们将提供一个直接选项 -u
筛选UDP套接字。
$ ss -ua

或者
$ ss -a -A udp

正如我们可以看到前面的例子,我们提供了额外的选择 -a
因为UDP是一个无连接协议,我们想列出可以用这个选项列出的套接字。
列出套接字、连接的所有状态
ss
默认情况下,命令仅列出已建立和连接的套接字/连接。监听插座将被消除。这个 -a
选项将列出所有它们而不删除。
$ ss -a

筛选Unix 插座
Unix套接字用于在驻留在同一Linux系统中的进程之间进行通信和交换数据。这个套接字机制是从旧的Unix系统继承的。Unix-Linux系统中的所有套接字都可以与 -x
或 --unix
选项。
$ ss -x

筛选IPv4连接
Linux网络栈支持不同的协议,但IPv4是最流行的协议,主要用于internet。打印网络协议时,所有这些协议都列出,如IPv4、IPv6、Apple Talk等。IPv4协议连接和套接字可以使用 -4
或 --ipv4
选项如下。
$ ss -4

筛选IPv6连接
如前所述,对当前连接和套接字进行IPv4筛选。对于IPv6连接和具有 -6
或 --ipv6
选项。
$ ss -6 -a

根据端口号筛选连接
可以根据端口号筛选连接和套接字。过滤这类信息需要特殊的语法和极大的灵活性。我们将通过指定 ssh
港口。
$ ss '( dport = :ssh or sport = :ssh )'

使用端口号
在本例中,我们根据源端口和目标端口进行了过滤。在表示端口时,我们使用了协议名称,但是对于下面的端口规范,数字是可以的。
$ ss '( dport = :22 or sport = :22 )'

根据IP地址筛选连接
我们将根据IP地址过滤连接。目标主机和源主机都有一个IP地址。这些被称为
-
dst
对于目标或远程IP地址 -
src
源或本地IP地址
$ ss dst 192.168.122.1

根据状态筛选TCP连接
众所周知,TCP协议是一种有状态协议。什么是有状态的?Stateful只是指源主机为网络连接创建会话。TCP有以下几种流行的状态
-
listen
用于侦听端口或套接字的服务 -
established
用于已创建的连接 -
syn-sent
用于为TCP连接启动会话创建,但不竞争
相关文章: “无路由到主机”错误及解决方法
在本例中,我们将查找已建立的状态TCP端口。
$ ss -t state established

解析主机名
解析主机名将转换并显示IP地址及其相关主机名。这将减慢列表过程,但可能更有用和信息量更大。
$ ss -t -r state established

解析主机名
解析主机名可能是一个慢下来的问题,并且很容易被禁用 -n
参数如下。
$ ss -t -n

仅显示侦听套接字
默认情况下,只列出已建立的套接字和端口。列出侦听端口和套接字 -l
应提供选项。
$ ss -t -l

显示进程 名称和进程ID
在打印现有的套接字和端口时,我们可能需要相关的进程名称和ID。这可以用 -p
参数。在本例中,我们将列出ssh端口的进程名和id。
$ sudo ss -t -p

正如我们所看到的,进程名是 sshd
进程id为 2337
带文件描述符 3
一个连接。
打印摘要统计信息
有关端口和套接字的统计信息可以用 -s
参数。
$ sudo ss -s

在本例中,有关RAW、UDO、TCP、INET和FRAG类型以及相关IP协议版本(如IPv4和IPv6)的统计信息
显示计时器信息
计时器选项将提供有关套接字或连接的信息。定时器信息可以通过 -o
参数。
$ sudo ss -t -o

在本例中,我们可以看到ssh连接的总时间和当前TCP keep-alive状态。