linux - 如何以编程方式提取每个 TCP 连接的 TCP/IP 计数器?

标签 linux networking

在过去的生活中,我开发了一个基本上能够跟踪这些信息的工具:

src_ip、dst_ip、src_port、dst_port、bytes_sent、bytes_received、packets_sent、packets_received、packets_retransmitted、bytes_retransmitted

对于机器上的每个事件 TCP 连接。当时(大约 2008 年)这依赖于内核补丁来扩展内核跟踪的计数器。我想我几年前就听说它被集成到内核中了。但它永远存在,我忘记了细节。

生活让我转了一圈,我发现自己想再次编写这样的工具,但我不记得如何访问这些计数器/配置 linux,所以它会跟踪这些信息。

可能有一些方法可以为此使用 netstat -- 但我还无法在该界面中公开计数器信息。

任何让内核跟踪此信息的方法——并合理有效地导出数字就足够了。我希望不必运行 IPTables 即可。

最佳答案

您可以通过/proc/net/tcp 获取一些每个套接字的信息。其他全局信息可以通过/proc/net/snmp重试。但是,我认为内核不会在每个套接字的基础上跟踪 bytes_sent、bytes_received、packets_sent、packets_received、packets_retransmitted、bytes_retransmitted。

关于linux - 如何以编程方式提取每个 TCP 连接的 TCP/IP 计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986351/

相关文章:

linux - 链接期间未找到符号

后台 Linux 进程 - 作业中的 "Stopped"?

php - 如何从命令终端获取网络流量并在 PHP 中显示

android - Android模拟器中的网络访问

linux - 查找不以指定字符串结尾的文本文件的快速方法

linux - AWK - 无法替换值

linux - Linux/Unix shell 脚本中的冒泡排序

java - 在java中通过套接字发送大数据

java - RMI - 在同一台机器上工作,而不是在 LAN 中

javascript - 以编程方式检查网站是否被 ISP 阻止