Linux下ss命令的研究

Posted yingjiehuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下ss命令的研究相关的知识,希望对你有一定的参考价值。

1.ss命令简介

•ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。

 

2.ss与netstat

•在最新的Linux系统里面,netstat的部分命令已经被更为强大的ss取代了,netstat已过时。ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

 

•上图为stackoverflow社区里一片文章对这两个命令的评论,下图为ss和netstat监控的区别,ss是获取的socket的信息,而netstat是通过解析/proc/net/下面的文件来获取信息包括Sockets,TCP/UDP,IP,Ethernet信息

 

 

 

3.ss命令探索

•使用ss --help查看netstat常用命令

 

•ss -tnl 查看主机监听的端口

 

•ss -tlr 解析IP和端口号

 

•ss -s 查看概要信息

 

•ss -at获取tcp socket   ss -au获取udp socket

 

•通过 dst/src/dport/sprot 语法来过滤连接的来源端口和目标端口

显示大于等于50的端口

 

•显示状态为established的ssh连接

 

•time命令分别获取通过netstat和ss命令获取程序和占用资源所用时间

 

 

 

 

可以看出ss的效率比netstat高出不少

 

4.总结

•ss命令性能出色且功能丰富,可以用来替代 netsate 命令成为我们日常查看 socket 相关信息的利器。其实抛弃 netstate 命令已经是大势所趋,有的 Linux 版本默认已经不再内置 netstate 而是内置了 ss 命令。

•当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接•cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,当服务器维持的连接达到上万个的时候,使用netstat等于浪费生命,而用ss才是节省时间。

•而ss快的秘诀在于它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效。当然,如果系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢(但仍然比netstat要快)。

 

以上是关于Linux下ss命令的研究的主要内容,如果未能解决你的问题,请参考以下文章

linux下ss命令

linux下SS命令使用

linux下网络查看命令ss

linux网络分析命令:ss

linux网络分析命令:ss

linux网络分析命令:ss