BBS水木清华站∶精华区

发信人: mephisto (魔鬼*修心养性*重新做人), 信区: Linux        
标  题: Re: =====高速网络截获的Linux驱动程序==== 
发信站: BBS 水木清华站 (Sat May  8 00:40:35 1999) 
 
【 在 sniffer (sniffer) 的大作中提到: 】 
 类似的捕获器已经有了,我觉的BSD Packet Filter就不错. 
 它在核心设置buffer,采用先过虑后缓存的方法,.减少内存拷贝 
 有独立的协议层,捕获的包不会进入系统的协议栈. 
好象不是吧,如果捕的包不进入系统协议栈的话,那Free BSD用tcpdump时 
就无法使用正常的网络了.但显然不是这样. 
进或不进,AF_CAPTURE都可以做到. 
 
 它与网卡无关,尤其是它的社在核旋虑规则采用图的 
我看过源代码,毕竟BPF用中间代码来解释,但是还是比不上直接C代码来提取 
信息快,而且用AF_CAPTURE写一个capture type 的moudule就可以把BPF实现 
了.我专门留了ioctl的接口就是想干这个用的. 
 
再者读网络要用到/dev/bpf0是个不太愉快的想法.还要建个inode.一个bpf0 
设备只能被打开一次,不灵要试bpf1,bpf2,不爽. 
 
不过我承认AF_CAPTURE的很多灵感是来自BPF,我痛恨linux居然没有一个象 
FreeBSD 那样好用的sniffer driver.我曾经把BPF port到linux,没有发布 
是因为我觉得BPF还不够好.现在的AF_CAPTURE比BPF更好,更灵活和更简单更 
快.如果喜欢BPF的话,在AF_CAPTURE加载一moudle就可以实现了,BPF不过是 
AF_CAPTURE的一个子集.还有其他的一些特性也是BPF做不到的.而BPF能作到 
的,AF_CAPTURE都可以. 
 
 方式,效率狠高 
 但它必须编译内核,这点不爽:-( 
 
 
-- 
约塞连怀疑地摇了摇头,拒绝接受丹比的劝告."当我抬起来时,我看到人们全在设法赚钱.我 
看不见天堂,看不见圣人,也看不见天使.我只看见人们利用每一次正当的冲动和每一场人类 
的悲剧大把大把地捞钱." 
 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: ab1-71.bjnet.ed] 

BBS水木清华站∶精华区