Networks must reliably transfer data between devices with complete accuracy. Errors can occur during data transmission and must be detected and corrected for reliable communication. Error detection and correction can be implemented at the data link or transport layers, and works by adding redundant bits to detect errors without having the original message. Common types of redundancy checks used include vertical redundancy check and cyclic redundancy check.