动图:
抓包理解:
过滤数据包
我们抓到的数据包往往很多,如何过滤掉我们不感兴趣的数据包呢?
几乎所有的操作系统( BSD, AIX, Mac OS, Linux 等)都会在内核中提供过滤数据包的方法,主要都是基于 BSD Packet Filter( BPF ) 结构的。libpcap 利用 BPF 来过滤数据包。
1)设置过滤条件
BPF 使用一种类似于汇编语言的语法书写过滤表达式,不过 libpcap 和 tcpdump 都把它封装成更高级且更容易的语法了,具体可以通过 man tcpdump查看:
以下是一些例子:
src host 192.168.1.177
只接收源 ip 地址是 192.168.1.177 的数据包
dst port 80
只接收 tcp/udp 的目的端口是 80 的数据包
not tcp
只接收不使用 tcp 协议的数据包
tcp[13] == 0x02 and (dst port 22 or dst port 23)
只接收 SYN