根据IPv4
数据包结构:
你有第一个八位字节的版本,在高位半字节中。 IPv4
数据包的版本是" 4"正如您在图片中看到的那样,但请记住它必须位于高位半字节中,因此过滤器中的0x40
(十进制基数为64)。
所以你的过滤器会抓住IP标头的第一个字节,并使用0xF0
AND ,以确保它保持版本部分(高位半字节),然后检查它是否与0x40
(IPv4
数据包不同。)
您还可以做的是:
ip[0] & 0xf0 == 0x60
与说法相同,仅保留IPv6
个数据包。 IPv6
数据包中的版本等于6.版本信息的位置与IPv4
标题的位置相同: