我正在参加数字证券课程,我不了解其中一个关于位掩码的例子。
要查找IPv4数据包,他们会说运行此命令
tcpdump IP [0]& 0xf0 = 4
我认为这是错误的,位掩码正确地只选择IP头的前4位(即版本号)并将因特网头长度的所有位设置为0.
但不应该答案
tcpdump IP [0]& 0xf0 = 0x40
这表示将IP数据包报头的第一个字节中的所有位(除了前4位(版本号)除外)设置为0,并且仅显示此值等于0100 0000的数据包
答案 0 :(得分:2)
这表示将IP包头的第一个字节中的所有位设置为除前4位(即版本号)为0
更准确地说,它选择 IP包头的第一个字节的前4位,并返回一个低4位为零的值。
因此 正确,因为tcpdump IP[0] & 0xf0 = 4
从不 成功(因为IP[0] & 0xf0
在范围内0x00
到0xf0
,低位半字节为0,因此 从不 等于4),IP[0] & 0xf0 = 0x40
将仅当IP标头中的IP版本号为4(而不是例如6)时才会成功。