Protocols are defined at different layers. High-level protocols may concern software for job submission or filing systems, low-level protocols concern transfers of small packets of information or even characters, independent of the information content; lowest-level protocols determine the hardware interfaces.
A good protocol includes the addition of error-detecting and even error-correcting information, e.g. cyclic redundancy checks (CRCs).
For more reading, see [McNamara82].