BSD分组过滤器,又称为BSF,也就是BSD Packet Filter。
BSF是依赖与底层操作系统的,并不是所有的系统都支持。原理是将以太网设备的驱动程序设置为混杂模式,然后从驱动程序处接收所有发送和接收的数据。
在BSF中,会为每一个使用BSF的应用程序分配一个过滤器。这些从驱动程序处接收来的所有数据,经过过滤器后剩下的就是应用程序感兴趣的数据了。然后将这些数据从内核复制到用户空间,也就是应用程序。
为了避免频繁的从内核向用户空间复制数据,BSF增加了一个缓冲区,然后会提供一个应用程序可设置的超时时间。只有在时间超时或者缓冲区满的时候,才会将数据从内核空间复制到用户空间。
图示: