Wireshark捕获的outgoing_TCP包的IP_header_checksum_error问题.doc
### Wireshark捕获的outgoing_TCP包的IP_header_checksum_error问题 #### 一、问题背景及概述 在使用Wireshark或Ethereal等网络分析工具进行抓包的过程中,可能会遇到TCP包被标记为IP头校验和错误的情况。具体表现为,在Wireshark for Win上,这些错误通常显示为Header Checksum == 0x0000。这一问题不仅出现在Windows XP系统中,同样也可能出现在Windows 7等其他版本的操作系统中。 #### 二、问题解析 **问题核心:** 当使用Wireshark或其他类似工具进行抓包时,可能会观察到一些出站TCP包被标记为具有IP头部校验和错误。这通常是因为在发送TCP数据包之前,操作系统中的IP协议栈并未计算出正确的校验和值,而是将此任务委托给了网卡硬件来完成。然而,Wireshark等工具在抓取这些数据包时,并不知道后续网卡硬件将会对校验和进行修正,因此会将这些包标记为错误。 **技术原理:** 1. **硬件校验和卸载(RxChecksumOffload 和 TxChecksum Offload):** - **RxChecksumOffload**:接收方向的校验和卸载,即网卡负责对接收到的数据包进行校验和验证。 - **TxChecksumOffload**:发送方向的校验和卸载,即网卡负责在发送数据包前计算校验和。 2. **IP协议栈处理流程:** - 操作系统中的IP协议栈在封装IP数据报时,会先将校验和字段设为零或者随机值,然后将数据包传递给网卡硬件。 - 网卡硬件接收到数据包后,负责计算正确的校验和值并替换原值。 3. **Wireshark抓包原理:** - Wireshark通过某种机制(如Pcap库)捕获从操作系统协议栈传出的数据包副本,此时数据包还未经过网卡硬件的校验和修正。 - 因此,Wireshark捕获的数据包中包含的是未经修正的校验和值,导致标记为错误。 #### 三、解决方案 **解决方法:** 1. **修改网卡驱动的高级配置:** - 在网卡驱动的高级配置中,找到“IPv4硬件校验和”设置。 - 将其设置为“关闭”或“Rx开启”,从而关闭发送方向的硬件校验和卸载功能。 2. **实际操作步骤:** - 打开设备管理器,找到对应的网卡设备。 - 右键点击该设备,选择“属性” -> “高级”。 - 寻找“IPv4硬件校验和”设置项,并将其更改为“关闭”或“Rx开启”。 **注意事项:** - 修改此设置可能会略微降低网络性能,因为校验和计算任务重新回到操作系统层面。 - 如果找不到相关设置项,可能是网卡不支持该功能或驱动程序未提供相应的配置界面。 #### 四、结论 Wireshark捕获的出站TCP包出现IP头部校验和错误的原因在于网卡驱动的硬件校验和卸载配置。通过关闭发送方向的硬件校验和卸载功能,可以有效避免此类错误的发生。值得注意的是,这一问题并非Wireshark特有的问题,而是由于Wireshark捕获数据包时无法感知到后续网卡硬件对校验和的修正所导致的。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助