0

我正在上数字证券课程,但我不明白其中一个关于位掩码的示例。

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

tcpdump IP[0] & 0xf0 = 4

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

但答案不应该是

tcpdump IP[0] & 0xf0 = 0x40

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

4

1 回答 1

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)。

于 2013-05-13T06:33:28.917 回答