linux中netstat和ss的区别?

dae*_*hee 34 sockets linux netstat

在linux中,netstat命令告诉我们系统中活动套接字的信息.

据我所知,netstat使用/proc/net/tcp获得系统的网络信息.

由于netstatman page说netstat已经过时,所以我们应该使用'ss'.

NOTE
   This program is obsolete.  Replacement for netstat is ss.   Replacement
   for  netstat -r is ip route.  Replacement for netstat -i is ip -s link.
   Replacement for netstat -g is ip maddr.
Run Code Online (Sandbox Code Playgroud)

我发现它ss执行类似的功能,但它不 /proc/net/tcp用于获取系统网络信息.

现在我很好奇如何ss获取系统网络套接字信息?

ggi*_*oux 19

它使用Netlink直接从内核空间获取它们,后者使用经典的套接字 API.


Mr.*_*ool 11

ss包含在iproute2包中,是替代品netstat.ss用于转储套接字统计信息.它显示类似的信息netstat.它可以显示比其他工具更多的TCP和状态信息.它是一种新的,非常有用且速度更快(与netstat相比)的工具,用于跟踪TCP连接和套接字.


int*_*_ua 10

我制作了一个比较表(在 Google Docs 中)轻量级 HTML 链接)用于在netstatss参数之间进行转换。它太大了,无法在此处包含和更新。

谷歌文档截图

短参数之间差异的简短版本是:

需要注意的参数: r N i g M W T v C F c A U 2 f

可以安全离开的参数: h V l a n Z s p e o 4 6 x t u S w


pro*_*sti 9

ss是一个用于研究 Linux 和 Unix 系统中套接字的实用程序。它显示的信息类似于netstat并能够转储套接字统计信息。

netstat不能完全替换为ss. 有些netstat命令与ip命令对应得更好。

    $ netstat -r   replaced by  $ ip route
    $ netstat -i   replaced by  $ ip -s lin
    $ netstat -g   replaced by  $ ip maddr
Run Code Online (Sandbox Code Playgroud)

我想说“旧”netstat命令可以用ssip命令替换。


Mah*_*nta 7

查看ss的来源:

https://github.com/shemminger/iproute2/blob/master/misc/ss.c

基本上它直接查询内核并且可以比netstat更快地响应.