Updating tcp header dating old men
Well like so many other things, what everyone knows is not always correct.The Ethernet frame check sequence check (FCS) and the IP and TCP checksums will protect your data from most but not all types of data corruption.E-mailing pictures of the kids to my mother is one thing, updating a medical database or making a financial transaction is something else entirely.By definition the Ethernet and TCP stacks cannot protect your data from errors that are undetectable.For example, a bad ACK segment will be ignored; a corrupt byte or two in am image file will probably not be noticed, and no one would be surprised if a document I sent them had a spelling error. I started researching this because of a claim that the TCP stack allowed a corrupt segment to update a database.Then again sometimes the database is corrupt and applications do randomly fail. Unfortunately, there were no traces showing the segment and no analysis was done of the database record to see if the corrupt section of the record had the same checksum value as the uncorrupted original section.
To protect against these errors TCP is dependent on the IP and TCP checksums that are part of the protocol headers.One in 10 billion sounds like a lot until you realize that 10 billion maximum length Ethernet frames (1526 bytes including Ethernet Preamble) can be sent in a little over 33.91 hours on a gigabit network (10 * 10^9 * 1526 * 8 / 10^9 / 60 / 60 = 33.91 hours), or about 26 days over a T3.So, if there is an undetectable corrupted segment on the network once every 34 hours or even once a month, why aren't the databases hopelessly corrupt? Well, in many cases a corrupt segment is no big deal.The best answer I could give the DBA was that it could have happened.It seems to me that the level of paranoia should be based on the criticality of the data.