Linux 基础之基础网络ss命令

  • 一、ss命令简述
    • 1. ss命令特性
    • 2. ss 和 netstat 效率对比
    • 3.ss 命令的使用格式
  • 二、ss命令实用案例
    • 示例1:显示TCP连接: ss -atn
    • 示例2:显示当前 Sockets 概要信息: ss -s
    • 示例3:显示所有TCP的Listen状态的socket:ss -atl
    • 示例4:显示正在监听的TCP程序的process:ss -altp
    • 示例5:显示所有established的HTTP连接:ss -o state established '( dport = :http or sport = :http )'
    • 示例6:查看ipv4指定过滤规则的socket:ss -4 state FILTER-NAME
      • 查询处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 192.168.2/24所有 tcp套接字
    • 示例 7:查看源端口为22的socket信息:ss -iom state established '( sport = :ssh )'
    • 示例8 :通过 dst/src/dport/sprot 语法来过滤连接的来源和目标,来源端口和目标端口。
      • 8.1 匹配远程地址(dst)和端口号(dport):
      • 8.2 匹配本地地址(src)和端口号(sport)
      • 8.3 匹配指定端口范围的socket数据:

一、ss命令简述

ss(Socket Statistics)Socket统计;ss命令可以获取socket统计信息。它的功能和netstat类似。

1. ss命令特性

  • ss比netstat更快速源于在于它能够显示更为详细的TCP和Socket连接状态的信息。
  • 当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。
  • ss利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中最新的数据,进而就确保了ss的快速高效。(ss在没有 tcp_diag,ss也可以正常运行)

2. ss 和 netstat 效率对比

[root@localhost ~]# time netstat -at
real    0m0.038s
user    0m0.008s
sys     0m0.013s[root@localhost ~]# time ss -at
real    0m0.006s
user    0m0.003s
sys     0m0.003s

从上面的执行效率可以清晰地看到,ss命令的执行速度是netstat的6倍(不同环境可能执行效率不一样),可以看到ss 命令的执行之快的优势,体现的尤为突出。也为我们的工作解决执行节省时间(即使当服务器效率较低时)。

3.ss 命令的使用格式

ss 命令默认统计所有建立的连接(不包含监听的端口),包括 tcp, udp, and unix socket 三种类型的连接;

[root@example opt]# ss --help
Usage: ss [ OPTIONS ]ss [ OPTIONS ] [ FILTER ]-h, --help          this message #帮助信息-V, --version       output version information # 版本信息-n, --numeric       don't resolve service names  #不解析服务名称-r, --resolve       resolve host names   # 解析主机名,把 IP 解释为域名,把端口号解释为协议名称-a, --all           display all sockets   #显示所有Socket-l, --listening     display listening sockets #显示监听的Socket-o, --options       show timer information -e, --extended      show detailed socket information #显示详细的Socket信息-m, --memory        show socket memory usage #显示Socket内存使用-p, --processes     show process using socket #显示Socket 使用进程-i, --info          show internal TCP information #显示内部TCP信息-s, --summary       show socket usage summary  #显示socket使用总数-b, --bpf           show bpf filter socket information-E, --events        continually display sockets as they are destroyed-Z, --context       display process SELinux security contexts #显示进程SELinux 安全山下文-z, --contexts      display process and socket SELinux security contexts #显示进程和Socket 的SELinux 安全山下文-N, --net           switch to the specified network namespace name-4, --ipv4          display only IP version 4 sockets  #显示ipv4 的Sockets-6, --ipv6          display only IP version 6 sockets  #显示ipv6 的Sockets-0, --packet        display PACKET sockets   #显示packet 的Sockets-t, --tcp           display only TCP sockets  #显示TCP 协议 的Sockets-S, --sctp          display only SCTP sockets  #显示STCP 的Sockets-u, --udp           display only UDP sockets   #显示UDP 的Sockets-d, --dccp          display only DCCP sockets-w, --raw           display only RAW sockets-x, --unix          display only Unix domain sockets--vsock         display only vsock sockets-f, --family=FAMILY display sockets of type FAMILYFAMILY := {inet|inet6|link|unix|netlink|vsock|help}-K, --kill          forcibly close sockets, display what was closed-H, --no-header     Suppress header line-A, --query=QUERY, --socket=QUERYQUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY]-D, --diag=FILE     Dump raw information about TCP sockets to FILE-F, --filter=FILE   read filter information from FILEFILTER := [ state STATE-FILTER ] [ EXPRESSION ]STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}bucket := {syn-recv|time-wait}big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}

