Q:

Doing network file copy, should I validate data

In a c# Application on Windows, I'm calculating corrections for a machine and put them in a plain-text file. After calculating those corrections, I send them to the machine (on Windows too) using a simple File.Copy over network.
If files are corrupted when the machine read them, some really bad things could happen.
According to this context, should I validate transmitted files (using a checksum or something else)? Or does the protocol (is it TCP?) already does it?

A:

There are many steps that data passes through in the workflow that you outlined (disk, RAM, TCP). Corruption can occur in all of those places and none of them have strong checksums built in. TCP checksums are weak. ECC RAM does not provide absolute safety.
Corruption will be very rare but it will happen sooner or later. You probably need to build end-to-end checksumming if this is really important to you.

