您的位置:首页 > 其它

抓包函数分析

2012-03-02 17:00 113 查看
tcpcopy代码中试验了各种不同的抓包函数:

1)int sock = socket(AF_PACKET,SOCK_DGRAM,htons(ETH_P_ALL));

这个函数工作在数据链路层,可以截取IN的数据包和OUT的数据包,我们做了这么一个测试:

我们在208机器上发起mysql请求,148作为在线服务器,同时在148上面运行tcpcopy来截取数据包,并且发送请求包给161(作为测试服务器)

结果测试如下:

tcpcopy截获了148上面的mysql请求packets,mysql响应packets,还有tcpcopy自身发送的请求packets

2)int sock = socket(AF_PACKET,SOCK_DGRAM,htons(ETH_P_IP));

这个函数工作在数据链路层,但没有数据链路层的头部信息。

同上面试验一样,我们可以截取到mysql请求packets,但mysql响应packets和tcpcopy自身发出的请求packets没有截获到。

3) socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));

这个函数工作在数据链路层,与2不同的是,截获到的packets,会有数据链路层的头部信息

4)int sock = socket(AF_INET,SOCK_RAW,IPPROTO_TCP);

这个函数工作在ip层,同1)试验一样,我们可以截取到mysql请求packets,但mysql响应packets和tcpcopy自身发出的请求packets没有截获到

目前tcpcopy采用4方式来运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: