Wireshark的Bogus IP length错误

本文介绍使用Wireshark时遇到的IP头部totallength字段显示为0的问题及解决方法。通过调整设置使Wireshark能够正确解析IP头部和TCP头部。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     用Wireshark抓包时,经常会遇到一些报文被解析成为下面这种形式:
     展开信息:
     该报文的源IP和目的IP都只解析以太网层的设备名,而不是IP地址,解析信息是Bogus IP length(0, less than header length 20)。
     仔细查看,发现这个报文的IP头部的total length字段被解析为0,但是从报文payload来看,它的长度肯定不为0.

     出现这种情况的原因是因为当IP头部中total length字段为0时,Wireshark不会接着往下解析IP头部和TCP头部。
 
     解决办法:
     打开“编辑-->属性”窗口,选择Protocals --> IP,在右边勾选上“Support packet-capture from IP TSO-enabled hardware”, 即可!
重新打开Wireshark,一切都正常了。。。

 

### Wireshark IP 过滤语法修正 在使用 Wireshark 的显示过滤器时,如果遇到 IP 地址过滤语法错误的情况,可以按照以下方法进行修正。 #### 正确的 IP 地址过滤语法 对于单个 IP 地址的过滤,应该采用 `ip.addr` 或者更具体的 `ip.src` 和 `ip.dst` 来分别表示源地址和目的地址。例如: - 查找所有涉及指定 IP 地址的数据包: ```plaintext ip.addr == 192.168.1.1 [^2] ``` - 如果只想查找特定的源地址数据包,则可以写成: ```plaintext ip.src == 192.168.1.1 [^3] ``` - 同样地,只查找特定的目的地址数据包则为: ```plaintext ip.dst == 192.168.1.1 [^3] ``` 需要注意的是,在书写过程中要严格遵循语法规则,避免拼写错误或者逻辑运算符的不当使用。例如,常见的错误可能包括忘记双等号 (`==`) 而仅使用单等号 (`=`),这会导致解析失败。 #### 使用逻辑运算符扩展条件 当需要匹配多个 IP 地址或排除某些 IP 地址时,可以通过逻辑运算符来实现复杂的过滤条件。以下是几个例子: - 匹配两个不同的 IP 地址中的任意一个: ```plaintext ip.addr == 192.168.1.1 or ip.addr == 192.168.1.2 [^5] ``` - 排除某个特定的 IP 地址: ```plaintext not ip.addr == 192.168.1.1 ``` - 结合多种条件(如端口和 IP),可以这样编写: ```plaintext tcp.port == 80 and ip.addr == 192.168.1.1 [^4] ``` 以上示例展示了如何通过组合不同字段以及逻辑操作符构建更加精确的过滤规则。 #### 验证并测试过滤器 为了确保所编写的过滤器能够正常工作,建议先尝试简单的过滤表达式逐步增加复杂度,并观察实际效果是否符合预期。此外还可以利用 Wireshark 提供的功能预览功能即时查看修改后的结果变化情况。 ```python # 示例 Python 代码片段展示如何模拟基本过滤逻辑 (仅为演示用途) def filter_ip(packets, target_ips): filtered_packets = [] for packet in packets: if any(ip in packet['source'] or ip in packet['destination'] for ip in target_ips): filtered_packets.append(packet) return filtered_packets target_ips = ['192.168.1.1', '192.168.1.2'] packets = [{'source': '192.168.1.1', 'destination': '10.0.0.1'}, {'source': '192.168.1.2', 'destination': '10.0.0.2'}] result = filter_ip(packets, target_ips) print(result) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值