BPF 伯克利包过滤器英語Berkeley Packet Filter缩写 BPF是类Unix系统上数据链路层的一种原始接口提供原始链路层封包的收发除此之外如果网卡驱动支持混杂模式那么它可以让网卡处于此种模式这样可以收到网络上的所有包不管他们的目的地是不是所在主机 另外BPF支持过滤数据包用户态的进程可以提供一个过滤程序来声明它想收到哪些数据包通过这种过滤可以避免从操作系统内核向用户态复制其他对用户态程序无用的数据包从而极大地提高性能 BPF有时也只表示过滤机制而不是整个接口一些系统比如Linux和Tru Unix提供了数据链路层的原始接口而不是BPF的接口但使用了BPF的过滤机制 BSD 内核实现例程如 bpfmtap和 bpftap以BPFMTAP和 BPFTAP等宏定义的形式进行包裹由网卡驱动以及伪驱动pseudodrivers 向BPF机制发送进出的封包