据说ss命令可以代替nestat命令

ss是Socket Statistics的缩写。ss命令用来显示处于活动状态的套接字信息。它可以显示和netstat类似的内容。可以显示类似的内容是不是可以看做代替netstat呢?

在Linux CentOS7 中ss命令是iproute软件包的一部分,默认已经安装。

为什么使用ss

netstat从proc文件系统获取所需要的信息。当服务器的socket连接数量变得非常大时,执行速度都会很慢。当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。

天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。

当然这些都不是我们关注的重点,下面我讲解如何使用ss命令查看各种信息。具体使用语法如下:

语法:

ss(选项)

选项:

-h:显示帮助信息;
-V:显示指令版本信息;
-n:不解析服务名称,以数字方式显示;
-a:显示所有的套接字;
-l:显示处于监听状态的套接字;
-o:显示计时器信息;
-m:显示套接字的内存使用情况;
-p:显示使用套接字的进程信息;
-i:显示内部的TCP信息;
-4:只显示ipv4的套接字;
-6:只显示ipv6的套接字;
-t:只显示tcp套接字;
-u:只显示udp套接字;
-d:只显示DCCP套接字;
-w:仅显示RAW套接字;
-x:仅显示UNIX域套接字。

列出已建立的连接

默认情况下,如果我们运行ss命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表,例如TCP,UDP或UNIX套接字。

在这里插入图片描述

查看TCP/UDP连接

使用-t(TCP)参数查看TCP连接,而使用-u(UDP)参数查看UDP socket,我们还可以使用-l选项专门列出当前正在侦听连接的套接字,而不是列出所有的套接字。

在这里插入图片描述
在后面的例子中,你会看到我将结合多种选择,以快速过滤掉,从而达到我们的目的。

显示进程

查看到某个连接后,怎么知道是哪个进程的连接呢?我们可以用-p选项打印出拥有套接字的进程或PID号。

ss -pl

拖动滚动条到最后可以看到,-p参数显示了这条连接的进程信息,可以看到,该进程是gnome-shell,进程id为2237,并且这条连接的文件描述符为22。

users:((“gnome-shell”,pid=2237,fd=22))

查看TCP相关定时器信息

我们知道在TCP中,有很多定时器,和netstat一样,可以使用-o参数显示定时器相关信息:

在这里插入图片描述
例如上面显示的keepalive定时器剩余时间:

timer:(keepalive,63min,0)

显示统计信息

我们可以使用-s选项快速查看统计数据。

在这里插入图片描述
这使我们能够快速看到已建立连接的总数,及各种类型的套接字的计数和IPv4或IPv6的使用情况。

基于状态的过滤器

我们可以指定一个套接字的状态,只打印这个状态下的套接字。例如,我们可以指定包括已建立:

established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, closed-wait, last-ack监听和关闭等状态。

以下示例显示了所有建立的TCP连接。

在这里插入图片描述

根据端口号进行过滤

可以通过过滤还可以列出小于(lt),大于(gt),等于(eq),不等于(ne),小于或等于(le),或大于或等于(ge)的所有端口。

例如,以下命令显示端口号为200或以下的所有侦听端口:

在这里插入图片描述

为了进行比较,可以执行相反的操作,并查看大于200的所有端口:

在这里插入图片描述

查看socket详细信息

如果想要查看连接更加详细信息呢?比如收到多少数据?上一个ACK是什么时候?mss是多大?拥塞窗口大小是多少?这些信息在分析理解TCP的时候非常有帮助,而查看这些信息只需要使用-i(information)参数即可:

在这里插入图片描述

根据IP或端口过滤socket信息

你可以使用grep命令来过滤出你需要的信息,但是ss本身提供一些参数用来过滤信息。例如,可以通过ifconfig命令查看本地ip为192.168.43.229的连接:

在这里插入图片描述
src后面跟本地ip:port,而也可以使用dst根据远端ip来过滤信息。

总结

本文介绍了ss命令一些实用的用法。如果你想使用ss命令快速检查有关套接字的各种信息,建议你查阅ss的相关帮助手册。

参考:Linux命令大全

在这里插入图片描述
欢迎关注公众号【程序猿编码】,添加本人微信号(17865354792),回复:领取学习资料。或者回复:进入技术交流群。网盘资料有如下:

在这里插入图片描述

发布了131 篇原创文章 · 获赞 115 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chen1415886044/article/details/105482523