是过滤器http.host != ""
和http.host
相同?第一个使过滤器文本编辑变成黄色(暗示我可能会得到不想要的结果)而第二个通过语法检查很好。它们似乎产生相同的输出。
Wireshark http 过滤器问题
如文档中所述,在 Wireshark 中使用 NOT (!=) 运算符带有一个警告
6.4.4. 一个常见的错误
警告!在组合表达式上使用 != 运算符,例如:eth.addr、ip.addr、tcp.port、udp.port 等可能不会按预期工作!
人们经常使用过滤字符串来显示类似 ip.addr == 1.2.3.4 的内容,它将显示包含 IP 地址 1.2.3.4 的所有数据包。
然后他们使用 ip.addr != 1.2.3.4 查看所有不包含 IP 地址 1.2.3.4 的数据包。不幸的是,这并没有达到预期的效果。
相反,该表达式甚至适用于源或目标 IP 地址等于 1.2.3.4 的数据包。这样做的原因是表达式 ip.addr != 1.2.3.4 必须读作“数据包包含一个名为 ip.addr 的字段,其值不同于 1.2.3.4”。由于 IP 数据报同时包含源地址和目标地址,因此只要两个地址中的至少一个地址与 1.2.3.4 不同,则表达式的计算结果为真。
如果你想过滤掉所有包含 IP 数据报的数据包到或来自 IP 地址 1.2.3.4,那么正确的过滤器是! true 名为 ip.addr 的字段存在值为 1.2.3.4",或者换句话说,“过滤掉所有没有出现名为 ip.addr 的值为 1.2.3.4 的字段的数据包”。
可能是因为您手头的特定过滤器,当前捕获显示相同的结果,但它可能会通过不同的捕获为您提供不同的结果
"http.host" 表示任何具有 HTTP 主机的数据包 "http.host != "" " 表示任何 http.hosts 不为空的数据包。
如果您根本没有 http.host(即:非 http 流量?),第二个将如何反应,您可能想检查一下
http.host - 显示所有设置了 http.host 的数据包
http.host != "" - 显示所有数据包已设置,而不是空字符串