收到的udp数据包中的校验和错误

时间:2015-07-22 04:49:32

标签: linux networking udp checksum raw-sockets


问题:

  • 我在RAW套接字上写过嗅探器。它捕获udp数据包并重新检查校验和;
  • 我在DGRAM套接字上编写了udp客户端。它在localhost上发送udp包;
  • 数据包的校验和错误。它只包含伪标题。

创建客户端套接字:

name : "User1",address : {street : "Street1", colony : "Colony1"}
name : "User1",address : {path: "Patth1", venue : "Venue1"}

创建嗅探器插座:

sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
raddr.sin_family = AF_INET;
raddr.sin_addr.s_addr = inet_addr("127.0.0.1");
raddr.sin_port = htons(4848);
sendto(sock, buf, 256, 0, (struct sockaddr*) &raddr, addrlen);

注意:
我没有在端口4848上创建udp服务器,并且使用无法访问的端口捕获ICMP数据包。我认为错误校验和的原因可以在这里 我尝试使用PacketSender发送udp数据包。如果服务器没有运行(我有ICMP回复,该端口无法访问)校验和再次错误。

拜托,有人,你能解释一下为什么udp packet校验和=校验和伪udp标题!?

P.S。:对不起我的拼写。

更新:TCP数据包也有错误的校验和。用wireshark抓住数据包。

1 个答案:

答案 0 :(得分:0)

我和qemu + centos7有同样的问题,只是设置卸载:

def set_iface_offload_off(ifname):
        print "setting %s offloading off" % ifname
        f = os.popen('/usr/sbin/ethtool --offload ' + ifname + ' rx off  tx off')
        f.close()