请教一个关于指定winpcap抓取指定方向数据包的问题
我的问题是:用winpcap编程有没有办法实现只抓从某个网口进来或出去的包?或者有没有别的办法在程
序中实现同样的功能?以下是我程序的实现环境和问题,写得比较多,但高手应该一目了然。谢谢!
------------------------------------------------------------------------------------
我用winpcap开发一个包转发的程序,在两个通信节点(假设为A和B)中间插入我的包转发程序,程序运行
的目的是使A和B仍能正常的通信,即我的程序对A和B是透明的,这样我程序运行的节点至少有两个网口(假设
为a和b),分别接向A和B。
程序是这样工作的:用两个进程或两个线程(这里假设使用两个进程)分别负责把从一个口捕获到的包原封
从另一个口转发出去,即一个进程把从a口捕获到的包从b口转发出去,另一个进程则刚好相反。
现在的问题是:一个进程转发出去的包会被另一个进程捕获,最后造成包的循环转发,两个进程陷入转发
包的死循环。
可以采用对捕获的包进行分析过滤的办法来防止造成死循环,但通信的包很复杂不能简单的通过判断IP或
协议来进行过滤。另一种办法是想法使每个进程只抓从一个网口传进来的包而不抓传出去的包,winpcap中有
一个过滤选项inbound/outbound即指定winpcap只抓一个方向的包,但winpcap的官网上解释说只能用在没
有链路层(比如,像slip这样的点对点协议)的连接中,试了下没能实现抓指定方向的包。