zoukankan      html  css  js  c++  java
  • TCP/IP bad check sum

    wireshark/tcpdump 抓到的包, 总会显示本机发送的 TCP包(和/或 IP包)校验和错误。这是由于现在网卡硬件会自动填充校验和以减轻CPU负荷,所以操作系统在TCP包的校验和中随便填充一个数字,留给网卡硬件去填充。而wireshark抓包是属于系统层,所以抓到的往外发发的TCP包校验值总是错的。
     
    下面是intel官方对网卡驱动参数的解释:
     
    IPv4 校验和分载 允许适配器验证接收到信息包(Rx) 上的 TCP/IP 校验和,并计算被传输的信息包 (Tx) 上的校验和 。IPv4 校验和分载在安装了 Windows* 设备管理器英特尔® PROSet 的情况下在 TCP/IP 分载选项 属性下配置。启用此功能可以提高 TCP/IP 传输性能,并降低 CPU 使用量。禁用分载时,操作系统将计算并验证 TCP/IP 校验和。
     
     
    TCP 校验和分载传输 (IPv4)  TCP 校验和分载传输 (IPv6) 使适配器能计算 (Tx) 或验证 (Rx) 数据包的 TCP 校验和。TCP 校验和分载在安装了 Windows* 设备管理器英特尔® PROSet 的情况下在 TCP/IP 分载选项 属性下配置。此功能可提高性能,并降低 CPU 使用量。启用分载时,适配器进行计算或校验操作系统的校验和。
     
    解决办法:
    1)如果对抓包,要求很高,可以对禁用掉硬件自动计算校验和。让操作系统去计算即可。
    windows下:
     
    linux下:
    查看
    [root@localhost src]# ethtool -k eth0
    Offload parameters for eth0:
    Cannot get device udp large send offload settings: Operation not supported
    rx-checksumming: on
    tx-checksumming: on
    scatter-gather: on
    tcp segmentation offload: on
    udp fragmentation offload: off
    generic segmentation offload: off
    generic-receive-offload: off
     
    关闭
    [root@localhost src]# ethtool -K eth0 tx off rx off
    2)抓到包后使用工具 tcprewrite 重新计算 TCP/IP 包校验和
    tcprewrite -C -i input.pcap -o output.pcap
  • 相关阅读:
    (一)Python装饰器的通俗理解
    Linux实例安装VNC Server实现图形化访问
    TightVNC for Windows
    使用Xmanager远程CentOS 7服务器(XDMCP)
    Using Xmanager to connect to remote CentOS 7 via XDMCP
    在windows上使用xdmcp登陆centos,红帽linux
    Xmanger远程连接Centos7(成功配置)
    Centos7.2命令安装图形化界面
    CentOS 7安装图形界面
    CentOS 7命令行安装GNOME、KDE图形界面(成功安装验证)
  • 原文地址:https://www.cnblogs.com/JesseFang/p/3106019.html
Copyright © 2011-2022 走看看