• centos8平台用ss监控网络


    一,ss所属的包:

    [root@blog ~]# whereis ss
    ss: /usr/sbin/ss /usr/share/man/man8/ss.8.gz
    
    [root@blog ~]# rpm -qf /usr/sbin/ss
    iproute-4.18.0-15.el8.x86_64

    通常默认已安装到系统,如果找不到ss命令时,可以用yum来安装

    [root@blog ~]# yum install iproute

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,查看ss的版本和帮助:

    1,查看版本

    [root@centos8 liuhongdi]# ss --version
    ss utility, iproute2-ss180813

    2,查看帮助

    [root@centos8 liuhongdi]# ss --help

    三,ss的用途:

    ss是Socket Statistics的缩写。

    ss命令作用:可以用来获取socket统计信息,它可以显示和netstat类似的内容。

    ss的优势:能够显示更多更详细的有关TCP和连接状态的信息,

            而且比netstat更快速更高效

    四,ss常用参数的含义:

    # -l 表示只显示监听套接字

    # -t 表示只显示 TCP 套接字

    # -u display only UDP sockets,只显示udp套接字

    # -n 表示显示数字地址和端口(而不是名字)

    # -p 表示显示进程信息

    # -s  summary,用来显示 Sockets 摘要

    -o, --options : 指定过滤用的选项:通常是与网络计时器相关的信息:状态等

     

    五,例子一:查看处于监听状态的端口

    # -l 表示只显示监听套接字

    # -t 表示只显示 TCP 套接字

    # -n 表示显示数字地址和端口(而不是名字)

    # -p 表示显示进程信息

    [root@centos8 liuhongdi]# ss -ltnp
    State      Recv-Q      Send-Q            Local Address:Port            Peer Address:Port                                                                      
    LISTEN     0           128                     0.0.0.0:5355                 0.0.0.0:*          users:(("systemd-resolve",pid=1960,fd=13))                     
    LISTEN     0           128                     0.0.0.0:111                  0.0.0.0:*          users:(("rpcbind",pid=1003,fd=4),("systemd",pid=1,fd=39))      
    LISTEN     0           32                192.168.122.1:53                   0.0.0.0:*          users:(("dnsmasq",pid=2548,fd=6))                              
    LISTEN     0           128                     0.0.0.0:22                   0.0.0.0:*          users:(("sshd",pid=1241,fd=5))                                 
    LISTEN     0           5                     127.0.0.1:631                  0.0.0.0:*          users:(("cupsd",pid=1253,fd=10))                               
    LISTEN     0           128                        [::]:5355                    [::]:*          users:(("systemd-resolve",pid=1960,fd=15))                     
    LISTEN     0           128                        [::]:111                     [::]:*          users:(("rpcbind",pid=1003,fd=6),("systemd",pid=1,fd=41))      
    LISTEN     0           128                        [::]:22                      [::]:*          users:(("sshd",pid=1241,fd=7))                                 
    LISTEN     0           5                         [::1]:631                     [::]:*          users:(("cupsd",pid=1253,fd=9))  

    说明:

    netstat 和 ss 的输出也是类似的,都展示了

    输出字段的说明:

    State:套接字的状态

    Recv-Q:接收队列

    Send-Q: 发送队列

    Local Address:Port 本地地址/端口

    Peer Address:Port:远端地址

    进程 PID/进程名称

    数据的说明:

    1,接收队列(Recv-Q)和发送队列(Send-Q)通常应该是 0。

      如果值不是 0 时,说明有网络包的堆积发生。

    2, 在不同套接字状态下,它们的含义不同。

    套接字处于连接状态(Established):

         Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数(即接收队列长度)。

         Send-Q 表示还没有被远端主机确认的字节数(即发送队列长度)。

    套接字处于监听状态(Listening):

          Recv-Q 表示全连接队列的长度。

          Send-Q 表示全连接队列的最大长度

    3,什么是全连接?

        服务器收到了客户端的 ACK,完成了 TCP 三次握手,

          然后就会把这个连接挪到全连接队列中

       这些全连接中的套接字,还需要被 accept() 系统调用取走,服务器才可以开始真正处理客户端的请求。

      什么是半连接队列?

    半连接是指还没有完成 TCP 三次握手的连接,连接只进行了一半。

    服务器收到了客户端的 SYN 包后,就会把这个连接放到半连接队列中,

    然后再向客户端发送 SYN+ACK 包

    六,例子二:用ss观察 TCP 连接数

    [root@centos8 liuhongdi]# ss -s
    Total: 1153
    TCP:   10 (estab 0, closed 1, orphaned 0, timewait 0)
    
    Transport Total     IP        IPv6
    RAW   1         0         1        
    UDP   14        9         5        
    TCP   9         5         4        
    INET   24        14        10       
    FRAG   0         0         0 

    说明:

    estab:#已连接

    closed:#已关闭

    orphaned: #孤儿套接字

    timewait: #处于关闭连接时等待状态

    备注:什么是TIME_WAIT状态?

    主动关闭方在发送四次挥手的最后一个ACK后会变为TIME_WAIT状态,持续时间为2MSL(Linux中一个MSL是30秒,是不可配置的)

    七,例子三:ss使用选项:

    1,显示所有状态是established(连接已建立)的套接字

    [root@centos8 liuhongdi]# ss -o state 'established'

    说明:状态的取值:

    established
    syn-sent
    syn-recv
    fin-wait-1
    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相反.

    2,  使用src和dst过滤ip

    说明:

    src  源地址

    [root@centos8 liuhongdi]# ss src 192.168.3.14
    Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
    tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53412            
    tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53413            

    dst   目标地址

    [root@centos8 liuhongdi]# ss dst 192.168.3.9
    Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
    tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53412            
    tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53413

    还可以指定端口号:

    [root@centos8 liuhongdi]# ss src 192.168.3.14:http
    Netid           State                 Recv-Q            Send-Q                        Local Address:Port                        Peer Address:Port             
    tcp             FIN-WAIT-2            0                 0                              192.168.3.14:http                         192.168.3.9:53412   
    [root@centos8 liuhongdi]# ss dst 192.168.3.9:53412
    Netid           State                 Recv-Q            Send-Q                        Local Address:Port                        Peer Address:Port             
    tcp             FIN-WAIT-2            0                 0                              192.168.3.14:http                         192.168.3.9:53412 

    3,只指定端口号:

      sport   源端口号

    [root@centos8 liuhongdi]# ss sport 80
    Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
    tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53482            
    tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53483       

     dport           目标端口号

    [root@centos8 liuhongdi]# ss dport 53482
    Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
    tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53482            

    八,本地centos的版本:

    [root@centos8 conf]# cat /etc/redhat-release 
    CentOS Linux release 8.1.1911 (Core) 
  • 相关阅读:
    三元判断大小奇偶
    键盘输入 循环 for if-else while 等循环
    三元 导包
    进制
    符号等
    第二模块 4.1 模块的种类和介绍
    第二模块 练习题
    第二模块 3.15 迭代器
    第二模块 3.14 通过生成器实现并发编程
    第二模块 3.13 生成器
  • 原文地址:https://www.cnblogs.com/architectforest/p/12625449.html
Copyright © 2020-2023  润新知