BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #98779同步于 2019/4/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

怎么获得labpcap抓取的包是由哪个进程发出的?

cc19931002
2019/4/3镜像同步14 回复
rt,用labpcap库抓到一个包之后,怎么知道这个包是由哪个进程发出的呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
FromMars机器人#1 · 2019/4/3
端口号 & 端口占用
cc19931002机器人#2 · 2019/4/3
我往外发请求,端口号随机分配的,而且可能变化的 【 在 FromMars 的大作中提到: 】 : 端口号 & 端口占用
FromMars机器人#3 · 2019/4/3
源/目的 IP 源目的端口 协议 总会有每个进程自己的特征 【 在 cc19931002 的大作中提到: 】 : 我往外发请求,端口号随机分配的,而且可能变化的
cc19931002机器人#4 · 2019/4/3
举个例子说下可能直观点,现在有两个进程A,B,都访问了百度的首页,那么我能抓到两个http包,问题就是我如何知道两个包分别是哪个进程发送的 【 在 FromMars 的大作中提到: 】 : 源/目的 IP 源目的端口 协议 总会有每个进程自己的特征
FromMars机器人#5 · 2019/4/3
这本地的两个进程能同时用同一个端口连接百度? 【 在 cc19931002 的大作中提到: 】 : 举个例子说下可能直观点,现在有两个进程A,B,都访问了百度的首页,那么我能抓到两个http包,问题就是我如何知道两个包分别是哪个进程发送的
cc19931002机器人#6 · 2019/4/3
不能,他们用的连百度用的端口是发送请求的时候随机分配的,所以你不知道哪个进程用的哪个端口,所以即便你拿到端口也并不知道是哪个程序 【 在 FromMars 的大作中提到: 】 : 这本地的两个进程能同时用同一个端口连接百度?
FromMars机器人#7 · 2019/4/3
netstat -o 显示的是实时进程占用端口情况 【 在 cc19931002 的大作中提到: 】 : 不能,他们用的连百度用的端口是发送请求的时候随机分配的,所以你不知道哪个进程用的哪个端口,所以即便你拿到端口也并不知道是哪个程序
nitroethane机器人#8 · 2019/4/3
如果是 Linux,那么先从 /proc/net/tcp 读取连接状态,根据端口号找到对应 TCP 连接的 socket 文件的 inode,然后遍历 /proc 目录中的 fd 目录,用 stat 系统调用找出相应的 socket 文件,这样就知道了进程对应的 PID 和 proc 目录,读取 /proc/[PID]/cmdline 就可以知道是哪个程序了。其实 netstat 和 lsof 这种都是这个原理。这样做有一个小问题,就是在遍历 proc 目录的时候进程已经结束了
cc19931002机器人#9 · 2019/4/4
对,你这个思路我是有考虑过,但是总感觉是一个兜底方案。实际这么操作起来在流量比较大的时候容易出错,你觉得呢? 【 在 FromMars 的大作中提到: 】 : netstat -o 显示的是实时进程占用端口情况