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) 用于在netstat
和ss
参数之间进行转换。它太大了,无法在此处包含和更新。
短参数之间的区别的简短版本是:
需要注意的参数:
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
命令可以替换为ss
和ip
命令。
【讨论】:
【参考方案4】:ss
包含在 iproute2 包中,是netstat
的替代品。 ss
用于转储套接字统计信息。它显示类似于netstat
的信息。它可以显示比其他工具更多的 TCP 和状态信息。它是一种新的、非常有用且速度更快(与 netstat 相比)的工具,用于跟踪 TCP 连接和套接字。
【讨论】:
【参考方案5】:它使用Netlink 直接从内核空间获取它们,该sockets 使用经典的sockets API。
【讨论】:
谢谢,如果有更详细的关于ss如何向内核空间查询信息的信息就更好了以上是关于linux中netstat和ss的区别?的主要内容,如果未能解决你的问题,请参考以下文章