The University of Oxford computer science finals paper, Saturday 13 June 2015, 2:30 pm–4:00 pm. Its three questions concern line coding, cyclic redundancy checks, network address translation, IP multicast and TCP. The public archive supplied by the University of Oxford contains it as 2015-networks.pdf. Questions occupy printed pages 2–3.
CRC generator polynomial 2026-10-31
The CRC generator polynomial is the agreed divisor in a cyclic redundancy check. Under the basic convention, undetected error polynomials are precisely its nonzero multiples.
Cyclic redundancy check 2026-10-31
A cyclic redundancy check uses a polynomial remainder over the field with two elements as checking information. In the basic systematic convention, appending the remainder of modulo the CRC generator polynomial makes the transmitted polynomial divisible by that generator.
Represent the data bits, most significant first, by a polynomial whose polynomial coefficients lie in the field with two elements . Here addition and subtraction are both exclusive or, with no carries. Choose a fixed CRC generator polynomial of polynomial degree , with leading and constant polynomial coefficients one. Both endpoints know and the bit ordering.
Multiply by , which appends zero bits. Use polynomial division to obtain
Replace the appended zeros by the bits of the polynomial remainder , retaining leading zeros when necessary. The transmitted polynomial is
The last equality holds because adding cancels the existing polynomial remainder in the field with two elements. It is the simple systematic cyclic redundancy check convention used here; practical variants can add agreed initialization and final transformations.
The receiver divides the entire received polynomial by . A nonzero polynomial remainder detects corruption. If the received word is , where the ones in the error polynomial mark flipped bits, its polynomial remainder is . Thus the undetected nonzero errors are exactly the multiples of ; a zero result does not prove that transmission was error-free. Operationally, polynomial long division repeatedly cancels a leading one using a shifted copy of , implemented with exclusive or operations.
Let . With CRC generator polynomial , the appended check has one bit. The preceding polynomial remainder rule gives , so put in the field with two elements. The eight transmitted bits are
They have even Hamming weight, so this cyclic redundancy check is a single parity-check code. For a substitution error polynomial , detection occurs exactly when : an odd number of the eight bits, including the check bit, have flipped. Therefore
In particular, every single-bit error is detected, while flipping any two distinct bits passes this check. This conclusion assumes that the eight-bit word's boundaries and length are retained; it supplies no general protection against insertions, deletions or lost framing.