linux中netstat和ss的区别?

Posted

技术标签:

【中文标题】linux中netstat和ss的区别?【英文标题】:difference between netstat and ss in linux? 【发布时间】:2012-07-30 14:13:45 【问题描述】:

在 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是如何获取系统网络socket信息的?

【问题讨论】:

【参考方案1】:

查看 ss 的来源:

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

基本上是直接查询内核,响应速度比netstat快很多。

【讨论】:

【参考方案2】:

我创建了一个comparison table (in Google Docs) (light html link) 用于在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

【讨论】:

【参考方案3】:

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 命令。

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

谢谢,如果有更详细的关于ss如何向内核空间查询信息的信息就更好了

以上是关于linux中netstat和ss的区别?的主要内容,如果未能解决你的问题,请参考以下文章

SS命令和Netstat命令比较

常用端口总结

ss 命令

ss命令

ss命令

linux下ss命令