CITS3002 Computer Networks  
← prev
next → CITS3002 help3002 CITS3002 schedule  

Cyclic Redundancy Codes (CRCs)

The extra bits used to detect errors are called checksum bits.

A checksum can be quite simple, for example "add-with-carry" all bytes in a message, or much more sophisticated as in the case of a cyclic redundancy code (or CRC).

Polynomial Codes

A polynomial is represented by a bit string with 1 for each power represented in the polynomial, and 0 otherwise.

e.g. x4 + x3 + 1 is represented as 11001

Polynomial arithmetic is performed Modulo-2 or EXCLUSIVE-OR

e.g.	1 ⊕ 1  =  0 ⊕ 0  =  0
	1 ⊕ 0  =  0 ⊕ 1  =  1

Both the sender and receiver agree on a generator polynomial, G(x), with high and low order bits 1.

The message, M, is also interpreted as a polynomial.

The checksum (when calculated) is appended to the message so that (M + checksum), known as the transmission T(x), is divisible by G(x).

On arrival we simply check that the received transmission is divisible by G(x).

[See A Painless Guide to CRC Error Detection Algorithms]

For examples of other types of checksum algorithms, see the Australian Securiities & Investment Commission and
the Australian Tax Office, (or on GitHub).


CITS3002 Computer Networks, Lecture 2, The Physical Layer, Errors detection and correction, p15, 6th March 2024.