千家信息网

Linux进程网络流量统计的实现过程

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,前言linux都有相应开源工具实时采集网络连接、进程等信息其中网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline)等。
千家信息网最后更新 2026年11月02日Linux进程网络流量统计的实现过程

前言

linux都有相应开源工具实时采集网络连接、进程等信息其中网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline)等。其中这两项数据大多可直接读取linux /proc目录下的网络状态连接文件/proc/net/tcp、/proc/net/udp), 进程状态目录(/proc/pid/xx) 。

在某些应用安全场景需要结合进程网络连接、流入流出流量等数据可分析出是否在内网存在恶意外传敏感数据现象在网络监控 时发现 服务器大量带宽被占用但不清楚由系统具体哪个进程占用 。为此都需要获取到更细粒度的进程级网络流量数据综合分析。

在linux proc目录下可查到主机级网络数据,例如/proc/net/snmp提供了主机各层IP、ICMP、ICMPMsg、TCP、UDP详细数据,/proc/net/netstat 文件 InBcastPkts、 OutBcastPkts、InOctets、OutOctets字段表示主机的收发包数、收包字节数据。很可惜没有 进程级流入流出网络流量数据。

为此参考nethogs原理实现统计进程级网络流量方式。

基本数据

涉及proc以下几个目录或文件网络状态文件/proc/net/tcp、/proc/net/udp, 进程文件描述符目录/proc/pid/fd。

网络状态文件/proc/net/tcp

我们重点关注五元组+状态+inode号分别在第2、3、4、11列

其中第23列分别是主机字节序ip:port ,例如"0500000A:0016″ -> "10.0.0.5″, 22

第4列是状态信息状态字段含义如下:

"01″: "ESTABLISHED",
"02″: "SYN_SENT",
"03″: "SYN_RECV",
"04″: "FIN_WAIT1″,
"05″: "FIN_WAIT2″,
"06″: "TIME_WAIT",
"07″: "CLOSE",
"08″: "CLOSE_WAIT",
"09″: "LAST_ACK",
"0A": "LISTEN",
"0B": "CLOSING"

第11列是inode号 linux系统文件系统中的一个文件系统对象包括文件、目录、设备文件、socket、管道等的元信息。


进程文件描述符

/proc/pid/fd目录下列出当前进程打开的文件信息其中0、1、2表示标准输入、输出、错误。

网络连接是以socket:开头的文件描述符,其中[]号内的是inode号这样与网络状态文件/proc/net/tcp下的inode号可对应起来

以pid:25133进程为例, 文件描述符是10、12 对应inode号分别是512505532、512473483的网络连接,同时在下图中的/proc/net/tcp都可以查找到对应连接的详细信息。

根据上述文件信息可以从/proc/net/tcp建立起网络连接五元组->inode的映射, 而 /proc/pid/fd建立起连接inode ->进程的映射。

这样 通过inode号作为桥梁关联起系统内的进程与网络连接的信息。

实现流程

为了实时获取网络连接流量在linux主机上使用开源libpcap库来抓取网络报文。整个实现流程图如下包含以下5个关键步骤。

抓包

使用抓包Libpcap库获取到网络packet结构。

解析报文

解析出packet的五元组(源地址、目标地址、源端口、目标端口、协议号)信息和当前包的流量大小。

缓存更新

在ConnInodeHash查找五元组组成的key对应的inode号如果不存在重新读取/proc/net/tcp与udp刷新ConnInodeHash缓存建立起连接与inode的映射并重新读取/proc/pid/fd目录对所有文件描述符遍历过滤出以socket:开头的连接刷新InodeProcessHash缓存重新建立inode与进程的映射。

hash查找

根据查找到inode号在InodeProcessHash查找相应进程pid。

统计流量

根据报文地址,判断网络连接方向,累加进程流入、流出数据。

总结

对linux主机抓包,结合网络状态文件、进程文件描述符实现一种细粒度的进程级网络流量采集方式。

通过linux 文件inode号作为桥梁,关联出进程、网络连接的关系,可以统计进程接收/发送的总量/平均值等各维度数据,也可以分析出进程各个网络连接的流量数据,这些在主机流量安全分析、网络监控排查等场景方面可作为重要依据。但同时也需要注意的是持续通过libpcap抓包对主机性能有损耗影响。

以上所述是小编给大家介绍的Linux进程网络流量统计的实现过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

网络 进程 文件 数据 流量 信息 状态 主机 目录 地址 系统 五元 统计 目标 端口 分析 报文 缓存 立起 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金融科技创新监管互联网金融 没上市的科技互联网公司 互联网科技的英文 艾特科技互联网 亿账通互联网科技 青岛中康互联网医疗科技有限公司 中盈科技互联网信息有限公司 新华互联网科技2019 本届互联网博览会上的黑科技 明优互联网科技有限公司 中和天地互联网科技有限公司 华中科技大学互联网的牛人 吉林省码上互联网科技电话 保山互联网科技靠谱吗 众联互联网络科技 科技互联网公司两年变化 北京品多多互联网科技有限公司 保山浩联互联网科技有限公司 杭州科技互联网公司有哪些 中国主要互联网科技公司 咖啡豆 互联网金融和金融科技 四个字互联网科技公司取名 顺网科技2021年互联网排名 岳阳华臻互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 科技互联网海报 互联网金融科技公司的优势 西安左小互联网科技有限公司 广州全民伙伴互联网科技有限公司
0