导航:首页 > 操作系统 > 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进程的网络流量相关的资料

热点内容
压缩包软件如何安装 浏览:765
我的世界服务器1122地址 浏览:3
苹果如何与安卓系统连接服务器 浏览:932
农业银行app学生缴费怎么切换 浏览:468
福建在哪个app上有安康码 浏览:545
用友商贸宝t1登录找不到加密狗 浏览:555
区间测速算法不正确 浏览:331
appstore转到哪个国家比较好 浏览:924
程序员为什么被公司埋炸弹 浏览:941
linuxds18b20驱动 浏览:137
集群大数据编译命令 浏览:536
什么狼人杀app好 浏览:303
hadoop压缩命令 浏览:655
croe壳命令 浏览:77
抽干文件夹图片 浏览:950
android光感 浏览:968
php业务流 浏览:971
devc编译错了怎么办 浏览:300
编译系统都有哪些部分 浏览:707
数据库技术pdf 浏览:232