我正在上一门数字证券课,我听不懂其中一个关于位掩码的例子。
他们说,要查找IPv4数据包,请运行以下命令
tcpdump IP & 0xf0 =4
我认为这是错误的,位掩码只正确地选择了IP报头的前4位(这是版本号),并将互联网报头长度的所有位设置为0。
但答案不应该是
tcpdump IP & 0xf0 = 0x40
这说明将IP分组报头的第一个字节中除前4个比特(版本号)之外的所有比特设置为0,并且仅显示该值等于0100 0000的分组
发布于 2013-05-13 14:33:29
此状态将IP数据包报头的第一个字节中除前4位(版本号)以外的所有位设置为0
更准确地说,它选择IP分组报头的第一个字节的前4位,并返回其中低4位为零的值。
因此,您是正确的,因为tcpdump IP[0] & 0xf0 = 4将NEVER succeed (由于IP[0] & 0xf0在0x00到0xf0的范围内,低位半字节为0,因此它可以NEVER等于4),且仅当IP报头中的IP版本号为4(而不是例如6)时,IP[0] & 0xf0 = 0x40才会成功。
https://stackoverflow.com/questions/16513342
复制相似问题