including some raw socket code, and checksum code