在netstat中检索套接字状态的系统调用是什么?

问题描述 投票:0回答:1

在netstat中检索套接字状态的系统调用是什么?我实际上并不关心如何实现netstat,而是在哪些系统调用可以检索该信息。 getsockopt()似乎得到套接字的静态信息,而不是套接字的动态/运行状态。

根据ss的说法,netstatiproute document似乎采取了不同的方法:

该实用程序提供了一种新方法,可以很好地扩展。我不打算在此描述技术细节,而是将重点放在命令的描述上。唯一重要的是要加载模块tcp_diag并不是一个坏主意,可以在iproute2的目录模块中找到它。如果你没有使这个ss工作,但它会回退到/ proc并像netstat一样变慢,嗯,快一点(参见“一些数字”部分)。

ss是否使用一些系统调用来获取套接字的运行状态?

谢谢。

linux sockets
1个回答
1
投票

它使用“netlink协议”来累积来自网络堆栈(内核中的传输层引擎)的数据。

netlink协议比这更通用,因此不仅为了完整性而覆盖套接字统计信息。

对于套接字而言,它是[http://man7.org/linux/man-pages/man7/sock_diag.7.html][sockdiag]子系统。

还有更近期的ss实现,例如[python中的https://github.com/svinota/pyroute2/blob/master/cli/ss2][ss2]。从那里,仔细阅读,获得一个要点更简单。

干杯。

© www.soinside.com 2019 - 2024. All rights reserved.