TCPDUMP:Bitmasking

时间:2013-05-13 00:17:01

标签: networking ip tcpdump packet-sniffers

我正在参加数字证券课程,我不了解其中一个关于位掩码的例子。

要查找IPv4数据包,他们会说运行此命令

tcpdump IP [0]& 0xf0 = 4

我认为这是错误的,位掩码正确地只选择IP头的前4位(即版本号)并将因特网头长度的所有位设置为0.

但不应该答案

tcpdump IP [0]& 0xf0 = 0x40

这表示将IP数据包报头的第一个字节中的所有位(除了前4位(版本号)除外)设置为0,并且仅显示此值等于0100 0000的数据包

1 个答案:

答案 0 :(得分:2)

  

这表示将IP包头的第一个字节中的所有位设置为除前4位(即版本号)为0

更准确地说,它选择 IP包头的第一个字节的前4位,并返回一个低4位为零的值。

因此 正确,因为tcpdump IP[0] & 0xf0 = 4 从不 成功(因为IP[0] & 0xf0在范围内0x000xf0,低位半字节为0,因此 从不 等于4),IP[0] & 0xf0 = 0x40将仅当IP标头中的IP版本号为4(而不是例如6)时才会成功。