linux中netstat和ss的区别?

时间:2012-08-01 16:14:11

标签: linux sockets netstat

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

我了解netstat使用/proc/net/tcp获取系统网络信息。

由于netstat手册页说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.

我发现ss执行类似功能但不使用 /proc/net/tcp获取系统网络信息。

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

5 个答案:

答案 0 :(得分:19)

它使用Netlink使用经典sockets API直接从内核空间获取它们。

答案 1 :(得分:10)

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

答案 2 :(得分:8)

我已经制作了comparison table (in Google Docs)light HTML link),用于在netstatss参数之间进行转换。它太大了,无法在此处包含和更新它。

google doc screenshot

简短参数之间的区别的简短版本是:

需要注意的参数: 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

答案 3 :(得分:6)

查看ss的来源:

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

基本上它直接查询内核并且响应速度比netstat快得多。

答案 4 :(得分:0)

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.

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