代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

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

  •  0
  • Tim unnamed eng  · 技术社区  · 6 年前

    在netstat中检索套接字状态的系统调用是什么?实际上,我对netstat的实现方式并不感兴趣,而是对什么样的系统调用可以检索这些信息感兴趣。 getsockopt() 似乎得到的是套接字的静态信息,而不是套接字的动态/运行状态。

    ss netstat 似乎采取了不同的方法 iproute document 说:

    这个实用程序提出了一种新的方法,该方法可以很好地扩展。我不打算在这里描述技术细节,我将集中描述这个命令。唯一重要的是,加载模块tcpudiag并不是什么坏主意,它可以在iproute2的目录模块中找到。如果您不让这个ss工作,但是它会回到/proc,变得像netstat一样慢,好吧,快一点(参见“一些数字”一节)。

    党卫军 使用一些系统调用来获取套接字的运行状态?

    0 回复  |  直到 5 年前
        1
  •  2
  •   cherusk    6 年前

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

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

    特别是插座 那个[ http://man7.org/linux/man-pages/man7/sock_diag.7.html][sockdiag] 子系统。

    还有更新的ss实现,例如[ https://github.com/svinota/pyroute2/blob/master/cli/ss2][ss2] 在巨蟒中。从那里,细读它,得到一个要点更简单。

    干杯。