导航:首页 > 操作系统 > linux进程的网络流量

linux进程的网络流量

发布时间:2024-08-06 22:21:45

1. linux如何获得一个进程的网络流量

Linux下是没有文件直接给你按进程记录流量信息的。你想要编程实现的话,办法是有的,只是比较麻烦。首先,你需要能截取流经网卡的数据包,这个可以通过libpcap来完成,其次你要完成的最重要的一步就是怎么根据端口号找到进程的pid。端口号通过截取的数据包可以获得,这个时候你要按行来解析/proc/net/tcp (如果要支持ipv6的话还要解析/proc/net/tcp6),这个文件记录了当前活跃的TCP连接情况,每一行代表一条连接,我们感兴趣的是其中的inode这一项,你得把inode的值解析出来保存。然后蛋疼的时候来了,接下来你得遍历所有的/proc/pid/fd文件,察看其中每一个文件描述符,如果发现内容为socket[xxxx]的,把xxxx截取出来,这个xxxx也是inode号,如果和你之前解析/proc/net/tcp的inode号吻合,恭喜你,这说明这个pid和那个tcp连接有关系,进而也就确定了端口号和pid的对应关系,也就知道了数据包和进程之间的对应关系了。


我的建议:

  1. 先看看http://www.tcpmp.org/pcap.html, 熟悉一下libpcap库的用法,怎么截取数据包。

  2. 自己看看/proc/net/tcp的内容,想想怎么做文本解析,除了inode外,源ip,源端口号,目的ip,目的端口号都可以解析出来,而这个四元组实际就代表了一条tcp连接。

  3. 想想怎么做数据包,连接,进程的老化超时处理。比如说,当前截取的到的数据包在统计过一次流量后,下一次就不应该再计入了,怎么处理?一条连接长时间没有任何数据包的交互,怎么老化掉?一个进程长时间没有数据包的交互,甚至用户给关闭了,你的程序如何感知?libpcap截取到数据包后会给你提供截取到的时间戳,好好利用这个时间戳就可以办到。

  4. 最后,以数据包 -> 连接 -> 进程 的关系来思考会有助于你的程序设计,一条连接可以有N个数据包,一个进程可以有N条连接。这么一想,这3个结构体或者类就能定义好了。剩下的自己琢磨琢磨。

阅读全文

与linux进程的网络流量相关的资料

热点内容
程序员格子衬衫过圣诞 浏览:222
插入单片机检测不到端口 浏览:467
svn文件夹如何删除 浏览:621
编译过程和解析过程 浏览:819
德云天团app如何参与活动 浏览:740
编译系统的硬件原理 浏览:330
黑色玫瑰什么时候出的服务器 浏览:636
如何打开打印共享服务器 浏览:866
手机热点密码的加密方式 浏览:328
贵州大数据服务器闲置云服务器 浏览:527
文件夹加密微软 浏览:383
苹果突然提示无法验证服务器身份怎么解决 浏览:988
调度命令发布的原则 浏览:679
dos提示不是内部或外部命令 浏览:683
腾讯100g编程源码 浏览:209
机械设计和编程 浏览:830
八角单片机红外遥控led 浏览:94
血液净化pdf 浏览:383
乌市停车APP哪里下载 浏览:904
单片机中fg是什么意思 浏览:883