计算数据包偏移量

在Wireshark中,如果我想写一个只接受ICMP目标不可达(types3)消息的filter,则filter为icmp[0] == 3

在这种情况下,如何计算0的数据偏移量?

编辑

在这里输入图像说明

基于维基百科的上述图像,ICMPtypes在0-7位之下。 所以它是第一个字节,因此是0?

您的filter是正确的, icmp[0]确实匹配包含该types的ICMP头的第一个字节。 但是,我发现很难阅读,您应该使用icmp.type eq 3来代替。 当字段长于一个字节时,这也容易得多。

这是ICMP的显示字段参考 。

我假设你正在试图写一个捕获filter,而不是一个显示filter; 如果您正在尝试编写显示filter,Martin Isaksson是正确的,您应该执行icmp.type == 3

是,0是ICMP数据包内的偏移量。

在较新版本的libpcap中, 语法支持一些更方便的编写filter的方法 ,即icmp[icmptype] == icmp-unreach 。 WinPcap基于具有该语法的libpcap版本,所以它也支持它 。

这可能是一个Wireshark不会让你说类似的错误,即

 icmp.type == "Destination unreachable" 

在显示器filter。 我会看看解决这个问题。