抓包函数分析

本文通过实验对比了四种不同抓包函数在tcpcopy中的应用效果:1)使用AF_PACKET与SOCK_DGRAM组合捕获所有数据包;2)同样使用AF_PACKET,但指定仅捕获IP数据包;3)与2类似,但包含链路层头部信息;4)工作在IP层捕获TCP数据包。详细介绍了每种方法下能够捕获的数据包类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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方式来运行。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值