[SOLVED] If OSI layers correct errors, how can an http download still fail md5sum?
Linux - NetworkingThis forum is for any issue related to networks or networking.
Routing, network cards, OSI, etc. Anything is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
If OSI layers correct errors, how can an http download still fail md5sum?
Just downloaded a 3 GB iso image using http and tested it with md5sum. It failed. Downloaded the file again and the md5 sum tests ok now
Errors are supposed to be handled by some of the layers of the OSI model and not just the physical layer, in order to provide a reliable service over an unreliable physical medium.
Why might such a thorough scheme have failed to correct the error in the download above?
The error most likely occurred at one of the endpoints.
As you say, both TCP data and IP/TCP headers are protected by checksums. While these are not foolproof, the chance of a datagram with a random error generating the same checksum as the uncorrupted version of that same datagram is very slim indeed.
However, bit errors occurring before the web server served the data, or after the data was received by the client, could still go unnoticed. This would include:
errors generated by the hard drive(s) on the server (not terribly likely as the data are checksummed, but it has been known to happen)
errors on the SATA bus or SATA chipset (the latter is not all that uncommon, while the former is usually caught by parity checking)
faulty RAM on the server, especially if non-ECC RAM is used
faulty server NIC (especially if the NIC supports TCP checksum offloading)
NIC/PCIe bus/RAM/SATA chipset/hard drive errors on the client
and last but not least: bugs in the web browser, especially with regards to cache handling
Considering the vast number of components involved in such a seemingly simple transaction, it's really remarkable that we don't see errors like that more often.
Thanks. If server hardware produces errors, then wouldn't that be noticed and fixed? Or is a mean time between errors of a few hours acceptable and common?
If the errors occur before the data is segmented by the IP stack, and if no other mechanism detect those errors, they won't be noticed nor corrected. The most common scenario is bad non-ECC RAM; unless programs segfault of kernels crash, you'll never know it happened unless you verify the data (as you did).
Buggy or faulty chipsets can also introduce errors. Parity checking on the Hypertransport bus or the PCIe bus is of no use if the data corruption occurs before the data is put on the bus.
No, a mean time of a few hours between errors is not acceptable, it indicates faulty hardware or seriously buggy software. On servers with ECC memory I see perhaps one correctable error per year.
Now I'm getting worried about my PC ram and other hardware too. How do I know all existing files are ok? Or whether new ones I create myself are corrupted?
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.