I'm writing an internet application and I'm at the stage of crafting my own TCP packets. Except there is a major problem. According to the TCPDUMP utility in linux, every tcp packet that I send out from any local application (like telnet and curl) to any IPV4 address on the network causes TCPDUMP to report checksum errors.
A few sources on the internet claim it is due to checksum offloading being turned on. I tried various network cards and used ethtool -K to disable offloading on each card, and no matter what I try, I still receive the checksum error.
I even went as far as hooking the local computer directly to the target computer with a crossover cable. This means I bypassed routers and wireless connections.
Is there a linux setting I can adjust to fix the checksum issue or a program better than TCPDUMP that can work with all unix systems that can truthfully tell me if the outgoing packets have the correct checksum? because surely not every linux application would be crafting faulty TCP checksums or I would have a problem accessing this site.
Any ideas?