Error Detection
Error detection A set of techniques that
can be used to detect errors in received data. Techniques
that are applicable include parity checks involving parity
bits, checksums or a Cyclic Redundancy Check.
The aim of an error detection technique is to enable the
receiver of a message transmitted through a noisy (error-introducing)
channel to determine whether the message has been corrupted.
To do this, the transmitter constructs a value (called a checksum)
that is a function of the message, and appends it to the message.
The receiver can then use the same function to calculate the
checksum of the received message and compare it with the appended
checksum to see if the message was correctly received. For
example, if we chose a checksum function which was simply
the sum of the bytes in the message mod 256 (i.e. modulo 256),
then it might go something as follows. All numbers are in
decimal.
Message : 6 23 4
Message with checksum : 6 23 4 33
Message after transmission : 6 27 4 33
In the above, the second byte of the message was corrupted
from 23 to 27 by the communications channel. However, the
receiver can detect this by comparing the transmitted checksum
(33) with the computer checksum of 37 (6 + 27 + 4). If the
checksum itself is corrupted, a correctly transmitted message
might be incorrectly identified as a corrupted one. However,
this is a safe-side failure. A dangerous-side failure occurs
where the message and/or checksum is corrupted in a manner
that results in a transmission that is internally consistent.
Unfortunately, this possibility is completely unavoidable
and the best that can be done is to minimize its probability
by increasing the amount of information in the checksum (e.g.
widening the checksum from one byte to two bytes). Other error
detection techniques exist that involve performing complex
transformations on the message to inject it with redundant
information. However, this document addresses only CRC algorithms,
which fall into the class of error detection algorithms that
leave the data intact and append a checksum on the end.
|