Modem error-correcting protocols are methods for detecting and correcting data transmission errors. Both hardware-based and software-based protocols exist and are often employed together. An individual modem usually uses a built-in hardware-based protocol to compensate for communication link noise. Systems at both ends of a link often use software-based protocols to cope with problems beyond a modem's control.
Transmission error correction is generally a multiple-step process. Before each data packet is sent over the link, the transmitting modem computes its checksum and includes it in the packet. A Cyclic Redundancy Check (CRC) algorithm is often applied to determine the checksum. When the packet arrives, the receiving modem also calculates the data's checksum and compares it to the one already in the packet. If the two do not match, the receiver notifies the transmitter that it needs to re-send the bad data packet.
In the 1980s, Microcom, Inc. introduced a family of hardware-based modem error-correcting protocols. Called the Microcom Networking Protocol (MNP), it consists of ten numbered classes which improved performance over time. MNP Class 3 eliminates unneeded framing bits from individual data bytes, for example. MNP Class 5 compresses the data before it sends it, building upon the improvements in Classes 1 through 4. MNP Class 6 varies the data bandwidth, favoring one direction over the other as needed, and reduces the connection startup time.
MNP was widely adopted and is built into most telephone-based modems. One of the more advanced hardware-based modem error-correcting protocols was introduced in the early 1990s. The International Telecommunication Union's Telecommunication Standardization Sector (ITU-T) V.42 standard was quickly included in modems alongside MNP. Its Link Access Procedure for Modems (LAPM) includes superior data compression compared to MNP. It also adds less overhead to the transmitted data and has better support for flow control and synchronous transmission.
Hardware-based modem error-correcting protocols can be very good at ensuring that each data packet arrives intact. Many file transfers can be handled more efficiently by using both software and hardware protocols together, however. If a connection is lost while sending a very large file, many systems require starting over from the beginning of the file. In contrast, some software-based error-correcting protocols will remember where the transmission left off and continue from there. Software protocols can also better manage flow control in the system beyond the modem connection itself.
XMODEM was one of the early software-based modem error-correcting protocols created in the late 1970s. It was very simple, including a block number, a primitive checksum and a few marker bytes in each packet. Its checksum algorithm was problematic, and many people soon implemented variations with extra features. These included larger block sizes, transfers of multiple files and starting a new packet before the previous one was verified. YMODEM, which was XMODEM's successor in the mid-1980s, listed many of these as optional enhancements.
ZMODEM and its variants are much-improved software-based modem error-correcting protocols. Developed in 1986 by the author of YMODEM, ZMODEM includes a much better CRC algorithm using 32 bits. It can move on to the next packet without waiting for the current one to be acknowledged, improving throughput, or message delivery. ZMODEM can also restart a large file transfer from where it left off if the connection is broken. Later variations included even larger block sizes and automatic compression of packet data.