There are two basic approaches to error correction: automatic-repeat-request (ARQ) and forward error correction (FEC). ARQ requires retransmitting frames where errors are detected, while FEC allows the receiver to detect and correct a limited number of errors without contacting the transmitter by using error correction codes. Common ARQ techniques include stop-and-wait, go-back-n, and selective-repeat. FEC works by adding redundant bits that enable the receiver to determine the most likely intended message even if some bits are received in error.