tcpdump/libpcap与BPF与Linux(LPF-Linux Packet Filter)
来源:互联网 发布:一次性纸杯平面图软件 编辑:程序博客网 时间:2024/05/29 02:38
http://blog.chinaunix.net/uid-20535506-id-1931559.html
《Linux下Sniffer程序的实现》这篇文章对其关系表述的比较准确。
另外一篇英文参考Inside the Linux Packet Filter 很深入
http://www.linuxjournal.com/article/4852
1,LINUX中PF_PACKET的协议簇允许应用程序直接利用网络驱动程序发送和接收报文,支持两个稍微有点不同的SOCKET类型,SOCK_DGRAM和SOCK_RAW。前者让内核处理添加或者去除以太网报文头部工作,而后者则让应用程序对以太网报文头部有完全的控制!《Linux下Sniffer程序的实现》这篇文章对其关系表述的比较准确。
另外一篇英文参考Inside the Linux Packet Filter 很深入
http://www.linuxjournal.com/article/4852
2,把过滤过程尽可能早的放报文进程链中,LINUX的内核允许我们把一个名为LPF(Linux Packet Filter)的过滤器直接放到PF_PACKET protocol-processing routines(在网卡接收中断执行后立即执行)中,过滤器将决定哪些包被送到应用程序,哪些包被丢弃!这个过滤程序可以根据使用者的定义来运行,由BPF伪机器码写成的。
3,这个过滤器也不是总是有效的,因为它产生于一般的使用BPF的机器,没考虑到一些特殊结构的机器!在一些特殊情况下,过滤器由PF_PACKET进程运行,也许已经检查过以太协议了!这个根据你在socket()调用初使化的时候指定的那些协议!如果不是ETH_P_ALL(抓所有的报文),那么只有那些符合指定的协议类型的报文会流过过滤器!
4,libpcap提供的一个最有用的函数是pcap_compile(), 它可以把一个输入输出的逻辑表达式变为BPF代码!tcpdump利用这个函数完成在用户输入的命令行和BPF代码之间的转换!tcpdump有个我们很感兴趣但是很少使用的参数 ,-d,可以输出BPF代码!把tcpdump -d中的-d换成-dd,将显示出一段C代码,可以把它复制到自己的程序中,可以通过调用setsockopt()来过滤端口!
- tcpdump/libpcap与BPF与Linux(LPF-Linux Packet Filter)
- libpcap BSD Packet Filter(BPF)
- Libpcap BPF(BSD Packet Filter)包过滤机制
- Introduction to Seccomp: BPF linux syscall filter
- libpcap/tcpdump filter 语法
- linux : libpcap grab packet to cap files
- Linux tcpdump命令详解,BPF过滤规则参考
- Inside the Linux Packet Filter
- Inside the Linux Packet Filter
- Linux下libpcap的安装与使用
- linux中的bpf封包
- Linux内核笔记 -- BPF
- BPF(BSD Packet Filter)--应用和理念扩展
- 伯克利包过滤(Berkeley Packet Filter,BPF)语言
- Inside the Linux Packet Filter(REPOST)
- Linux 监控监控与分析命令-tcpdump
- Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)
- Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)
- SQL导入EXCEL文件时“文本被截断”错误解决办法
- 电容
- 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
- AndroidManifest.xml文件详解(receiver)
- BCGControlBar(MFC)创建类似微软Office2013用户体验
- tcpdump/libpcap与BPF与Linux(LPF-Linux Packet Filter)
- AndroidManifest.xml文件详解(provider)
- Linux编程,用户自定义信号
- wamp安装教程
- ios开发点滴-播放系统声音
- Tomcat启动:A fatal error has been detected by the Java Runtime Environment(JVM Crash分析及相关资料)
- windows server 2008 设置多用户同时远程登录
- android手势识别总结
- 删除 MyEclipse 6.5.1自带的Maven插件