For a Link Layer frame, it's common to include some bits for redundancy. Suppose we have a frame with X bits of actual data, and want Y bits of error-correction bits.

What size do we need to choose for Y to guarantee that we can have a 100% chance of an intact message at the receiving end, free of errors?

  • 2
    You could even have a duplicate of the data as the CRC, but you will never guarantee error-free. A CRC is simply a quick way to give you a reasonable chance of detecting an error.
    – Ron Maupin
    Mar 15, 2020 at 5:40
  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can post and accept your own answer.
    – Ron Maupin
    Dec 17, 2020 at 16:21

1 Answer 1


A CRC in general isn't well suited for error correction, just detection.

Any redundancy you add to an original data block is limited in the amount of errors it can detect (or correct).

Any practical transmission channel has a statistical error rate greater than zero. Cleverly constructed redundant data can decrease the probability of an error by several orders of magnitude, but no amount of redundancy can reduce that probability to zero.

In practice, you might want to reduce an error rate to an amount that doesn't matter much any more - most Ethernet variants are designed to guarantee a bit error rate of 10-12 or better. Detecting an error is much easier than correcting it, so in some situations it might be more reasonable to drop erroneous data and try again. Ethernet doesn't try again on FCS errors but some higher-layer protocols resend lost data.

For an example on forward error correction, check out https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.