ss是Socket Statistics的缩写。顾名思义,ss命令能够用来获取socket统计信息,它能够显示和netstat相似的内容。但ss的劣势在于它可能显示更多更具体的无关TCP和连贯状态的信息,而且比netstat更疾速更高效。

当服务器的socket连贯数量变得十分大时,无论是应用netstat命令还是间接cat /proc/net/tcp,执行速度都会很慢。

ss快的秘诀在于,它利用到了TCP协定栈中tcp_diag。tcp_diag是一个用于剖析统计的模块,能够取得Linux内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的零碎中没有tcp_diag,ss也能够失常运行,只是效率会变得稍慢。(但依然比netstat要快。)

ss命令用于显示socket状态. 他能够显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其余工具展现等多tcp和state信息. 它是一个十分实用、疾速、无效的跟踪IP连贯和sockets的新工具.SS命令能够提供如下信息

命令格局

ss [参数]ss [参数] [过滤

命令性能

比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,容许你查问 socket 的无关统计信息

命令参数

  • -h, --help 帮忙信息
  • -V, --version 程序版本信息
  • -n, --numeric 不解析服务名称
  • -r, --resolve 解析主机名
  • -a, --all 显示所有套接字(sockets)
  • -l, --listening 显示监听状态的套接字(sockets)
  • -o, --options 显示计时器信息
  • -e, --extended 显示具体的套接字(sockets)信息
  • -m, --memory 显示套接字(socket)的内存应用状况
  • -p, --processes 显示应用套接字(socket)的过程
  • -i, --info 显示 TCP外部信息
  • -s, --summary 显示套接字(socket)应用详情
  • -4, --ipv4 仅显示IPv4的套接字(sockets)
  • -6, --ipv6 仅显示IPv6的套接字(sockets)
  • -0, --packet 显示 PACKET 套接字(socket)
  • -t, --tcp 仅显示 TCP套接字(sockets)
  • -u, --udp 仅显示 UCP套接字(sockets)
  • -d, --dccp 仅显示 DCCP套接字(sockets)
  • -w, --raw 仅显示 RAW套接字(sockets)
  • -x, --unix 仅显示 Unix套接字(sockets)
  • -f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,反对 unix, inet, inet6, link, netlink
  • -A, --query=QUERY, --socket=QUERY QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
  • -D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件
  • -F, --filter=FILE 从文件中读取过滤器信息 FILTER := [ state TCP-STATE ] [ EXPRESSION ]

显示TCP连贯

> ss -a -t

显示UDP链接

> ss -a -u

显示Sokets摘要

> ss -s

列出以后的established, closed, orphaned and waiting TCP sockets

显示本地关上的所有端口

> ss -ln

查看过程应用的socket

> ss -pl

找出关上套接字/端口应用程序

> ss -nlp | grep 3306

显示所有状态为established的SMTP连贯

> ss -o state established '( dport = :smtp or sport = :smtp )'

显示所有状态为Established的HTTP连贯

> ss -o state established '( dport = :http or sport = :http )' 

用TCP 状态过滤Sockets

> ss -4 state FILTER-NAME-HERE > ss -6 state FILTER-NAME-HERE
FILTER-NAME-HERE能够是上面的任何一个
  • listen:侦听来自远方的TCP端口的连贯申请
  • syn-sent:再发送连贯申请后期待匹配的连贯申请(客户端)
  • syn-recv:再收到和发送一个连贯申请后期待对方对连贯申请的确认(服务器)
  • established:代表一个关上的连贯
  • fin-wait-1:期待近程TCP连贯中断请求,或先前的连贯中断请求的确认
  • fin-wait-2:从近程TCP期待连贯中断请求
  • close-wait:期待从本地用户发来的连贯中断请求
  • closing:期待近程TCP对连贯中断的确认
  • last-ack:期待原来的发向近程TCP的连贯中断请求的确认
  • time-wait:期待足够的工夫以确保近程TCP接管到连贯中断请求的确认
  • closed:没有任何连贯状态
  • all : 所有以上状态
  • connected : 除了listen and closed的所有状态
  • synchronized :所有已连贯的状态除了syn-sent
  • bucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv.
  • big : 和bucket相同.

匹配近程地址和端口号

> ss dst ADDRESS_PATTERN> ss dst 192.168.1.1> ss dst 192.168.21.1:http > ss dst 192.168.21.1:smtp > ss dst 192.168.21.1:443

将本地或者近程端口和一个数比拟

> ss  sport = :http > ss  dport = :http > ss  dport \> :1024 > ss  sport \> :1024 > ss sport \< :32000 > ss  sport eq :22 > ss  dport != :22 > ss  state connected sport = :http > ss \( sport = :http or sport = :https \) > ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
ss dport OP PORT 近程端口和一个数比拟;ss sport OP PORT 本地端口和一个数比拟。
  • OP 能够代表以下任意一个:
  • <= or le : 小于或等于端口号
  • >= or ge : 大于或等于端口号
  • == or eq : 等于端口号
  • != or ne : 不等于端口号
  • < or gt : 小于端口号
  • > or lt : 大于端口号

ss 和 netstat 效率比照

  • time netstat -at
  • time ss
> time netstat -atreal    0m10.849suser    0m0.013ssys    0m0.008s> time ssreal    0m0.008suser    0m0.004ssys    0m0.004s
用time 命令别离获取通过netstat和ss命令获取程序和概要占用资源所应用的工夫。在服务器连接数比拟多的时候,netstat的效率齐全没法和ss比。

原文链接:https://rumenz.com/rumenbiji/...
微信公众号:入门小站