linux下的数据报文截获机制
来源:互联网 发布:流光图片制作软件 编辑:程序博客网 时间:2024/06/08 17:18
linux下的数据报文截获机制
很多数据包截获软件都使用特定的库,在windows下一般使用winpcap,而在linux和unix下一般都选用libpcap,使用这些库能在一定程度上减少工作量,加快程序的进程,但往往容易忽略了一些本质的东西,例如libpcap又是怎样来截获数据报文的。
分析和了解数据报文截获的机制对于了解如何才能截获到无线网络的管理报文有着重要的意义。 通常的数据报文是如何被处理的呢?如图3-1所示。当数据到达网卡时,网卡就把数据交给网卡的驱动程序,当驱动程序处理完数据时就把经过处理的数据交给上层的协议栈,当然也会丢弃一部分,上层一般是操作系统内核的一部分。 图3-1 要截获到MAC层的数据报文就必须尽可能早的截获数据,也就是在尽可能在底层截获数据报文。 Linux和unix系统提供了一种称为Packet filter的服务,它可以用来截获数据报文,它是作为内核的一部分存在的,它的层次及工作方式如图3-2所示。 图3-2 没有程序使用Packet filter时,数据还是像图3-1那样由驱动程序传给协议栈,而当有程序使用Packet filter时,情况则会不同。驱动程序首先将数据报文拷贝给Packet filter,然后Packet filter经过程序定义的过滤方式将不需要的数据报文过滤掉,然后将报文放到应用程序的缓冲区中,这时截获数据报文的应用程序就完成了报文截获的工作。随后驱动程序再进行正常的处理,将数据报文传给协议栈。这就是Packet filter的工作原理。 不同的操作系统提供了不同Packet filter。 BSD系统:BPF(Berkeley Packet Filter) Solaris: DLPI(Data Link Provider Interface) Linux: LSF(Linux Socket filter) 不同Packet filter的实现细节都不相同,但是大致的工作原理是相同的。 要截获数据报文,可以编写应用程序使用Packet filter,但是由于不用操作系统上的Packet filter又有差别,因此想要编写的应用程序能在不同操作系统上使用,就必须对不同Packet filter进行识别并使用。 Libpcap是一个在linux和unix操作系统下被广泛使用的数据报文截获的库,他被大量有名的软件所使用,例如tcpdump,ethereal等等。那它又是如何工作的呢? Libpcap能识别不同操作系统的不同Packet filter,并正确的使用它们,而它向上提供了一个统一的接口让应用程序调用。他类似于一个抽象层,让应用程序可以无视底层的Packet filter而只要使用统一的接口就可以实现数据报文截获,做到了操作系统无关性。分析到这里也就可以知道linux和unix下基于libcap的数据报文截获工具本质上是使用了Packet filter来完成数据报文截获功能的,Ethereal也不例外。的类型
及工作原理
- linux下的数据报文截获机制
- 截获的数据
- ethereal截获的数据
- ethertal截获的数据
- 用ethereal截获的数据
- 截获数据
- 截获数据
- bus hound截获的urb数据分析~~
- net消息机制和截获过滤事件的方法
- linux下的信号机制
- linux下的缓冲机制
- linux下的锁机制
- linux下的FIFO机制
- linux下的poll机制
- Linux下的分页机制
- linux下的信号机制
- C#的反射机制(定制报文)
- Win32k(2) 报文驱动的通信机制
- Facebook网站所使用的开源软件一览表
- 硬盘grub引导U盘系统
- SQL2005数据行的二进制结构
- Android提供延后执行的几种方法
- 在iphone应用程序中启动其他应用程序
- linux下的数据报文截获机制
- Function Rmb2Dx
- 存储图片
- Hibernate 深入研究之 Criteria
- ThinkPHP中execute和query方法的区别
- QT信号与槽机制
- arm-linux东东之nand
- VC学习笔记——图形、文本输出
- 用rsync对网站进行镜像备份