据我所知,如果我们在函数libnet_build_tcp中写0,tcp校验和会自动计算,那为什么我们需要libnet_do_checksum?
当我尝试构建新数据包时,我遇到了错误。一个规则的TCP数据包(SYN,ACK)工作正常,但HTTP数据包不起作用,因为tcp校验和错误。 我必须使用libnet_do_checksum吗?
答案 0 :(得分:0)
如果要手动计算校验和,可以使用libnet_do_checksum(),以便在发送之前进行检查。例如。
您确定携带HTTP数据的数据包是否存在校验和错误? OS可能正在使用校验和卸载。 Wireshark会在原始计算机上报告错误的校验和,但网卡会在通过网络发送数据包之前对其进行计算。