Michael O'Keefe wrote:

That's really a function of TCP/IP and UDP/IP becoz the IP header can get mangled (but still have a valid IP checksum) and the packet can wind up on another machine. But by including the addresses in 2 check checksums, it might pass the IP verification , but it won't pass the TCP verification. But if you send TCP/UDP over another transport, you don't have to use IP addresses in the checksum calculation. You can really provide whatever "prefix" you like (or none at all) to the checksum calculation, so long as the receiver on the other end knows to do the same thing.

For a full rationale about decisions concerning TCP stacks, I recommend reading:

"The Design and Implementation of the FreeBSD Operating System" by by Marshall Kirk McKusick and George V. Neville-Neil

This discusses how you implement a stack, what gets ignored, and what gets optimized.

In addition, TCP/IP Illustrated Vol 1 and 2 should touch on these kinds of issues as well.

My standard response to TCP/IP questions tends to be "Go read." There are so many dark corners, special cases, and active optimizations that it is very hard to answer just about any TCP/IP question briefly.

-a


--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list

Reply via email to