Protokol koreksi kesalahan modem adalah metode untuk mendeteksi dan mengoreksi kesalahan transmisi data. Baik protokol berbasis perangkat keras dan berbasis perangkat lunak ada dan sering digunakan bersama. Modem individual biasanya menggunakan protokol berbasis perangkat keras bawaan untuk mengimbangi gangguan tautan komunikasi. Sistem di kedua ujung tautan sering menggunakan protokol berbasis perangkat lunak untuk mengatasi masalah di luar kendali modem.
Koreksi kesalahan transmisi umumnya merupakan proses beberapa langkah. Sebelum setiap paket data dikirim melalui tautan, modem pengirim menghitung checksumnya dan memasukkannya ke dalam paket. Algoritma Cyclic Redundancy Check (CRC) sering diterapkan untuk menentukan checksum. Ketika paket tiba, modem penerima juga menghitung checksum data dan membandingkannya dengan yang sudah ada dalam paket. Jika keduanya tidak cocok, penerima memberi tahu pemancar bahwa ia perlu mengirim ulang paket data yang buruk.
Pada 1980-an, Microcom, Inc. memperkenalkan keluarga protokol koreksi kesalahan modem berbasis perangkat keras. Disebut Microcom Networking Protocol (MNP), terdiri dari sepuluh kelas bernomor yang meningkatkan kinerja dari waktu ke waktu. MNP Kelas 3 menghilangkan bit framing yang tidak dibutuhkan dari byte data individual, misalnya. MNP Kelas 5 memampatkan data sebelum dikirim, membangun perbaikan di Kelas 1 sampai 4. MNP Kelas 6 memvariasikan bandwidth data, mendukung satu arah di atas yang lain sesuai kebutuhan, dan mengurangi waktu startup koneksi.
MNP diadopsi secara luas dan dibangun di sebagian besar modem berbasis telepon. Salah satu protokol koreksi kesalahan modem berbasis perangkat keras yang lebih canggih diperkenalkan pada awal 1990-an. Standar Sektor Standarisasi Telekomunikasi Internasional (ITU-T) V.42 dengan cepat disertakan dalam modem bersama MNP. Prosedur Akses Tautan untuk Modem (LAPM) mencakup kompresi data yang lebih unggul dibandingkan dengan MNP. Ini juga menambahkan lebih sedikit overhead ke data yang ditransmisikan dan memiliki dukungan yang lebih baik untuk kontrol aliran dan transmisi sinkron.
Protokol koreksi kesalahan modem berbasis perangkat keras bisa sangat baik untuk memastikan bahwa setiap paket data tiba dengan utuh. Namun, banyak transfer file dapat ditangani secara lebih efisien dengan menggunakan perangkat lunak dan perangkat keras secara bersamaan. Jika koneksi terputus saat mengirim file yang sangat besar, banyak sistem harus memulai dari awal file. Sebaliknya, beberapa protokol koreksi kesalahan berbasis perangkat lunak akan mengingat di mana transmisi berhenti dan melanjutkan dari sana. Protokol perangkat lunak juga dapat mengelola kontrol aliran dengan lebih baik dalam sistem di luar koneksi modem itu sendiri.
XMODEM adalah salah satu protokol koreksi kesalahan modem berbasis perangkat lunak awal yang dibuat pada akhir 1970-an. Itu sangat sederhana, termasuk nomor blok, checksum primitif dan beberapa byte penanda di setiap paket. Algoritme checksumnya bermasalah, dan banyak orang segera menerapkan variasi dengan fitur tambahan. Ini termasuk ukuran blok yang lebih besar, transfer beberapa file dan memulai paket baru sebelum yang sebelumnya diverifikasi. YMODEM, yang merupakan penerus XMODEM pada pertengahan 1980-an, mencantumkan banyak di antaranya sebagai perangkat tambahan opsional.
ZMODEM dan variannya adalah protokol koreksi kesalahan modem berbasis perangkat lunak yang jauh lebih baik. Dikembangkan pada tahun 1986 oleh penulis YMODEM, ZMODEM menyertakan algoritma CRC yang jauh lebih baik menggunakan 32 bit. Itu dapat berpindah ke paket berikutnya tanpa menunggu yang sekarang diakui, meningkatkan throughput, atau pengiriman pesan. ZMODEM juga dapat memulai ulang transfer file besar dari tempat sebelumnya jika koneksi terputus. Variasi selanjutnya termasuk ukuran blok yang lebih besar dan kompresi otomatis data paket.