I protocolli di correzione degli errori del modem sono metodi per rilevare e correggere gli errori di trasmissione dei dati. Esistono entrambi i protocolli basati su hardware e software e sono spesso impiegati insieme. Un singolo modem di solito utilizza un protocollo basato su hardware integrato per compensare il rumore del collegamento di comunicazione. I sistemi a entrambe le estremità di un collegamento utilizzano spesso protocolli basati su software per far fronte a problemi al di fuori del controllo di un modem.
La correzione degli errori di trasmissione è generalmente un processo in più fasi. Prima che ogni pacchetto di dati venga inviato sul collegamento, il modem trasmittente calcola il suo checksum e lo include nel pacchetto. Un algoritmo di controllo della ridondanza ciclica (CRC) viene spesso applicato per determinare il checksum. All’arrivo del pacchetto, il modem ricevente calcola anche il checksum dei dati e lo confronta con quello già presente nel pacchetto. Se i due non corrispondono, il ricevitore notifica al trasmettitore che deve inviare nuovamente il pacchetto di dati errato.
Negli anni ‘1980, Microcom, Inc. ha introdotto una famiglia di protocolli di correzione degli errori del modem basati su hardware. Chiamato Microcom Networking Protocol (MNP), è composto da dieci classi numerate che hanno migliorato le prestazioni nel tempo. MNP Class 3 elimina i bit di frame non necessari dai singoli byte di dati, ad esempio. MNP Class 5 comprime i dati prima di inviarli, basandosi sui miglioramenti nelle Classi da 1 a 4. MNP Class 6 varia la larghezza di banda dei dati, favorendo una direzione rispetto all’altra secondo necessità e riduce il tempo di avvio della connessione.
MNP è stato ampiamente adottato ed è integrato nella maggior parte dei modem telefonici. Uno dei protocolli di correzione degli errori dei modem basati su hardware più avanzati è stato introdotto nei primi anni ‘1990. Lo standard V.42 del settore delle telecomunicazioni dell’Unione internazionale delle telecomunicazioni (ITU-T) è stato rapidamente incluso nei modem insieme a MNP. La sua procedura di accesso al collegamento per modem (LAPM) include una compressione dei dati superiore rispetto a MNP. Inoltre, aggiunge meno sovraccarico ai dati trasmessi e offre un supporto migliore per il controllo del flusso e la trasmissione sincrona.
I protocolli di correzione degli errori del modem basati su hardware possono essere molto utili per garantire che ogni pacchetto di dati arrivi intatto. Tuttavia, molti trasferimenti di file possono essere gestiti in modo più efficiente utilizzando insieme i protocolli software e hardware. Se si perde una connessione durante l’invio di un file molto grande, molti sistemi richiedono di ricominciare dall’inizio del file. Al contrario, alcuni protocolli di correzione degli errori basati su software ricorderanno dove si è interrotta la trasmissione e continueranno da lì. I protocolli software possono anche gestire meglio il controllo del flusso nel sistema oltre la connessione modem stessa.
XMODEM è stato uno dei primi protocolli di correzione degli errori dei modem basati su software creati alla fine degli anni ‘1970. Era molto semplice, includeva un numero di blocco, un checksum primitivo e alcuni byte marker in ogni pacchetto. Il suo algoritmo di checksum era problematico e molte persone hanno presto implementato varianti con funzionalità extra. Questi includevano blocchi di dimensioni maggiori, trasferimenti di più file e l’avvio di un nuovo pacchetto prima che il precedente fosse verificato. YMODEM, che era il successore di XMODEM a metà degli anni ‘1980, elencava molti di questi come miglioramenti opzionali.
ZMODEM e le sue varianti sono protocolli di correzione degli errori del modem basati su software molto migliorati. Sviluppato nel 1986 dall’autore di YMODEM, ZMODEM include un algoritmo CRC molto migliore che utilizza 32 bit. Può passare al pacchetto successivo senza attendere il riconoscimento di quello corrente, migliorando il throughput o la consegna dei messaggi. ZMODEM può anche riavviare un trasferimento di file di grandi dimensioni da dove era stato interrotto se la connessione viene interrotta. Le variazioni successive includevano blocchi di dimensioni ancora più grandi e la compressione automatica dei dati a pacchetto.