Протоколы канального уровня обеспечивают обнаружение и исправление ошибок, возникающих при передаче данных, с помощью различных методов. 2
Для обнаружения ошибок канальный уровень использует, например:
- Контроль чётности. 3 К данным добавляется один бит чётности (парный или непарный). 3 При парном контроле число единиц в данных (включая бит чётности) должно быть чётным, при непарном — число единиц должно быть нечётным. 3
- Контроль по модулю 2. 3 Суммируются все биты данных, и результат записывается в контрольное поле. 3 При получении данных получатель вычисляет сумму и сравнивает с переданным значением. 3
- Циклический избыточный код (CRC). 3 Данные интерпретируются как многочлен, который делится на заранее заданный делитель. 3 Остаток от деления (CRC) добавляется к кадру. 3 При приёме данных выполняется та же операция: если остаток равен 0, данные считаются корректными. 3
- Контроль длины кадра. 3 Заголовок кадра содержит поле длины. 3 Если реальная длина не совпадает с указанной, это признак ошибки. 3
Для исправления ошибок канальный уровень использует, например:
- Повторную передачу данных (ARQ). 23 Если обнаружена ошибка, приёмник запрашивает повторную отправку данных. 3 Существует несколько типов ARQ: Stop-and-Wait ARQ, Go-Back-N ARQ и Selective Repeat ARQ. 2
- Коды с исправлением ошибок (FEC). 3 Дополнительные биты (избыточность) добавляются для автоматического исправления ошибок без повторной передачи. 3 Примеры: коды Хэмминга, Рида-Соломона. 3
- Двойное резервирование. 3 Данные передаются дважды, и сравниваются полученные копии. 3 Используется в критически важных системах (например, в авиации). 3
Функция исправления ошибок не является обязательной для канального уровня, поэтому в некоторых протоколах этого уровня она отсутствует, например, в Ethernet и frame relay. 1