二、ss命令实用案例

示例1:显示TCP连接: ss -atn

[root@localhost ~]# ss -atn  # -a:所有连接 -t:TCP 连接 -n: 不解析名称
State       Recv-Q Send-Q           Local Address:Port                          Peer Address:Port
LISTEN      0      128                          *:111                                      *:*
LISTEN      0      5                192.168.122.1:53                                       *:*
LISTEN      0      128                          *:22                                       *:*
LISTEN      0      128                  127.0.0.1:631                                      *:*
LISTEN      0      100                  127.0.0.1:25                                       *:*
LISTEN      0      128                  127.0.0.1:6010                                     *:*
LISTEN      0      128                  127.0.0.1:6011                                     *:*

示例2:显示当前 Sockets 概要信息: ss -s

[root@localhost ~]# ss -s
Total: 653 (kernel 1354)
TCP:   16 (estab 2, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0Transport Total     IP        IPv6
*         1354      -         -
RAW       0         0         0
UDP       8         6         2
TCP       15        9         6
INET      23        15        8
FRAG      0         0         0

示例3:显示所有TCP的Listen状态的socket:ss -atl

[root@localhost ~]# ss -alt
State       Recv-Q Send-Q         Local Address:Port                          Peer Address:Port
LISTEN      0      128                        *:sunrpc                                   *:*
LISTEN      0      5              192.168.122.1:domain                                   *:*
LISTEN      0      128                        *:ssh                                      *:*
LISTEN      0      128                127.0.0.1:ipp                                      *:*
LISTEN      0      100                127.0.0.1:smtp                                     *:*
LISTEN      0      128                127.0.0.1:x11-ssh-offset                           *:*
LISTEN      0      128                       :::sunrpc                                  :::*
LISTEN      0      128                       :::ssh                                     :::*
LISTEN      0      128                      ::1:ipp                                     :::*
LISTEN      0      100                      ::1:smtp                                    :::*
LISTEN      0      128                      ::1:x11-ssh-offset                          :::*

示例4:显示正在监听的TCP程序的process:ss -altp

[root@localhost ~]# ss -altp
State       Recv-Q Send-Q         Local Address:Port                          Peer Address:Port
LISTEN      0      128                        *:sunrpc                                   *:*                     users:(("rpcbind",pid=6174,fd=4),("systemd",pid=1,fd=47))
LISTEN      0      5              192.168.122.1:domain                                   *:*                     users:(("dnsmasq",pid=7202,fd=6))
LISTEN      0      128                        *:ssh                                      *:*                     users:(("sshd",pid=6798,fd=3))
LISTEN      0      128                127.0.0.1:ipp                                      *:*                     users:(("cupsd",pid=6796,fd=12))
LISTEN      0      100                127.0.0.1:smtp                                     *:*                     users:(("master",pid=7145,fd=13))
LISTEN      0      128                127.0.0.1:x11-ssh-offset                           *:*                     users:(("sshd",pid=13154,fd=9))

示例5:显示所有established的HTTP连接:ss -o state established ‘( dport = :http or sport = :http )’

[root@localhost ~]# ss -o state established '( dport = :http or sport = :http )'
Netid Recv-Q Send-Q            Local Address:Port                             Peer Address:Port

注意:命令格式,字符之间需要有空格;可以是服务名称,或端口号,(如:http;80)

示例6:查看ipv4指定过滤规则的socket:ss -4 state FILTER-NAME

FILTER-NAME: Description
established 活跃状态
syn-sent 发送
syn-recv 接收
fin-wait-1 FIN-WAIT-1状态
fin-wait-2 FIN-WAIT-2状态
time-wait 等待关闭
closed 已关闭
close-wait 关闭
last-ack
listen 正在监听
closing 正在关闭
all 所有以上状态
connected 除了listen and closed的所有状态
synchronized 所有已连接的状态除了syn-sent
bucket 显示状态为maintained as minisockets,如:time-wait和syn-recv.
big 和bucket相反.

查询处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 192.168.2/24所有 tcp套接字

[root@localhost ~]# ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 192.168.2/24
Netid Recv-Q Send-Q            Local Address:Port                             Peer Address:Port

示例 7:查看源端口为22的socket信息:ss -iom state established ‘( sport = :ssh )’

# -o, --options 显示时间信息
# -m, --memory 显示 socket 使用的内存
# -i, --info 显示更多 TCP 内部的信息
[root@localhost ~]# ss -iom state established '( sport = :ssh )'
Netid Recv-Q Send-Q            Local Address:Port                             Peer Address:Port
tcp   0      48                192.168.2.128:ssh                               192.168.2.1:56434                 timer:(on,238ms,0) # -oskmem:(r0,rb369280,t0,tb87040,f1792,w2304,o0,bl0,d0) sack cubic wscale:8,7 rto:240 rtt:39.96/3.157 ato:52 mss:1460 rcvmss:1168 advmss:1460 cwnd:10 bytes_acked:76797 bytes_received:50548 segs_out:1111 segs_in:1874 send 2.9Mbps lastsnd:2 lastrcv:4 lastack:4 pacing_rate 5.8Mbps unacked:1 rcv_rtt:122063 rcv_space:29364  # -m

示例8 :通过 dst/src/dport/sprot 语法来过滤连接的来源和目标,来源端口和目标端口。

8.1 匹配远程地址(dst)和端口号(dport):

[root@localhost ~]# ss dst 192.168.5/24 # 查询源地址为192.168.5/24网段的socket 数据
Netid State      Recv-Q Send-Q       Local Address:Port                        Peer Address:Port
tcp   ESTAB      0      48           192.168.5.128:ssh                          192.168.5.1:56434192.168.5.1:56434
$ ss dst 192.168.5.120:http # 查询远程地址为192.168.5.120,端口为80的Socket
$ ss dst 192.168.5.120:443

8.2 匹配本地地址(src)和端口号(sport)

[root@localhost ~]# ss src 192.168.5/24 # 查询源地址为192.168.5/24网段的socket 数据
Netid State      Recv-Q Send-Q       Local Address:Port                        Peer Address:Port
tcp   ESTAB      0      48           192.168.5.128:ssh

8.3 匹配指定端口范围的socket数据:

格式: ss [dport|sport] Option port

Option 说明
le(<=) 小于等于
ge(>=) 大于等于
lt(<) 小于
gt(>) 大于
eq(==) 等于
ne(!=) 不等于
# 查询远端端口号大于50的TCP的Socket
[root@localhost ~]# ss -t dport ge 50
State       Recv-Q Send-Q         Local Address:Port                          Peer Address:Port
ESTAB       0      48             192.168.5.128:ssh                            192.168.5.1:56434

总结:

由于ss命令的性能出色且功能丰富,可以使用ss 命令替代 netsate命令成为我们日常查看 socket 相关信息的利器。常见的ss命令使用方式,基本如上,更多的需我们结合自己的能力不断地在工作中总结。欢迎在留言区与我讨论。

Linux 基础之基础网络ss命令相关推荐

  1. linux下常见的网络相关命令

    linux中环境部署.网络排查要用到非常多的命令,掌握一些核心的相关命令非常有必要.下面介绍几个工作和面试中高频提及的网络相关命令. ifconfig ifconfig 是一个用来查看.配置.启用或禁 ...

  2. MATLAB绘图基础01—复杂网络工具箱命令

    MATLAB复杂网络工具箱(matgraph)基础命令 序号 名称 命令 备注 1 新建图 g=graph(n) n-节点个数 2 增加边 add(g,u,v) u,v-节点编号 3 删除边 dele ...

  3. linux ifconfig route ip 网络相关命令

    第一种:使用命令修改(直接即时生效) 修改 IP 地址 # ifconfig eth0 192.168.30.197 netmask 255.255.255.0 修改网关: # route add d ...

  4. linux中级篇--网络相关命令

    网络相关命令 Linux中常见的网络相关命令如下表所示,本书将选取其中使用较频繁的命令进行讲解. 命令 说明 格式 ifconfig 显示或设置网络设备 ifconfig [网络设备][选项]- pi ...

  5. 监听队列中linux方法ss -a,Linux命令:ss命令

    ss功能:用来显示套接字信息的,类似于netstat,可以显示更多的信息,用于替代netstat. ss常用选项 ss -t:tcp协议的连接 -u:udp协议的链接 -w:裸套接字相关 -x:uni ...

  6. Linux配置最基础的命令

    Linux配置最基础的命令 Linux设置最基础的命令 切换用户 查看当前主机的完整名称 临时设置主机名 永久设置主机名 查看当前系统版本信息 查看当前内核版本 临时修改网卡IP 永久修改网卡IP 重 ...

  7. Linux系统下网卡网络配置基础

    Ifconfig命令使LINUX核心知道软件回送和网卡这样一些网络接口,这样Linux就可以使用它们.除了上面介绍的这些用法之外,ifconfig命令用来监控和改变网络接口的状态,并且还可以带上很多命 ...

  8. 鸟哥的Linux私房菜(基础篇)- 第二十一章、系统配置工具(网络与打印机)与硬件侦测

    第二十一章.系统配置工具(网络与打印机)与硬件侦测 最近升级日期:2009/09/15 除了手动配置之外,其实系统提供了一个名为 setup 的命令给系统管理员使用喔!这个命令还能够配置网络呢.此外, ...

  9. Linux 远程工具 基础命令

    Linux 远程工具 基础命令 文章目录 Linux 远程工具 基础命令 1.虚拟机关键配置名词解释 1.1.虚拟网络编辑器说明 2.远程链接工具 3.linux 命令准则 4.系统运行命令 5.常用 ...

  10. Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...

最新文章

  1. leeds计算机科学理学硕士,利兹大学数学及计算机科学理学硕士研究生申请要求及申请材料要求清单...
  2. 【Python】find()函数居然还能指定搜索的起点和终点?
  3. python跳转到程序顶部_python-如何使Tkinter窗口跳到最前面?
  4. HDU--1872 稳定排序
  5. [2021-07-19 内测NOIP] 操作(状压DP),异或(字典树),等级(线段树),矩阵(DP)
  6. 如何腾出计算机内存,教你如何正确腾出手机内存,尤其是生活在易门的你,必学!...
  7. MySQL增量备份及恢复
  8. workbench设置单元坐标系_ANSYS经典案例在Workbench中实现分享连载(三)
  9. 一个景点的给input域一个默认值,然后在聚焦的时候清空它 jquery方法
  10. 日语中阴历月份的别称
  11. 四小龙变“四小虫”?AI独角兽们的AI+故事好不好讲?
  12. Low rank 论文
  13. 注意力机制如何助力GAN生成更高质量的图像?
  14. Android Studio中的typo波浪线提示
  15. react-redux中Connect方法
  16. postgresql unsupported frontend protocol 1234.5680问题
  17. 深度学习基础知识点【更新中】
  18. 武汉工程大计算机学校地址,武汉工程学院
  19. hana服务器销售资质,hana认证服务器
  20. [洛谷]P1413 坚果保龄球 (#贪心 -1.18)

热门文章

  1. 20190408-相速度和群速度、傅里叶变换与波动方程的色散关系、介电常数与电导、介电函数与折射率、散度定理、电子迁移率、电磁波波动方程、自由电子气的介电函数
  2. Maxwell参数化建模和优化设计
  3. 记一款价廉物美的小型DAC+耳放----Dr.DAC
  4. lumerical FDTD自学日记
  5. win10 关闭139 135 445端口 (危险端口关闭)
  6. springboot jsonp 跨域请求,springboot使用jsonp跨域
  7. 数据库——求候选键的方法
  8. 麦块java文件夹_我的世界游戏文件夹目录作用介绍 各个文件夹都是什么用
  9. antdesign——select搜索
  10. 计算机无法进行磁盘,电脑硬盘无法分区怎么办