网络检测神器ss命令,你可能根本就不会用!

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络检测神器ss命令,你可能根本就不会用!
今天我们来介绍一下 Linux ss 命令。

ss 是 Socket Statistics 的缩写,用来统计 socket 连接的相关信息,它跟 netstat 差不多,但有着比 netstat 更强大的统计功能,能够显示更多更详细的连接信息。

刚开始接触 ss 命令可能会比较困难,我们可通过 ss -h 或者 ss -help 来详细学习 ss 的选项功能。

当然,最好的办法是直接尝试一些常用的命令来学习 ss 。

下面我们来了解一下 ss 的一些实用用法。

ss -s 是一个非常有用的命令。

它可以按网络传输类型显示总体统计信息,我们不妨来测试一下:
$ ss -s
Total: 524
TCP: 8 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total IP IPv6
RAW 2 1 1
UDP 7 5 2
TCP 8 6 2
INET 17 12 5
FRAG 0 0 0
•RAW Socket 原始套接字。

允许直接发送和接收IP 数据包,无需满足特定的传输协议,用于 namp 等安全应用。

•TCP 传输控制协议。

是我们网络连接当中的主要连接协议。

•UDP 用户数据报协议。

类似于 TCP 但没有错误检查。

•INET 包含上述项。

( INET4 和 INET6 可以通过一些 ss 命令单独查看)。

•FRAG 可以理解为碎片的意思。

显然,上面的输出结果并没有直接显示详细的 socket 连接情况,我们可以看到最上面的 Total 行显示的 socket 总数是非常多的,不过,这种分类统计的方式在某些情况下很有用。

如果想要查看具体的socket 活动信息,我们可以使用 ss -a 命令,但是我们要做好心理准备查看一大堆的信息,我们可以先用 wc -l 来统计一下行数试探一波:$ ss -a | wc -l
555
有木有被吓到?555 行数据!不过不必惊慌,我们可以查看指定类别的 socket 活动。

•ss -ta 转储所有 TCP socket
•ss -ua 转储所有 UDP socket
•ss -wa 转储所有 RAW socket
•ss -xa 转储所有 UNIX socket
•ss -4a 转储所有 IPV4 socket
•ss -6a 转储所有 IPV6 socket
不带参数的ss 命令会显示所有已经建立的socket 连接。

为了方便阅读,这里只显示一页的信息,省略其他大部分信息:
$ ss | more
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 20863 * 20864
u_str ESTAB 0 0 * 32232 * 33018
u_str ESTAB 0 0 * 33147 * 3257544ddddy
u_str ESTAB 0 0 /run/user/121/bus 32796 * 32795
u_str ESTAB 0 0 /run/user/121/bus 32574 * 32573
u_str ESTAB 0 0 * 32782 * 32783
u_str ESTAB 0 0 /run/systemd/journal/stdout 19091 * 18113
u_str ESTAB 0 0 * 769568 * 768429
u_str ESTAB 0 0 * 32560 * 32561
u_str ESTAB 0 0 @/tmp/dbus-8xbBdjNe 33155 * 33154
u_str ESTAB 0 0 /run/systemd/journal/stdout 32783 * 32782

tcp ESTAB 0 64 192.168.0.16:ssh 192.168.0.6:25944
tcp ESTAB 0 0 192.168.0.16:ssh 192.168.0.6:5385
要查看刚建立的 TCP 连接,使用 ss -t :
$ ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 64 192.168.0.16:ssh 192.168.0.6:25944
ESTAB 0 0 192.168.0.16:ssh 192.168.0.9:5385
要仅显示监听 socket ,尝试 ss -lt :
$ ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 10 127.0.0.1:submission 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:domain 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:*
LISTEN 0 10 127.0.0.1:smtp 0.0.0.0:*
LISTEN 0 128 [::]:ssh [::]:*
LISTEN 0 5 [::1]:ipp [::]:*
若你想要显示端口号而不是服务名,则 ss -ltn :
$ ss -ltn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 10 127.0.0.1:587 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
LISTEN 0 10 127.0.0.1:25 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 5 [::1]:631 [::]:*
这里就先介绍这么多,其他的详细内容请参考帮助手册( ss -h)。

另外,这里提供一些小技巧,你可以将那些最有用的选项转换为别名,能让你更容易使用。

例如:
$ alias listen='ss -lt'
$ alias socksum='ss -s'。

相关文档
最新文档