我的问题是关于tcpdump命令.. 命令" tcpdump -i eth1 -d"列出过滤器中涉及的装配说明.. 我很好奇,没有任何指令正在访问M [15](内存插槽15)。
有人可以告诉我,是否有使用此内存插槽的过滤器? 它保留了什么以及如何使用它?
答案 0 :(得分:2)
内存插槽未分配给特定用途;它们是根据需要由pcap_compile()
动态分配的。
对于大多数网络类型的大多数过滤器,pcap_compile()
的优化器将删除所有内存插槽使用,或者至少减少它们,以便代码不需要16个内存插槽。
对于802.11(您在监控模式下看到的本机802.11,而不是在未处于监控模式时获得的“假以太网”),当前未使用优化器(它是围绕不适用于更多的假设而设计的)处理802.11所需的复杂决策,并修复它是一个很大的项目),所以你会看到更多的内存位置使用。但是,您可能需要一个非常复杂的过滤器来使用M [15] - 或M [14]或M [13]或大部分低地址存储器位置。
(您还可以使用-O
选项运行tcpdump以禁用优化程序。)