error detection parity check code, single bit, extendable to multiple bits crc, going over crc process, need polynomial, divide data by result of polynomial, binary long division tack remainder on to data, on receipt, division is performed, if there is an error, there will be a remainder polynomial codes i(x) = iv(k-1)*x^(k-1)...iv(1)*x + iv(0) for info = 1001, g(x) -> x^3 + 1 i(x) is data polynomial g(x) is generated polynomial sender: x^(n-k)i(x)/g(x), get q(x) and r(x), x^(n-k)*i(x) + r(x) transmitted receiver: does same division, expects remainder of 0 ARQ - stop and wait a b ->f0 NAK<- ->f0 ACK1<- p = probability of link corrupting frame worst case, link is always broken, always retry send frame 0, p=1 best case, link perfect, no retries, p=0