TCP Checksum – Why TCP Checksum is Not 100% Reliable Despite Being a Reliable Data Transfer Method

checksumtcp

So in the networking book by Kurose, we define UDP as a unreliable method because it might not detect errors and therefore transfer a corrupted packet or transfer the data without the order so its not good for important stuff like emails

then it says TCP is a reliable method because it can gurantee data transfer without corruption, and in order, but based on this topic :

https://stackoverflow.com/questions/3830206/can-a-tcp-checksum-fail-to-detect-an-error-if-yes-how-is-this-dealt-with

Something that should be noted here, and that most people overlook completely, is the fact, that the TCP checksum is actually a very poor checksum.

so the checksum of TCP is no good at all?!

so how can TCP be a reliable method when there is a chance that it transfers a corrupted packet and the end system won't notice it? how is this even possible?

because for example i have not received an email with a corrupted message, is it even possible?

Best Answer

No checksum is 100% reliable. The more reliable the error detection, the more computational power you need. It's a tradeoff between reliability and speed/processing power.

The TCP checksum was limited by available computing power at the time. It gives you 99.9984% assurance that your data has not been corrupted by single bit errors. The developers assumed that if stricter error checking was required, it would happen at the application layer.