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

系统 Linux
今天我们来介绍一下 Linux ss 命令。ss 是 Socket Statistics 的缩写,用来统计 socket 连接的相关信息,它跟 netstat 差不多,但有着比 netstat 更强大的统计功能,能够显示更多更详细的连接信息。

[[275651]]

今天我们来介绍一下 Linux ss 命令。ss 是 Socket Statistics 的缩写,用来统计 socket 连接的相关信息,它跟 netstat 差不多,但有着比 netstat 更强大的统计功能,能够显示更多更详细的连接信息。刚开始接触 ss 命令可能会比较困难,我们可通过 ss -h 或者 ss -help 来详细学习 ss 的选项功能。当然,最好的办法是直接尝试一些常用的命令来学习 ss 。下面我们来了解一下 ss 的一些实用用法。ss -s 是一个非常有用的命令。它可以按网络传输类型显示总体统计信息,我们不妨来测试一下:

  1. $ ss -s 
  2. Total: 524 
  3. TCP:   8 (estab 1, closed 0, orphaned 0, timewait 0) 
  4.  
  5. Transport Total     IP        IPv6 
  6. RAW       2         1         1 
  7. UDP       7         5         2 
  8. TCP       8         6         2 
  9. INET      17        12        5 
  10. FRAG      0         0         0 
  • RAW Socket 原始套接字。允许直接发送和接收 IP 数据包,无需满足特定的传输协议,用于 namp 等安全应用。
  • TCP 传输控制协议。是我们网络连接当中的主要连接协议。
  • UDP 用户数据报协议。类似于 TCP 但没有错误检查。
  • INET 包含上述项。( INET4 和 INET6 可以通过一些 ss 命令单独查看)。
  • FRAG 可以理解为碎片的意思。

显然,上面的输出结果并没有直接显示详细的 socket 连接情况,我们可以看到最上面的 Total 行显示的 socket 总数是非常多的,不过,这种分类统计的方式在某些情况下很有用。如果想要查看具体的 socket 活动信息,我们可以使用 ss -a 命令,但是我们要做好心理准备查看一大堆的信息,我们可以先用 wc -l 来统计一下行数试探一波:

  1. $ ss -a | wc -l 
  2. 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 连接。为了方便阅读,这里只显示一页的信息,省略其他大部分信息:

  1. $ ss | more 
  2. Netid  State Recv-Q Send-Q           Local Address:Port    Peer Address:Port 
  3. u_str  ESTAB 0      0                            * 20863              * 20864 
  4. u_str  ESTAB 0      0                            * 32232              * 33018 
  5. u_str  ESTAB 0      0                            * 33147              * 3257544ddddy 
  6. u_str  ESTAB 0      0            /run/user/121/bus 32796              * 32795 
  7. u_str  ESTAB 0      0            /run/user/121/bus 32574              * 32573 
  8. u_str  ESTAB 0      0                            * 32782              * 32783 
  9. u_str  ESTAB 0      0  /run/systemd/journal/stdout 19091              * 18113 
  10. u_str  ESTAB 0      0                            * 769568             * 768429 
  11. u_str  ESTAB 0      0                            * 32560              * 32561 
  12. u_str  ESTAB 0      0          @/tmp/dbus-8xbBdjNe 33155              * 33154 
  13. u_str  ESTAB 0      0  /run/systemd/journal/stdout 32783              * 32782 
  14. … 
  15. tcp    ESTAB 0     64                 192.168.0.16:ssh      192.168.0.6:25944 
  16. tcp    ESTAB 0      0                 192.168.0.16:ssh      192.168.0.6:5385 

要查看刚建立的 TCP 连接,使用 ss -t :

  1. $ ss -t 
  2. State    Recv-Q   Send-Q      Local Address:Port            Peer Address:Port 
  3. ESTAB    0        64           192.168.0.16:ssh              192.168.0.6:25944 
  4. ESTAB    0        0            192.168.0.16:ssh              192.168.0.9:5385 

要仅显示监听 socket ,尝试 ss -lt :

  1. $ ss -lt 
  2. State   Recv-Q   Send-Q      Local Address:Port             Peer Address:Port 
  3. LISTEN  0        10              127.0.0.1:submission            0.0.0.0:* 
  4. LISTEN  0        128         127.0.0.53%lo:domain                0.0.0.0:* 
  5. LISTEN  0        128               0.0.0.0:ssh                   0.0.0.0:* 
  6. LISTEN  0        5               127.0.0.1:ipp                   0.0.0.0:* 
  7. LISTEN  0        10              127.0.0.1:smtp                  0.0.0.0:* 
  8. LISTEN  0        128                  [::]:ssh                      [::]:* 
  9. LISTEN  0        5                   [::1]:ipp                      [::]:* 

若你想要显示端口号而不是服务名,则 ss -ltn :

  1. $ ss -ltn 
  2. State    Recv-Q    Send-Q        Local Address:Port        Peer Address:Port 
  3. LISTEN   0         10                127.0.0.1:587              0.0.0.0:* 
  4. LISTEN   0         128           127.0.0.53%lo:53               0.0.0.0:* 
  5. LISTEN   0         128                 0.0.0.0:22               0.0.0.0:* 
  6. LISTEN   0         5                 127.0.0.1:631              0.0.0.0:* 
  7. LISTEN   0         10                127.0.0.1:25               0.0.0.0:* 
  8. LISTEN   0         128                    [::]:22                  [::]:* 
  9. LISTEN   0         5                     [::1]:631                 [::]:* 

这里就先介绍这么多,其他的详细内容请参考帮助手册( ss -h)。另外,这里提供一些小技巧,你可以将那些最有用的选项转换为别名,能让你更容易使用。例如:

  1. $ alias listen="ss -lt" 
  2. $ alias socksum="ss -s" 

 

责任编辑:武晓燕 来源: 良许Linux
相关推荐

2020-09-01 14:17:03

WindowsDefender微软

2021-03-16 15:12:57

CompletableFuture机制java

2024-08-12 12:25:25

SpringMVC开发

2020-05-14 08:59:28

API网关性能

2022-02-22 08:25:51

typeScript泛型概念泛型使用

2020-09-27 06:50:56

Java互联网注解

2016-03-25 09:17:14

VR虚拟现实

2016-09-25 16:02:09

《硅谷》编程虚拟内存

2024-09-09 08:36:36

Java操作远程服务器

2018-09-13 10:40:40

Linux命令find

2020-12-18 09:45:33

DockerLinux命令

2020-08-26 14:40:38

explainMySQL数据库

2015-10-12 11:02:07

李彦宏创业失败

2020-02-10 10:43:29

网络攻击安全数据

2019-10-15 16:02:23

戴尔

2015-10-12 10:17:35

李彦宏百度创业

2020-11-09 09:03:35

高并发多线程ThreadLocal

2021-03-22 11:38:36

物联网智慧城市IoT

2012-05-02 15:38:49

金山快盘网盘

2019-03-22 08:00:01

Git命令GitHub
点赞
收藏

51CTO技术栈公众号