3.2 Уровень канала передачи данных. Протокол с остановками и ожиданиями. Протокол с N-возвращениями. Протокол с выборочным повторением. Протокол ВУК. Структура кадра ВУК.
1. Уровень канала передачи данных (Data Link Layer)
Место в модели OSI: Второй уровень (L2).
Основная задача: Обеспечение надежной передачи данных между двумя соседними узлами (узлами в одной физической сети) через физическую среду (которая может быть ненадежной). Уровень канала принимает пакеты от сетевого уровня (L3) и инкапсулирует их в кадры (frames), добавляя управляющую информацию.
Ключевые функции:
- Фрейминг (Кадрирование): Разбиение потока бит на логические блоки (кадры) с выделением начала и конца.
- Управление доступом к среде (MAC): Если среда общая (например, Ethernet-хаб), регулирует, кто и когда может передавать.
- Обнаружение и коррекция ошибок: Добавление контрольных сумм (CRC) для проверки целостности.
- Управление потоком (Flow Control): Предотвращение переполнения буфера приемника.
- Управление соединением: Установление и разрыв логического соединения (в режимах с подтверждением).
2. Протоколы с исправлением ошибок на основе повторной передачи (ARQ)
Физический канал всегда вносит шум. Для борьбы с этим используются протоколы ARQ (Automatic Repeat reQuest — автоматический запрос повторной передачи). Все они базируются на трех правилах:
- Отправитель посылает кадр.
- Получатель либо подтверждает (ACK — Acknowledgment), либо просит повторить (NAK — Negative Acknowledgment).
- Если ответ не пришел за тайм-аут, кадр отправляется заново.
Рассмотрим три основных типа, различающихся по эффективности (использованию пропускной способности) и сложности.
2.1. Протокол с остановками и ожиданиями (Stop-and-Wait ARQ)
Принцип работы: Это самый простой протокол. Отправитель передает один кадр и останавливается, ожидая подтверждения (ACK) от получателя. Только получив ACK, он отправляет следующий кадр.
Проблема дублей: Чтобы отличить новый кадр от повторного (если ACK задержался или потерялся), используются номера кадров (Sequence Numbers) — достаточно 1 бита (0 и 1), которые чередуются.
Достоинства:
- Максимальная простота реализации.
- Минимальный объем буферной памяти (хранить нужно только 1 кадр).
Недостатки:
- Низкая эффективность при больших задержках (High Latency) и высокой скорости (High Bandwidth). Канал простаивает большую часть времени. Это явление называется проблемой “длинного трубопровода” (Bandwidth-Delay Product).
2.2. Протокол с N-возвращениями (Go-Back-N ARQ)
Принцип работы: Отправитель может передавать N кадров подряд (окно отправки) без ожидания подтверждения на каждый, поддерживая конвейер (pipelining).
- Размер окна отправления = ( N ).
- Получатель имеет буфер всего на 1 кадр. Он принимает кадры строго по порядку.
Обработка ошибок:
- Если пришел кадр с ошибкой или не тот номер, который ожидался, получатель молчит (не отправляет ACK) или отправляет NAK для последнего корректно принятого кадра.
- У отправителя срабатывает таймер. Он останавливается и возвращается назад к последнему неподтвержденному кадру и повторно отправляет все кадры, начиная с этого номера (весь хвост окна), даже если они уже отправлялись ранее.
Пример: Отправлено 0,1,2,3,4. Потерялся кадр №2. Получатель отбрасывает №3 и №4 (так как ждал №2). Отправитель таймаутит и шлет заново 2,3,4.
Достоинства:
- Лучше использует канал, чем Stop-and-Wait.
Недостатки:
- Ужасная эффективность при высоком уровне ошибок (BER — Bit Error Rate), так как приходится пересылать много лишних (уже принятых) кадров.
- Требует буфер у отправителя для хранения N кадров.
2.3. Протокол с выборочным повторением (Selective Repeat ARQ)
Принцип работы: Это модернизация Go-Back-N. Отправитель также передает окно из N кадров. Но главное отличие — приемник имеет буфер на N кадров и может принимать кадры не по порядку.
Обработка ошибок:
- Если потерялся кадр №2, но пришли №3 и №4, приемник буферизирует №3 и №4 и отправляет отдельный NAK (или отрицательное подтверждение) именно на №2.
- Отправитель повторно посылает только потерянный кадр №2 (выборочно), а не весь хвост.
- Как только №2 получен, все буферизированные кадры собираются в правильном порядке и передаются выше (сетевому уровню).
Важное ограничение: Размер окна ( N ) не может быть больше половины диапазона номеров последовательности (( N \le \frac{2^m}{2} )), иначе возникнет путаница между старыми и новыми кадрами при наложении номеров.
Достоинства:
- Максимальная эффективность при высоких ошибках.
- Оптимальное использование пропускной способности.
Недостатки:
- Сложность реализации (нужна сортировка, управление окнами приема и отправки).
- Больший расход памяти (буфер приемника).
3. Протокол ВУК (High-Level Data Link Control — HDLC)
HDLC (High-Level Data Link Control) — это базовый стандартный протокол уровня канала, разработанный ISO. Он является “прародителем” многих современных протоколов (в частности, PPP и Ethernet-инкапсуляции). В русскоязычной литературе часто используется аббревиатура ВУК (Высокоуровневый Управляющий Каналом).
Ключевая особенность: HDLC — это бит-ориентированный протокол. Это значит, что управление осуществляется не байтами (символами), а отдельными битами. Для указания границ кадра используется специальный флаг.
3.1. Структура кадра ВУК (HDLC Frame)
Кадр HDLC состоит из 6 полей (все поля, кроме данных, имеют фиксированную длину):
| Поле | Размер (бит) | Назначение |
|---|---|---|
| Флаг (Flag) | 8 (01111110) | Отмечает начало и конец кадра. Служит для синхронизации. |
| Адрес (Address) | 8 (или больше) | Указывает адрес получателя (вторичной станции). В расширенных режимах может быть широковещательным. |
| Управление (Control) | 8 или 16 | Самый важный байт. Определяет тип кадра (команда/ответ) и механизм управления (нумерация кадров, запросы). |
| Данные (Information) | Переменная (до 512 б) | Непосредственно полезная нагрузка (пакеты вышестоящих уровней). Может отсутствовать. |
| Контрольная сумма (FCS) | 16 или 32 | CRC (Cyclic Redundancy Check) для обнаружения ошибок во всех полях, кроме флага. |
| Флаг (Flag) | 8 (01111110) | Закрывающий флаг. |
3.2. Детальный разбор поля “Управление” (Control Field)
Именно по этому полю определяется, какой тип ARQ используется. Битовая структура разделяет кадры на 3 типа:
1. Информационные кадры (I-frames) — Передача данных
- Бит 0 = 0.
- Содержат поле N(S) — номер отправляемого кадра (Sequence Number).
- Содержат поле N(R) — номер ожидаемого кадра от получателя (Piggybacking — совмещение подтверждения с данными).
- Используются для реализации Выборочного повторения или Go-Back-N (зависит от настройки).
2. Управляющие кадры (S-frames) — Управление потоком и ошибками
- Биты 0,1 = 1,0.
- Нет поля данных (только заголовок).
- Содержат подтип (код) в битах 2 и 3:
- 00 – RR (Receiver Ready): Подтверждение, приемник готов, передавайте дальше (положительный ACK).
- 01 – RNR (Receiver Not Ready): Подтверждение, но приемник занят (пауза, остановите передачу).
- 10 – REJ (Reject): Отрицательное подтверждение (NAK). Требование повторной отправки всех кадров, начиная с N(R) — используется для Go-Back-N.
- 11 – SREJ (Selective Reject): Выборочный отказ. Требование повторной отправки только одного кадра с номером N(R) — используется для Selective Repeat.
3. Ненумерованные кадры (U-frames) — Управление соединением
- Биты 0,1 = 1,1.
- Используются для установления и разрыва логического соединения (режимы SABM, DISC), а также для аварийных остановок (FRMR — Frame Reject). Не содержат номеров последовательности.
3.3. Механизм “Бит-стаффинг” (Bit Stuffing)
Так как флаг — это последовательность 01111110 (шесть единиц подряд), возникает риск, что внутри поля данных встретится такая же комбинация, и приемник ошибется, думая, что кадр закончился.
Решение: Отправитель (передатчик) следит за потоком бит. Если он видит пять единиц подряд (11111) в данных, он автоматически вставляет 0 (ноль) после них. Приемник, наоборот, видя пять единиц, проверяет следующий бит:
- Если следующий бит = 0, он его удаляет (это служебный бит).
- Если следующий бит = 1 (т.е. получилось 1111110) — это флаг конца кадра.
3.4. Режимы работы ВУК (HDLC Modes)
Протокол определяет три типа станций и три режима взаимодействия:
- NRM (Normal Response Mode): Асимметричный режим. Первичная станция (Master) управляет вторичной (Slave). Вторичная может передавать только по разрешению первичной. (Использовался в мейнфреймах).
- ARM (Asynchronous Response Mode): Асимметричный, но вторичная станция может начинать передачу без явного разрешения (но инициатива все равно за первичной).
- ABM (Asynchronous Balanced Mode): Самый популярный. Симметричный режим. Обе станции равноправны (комбинированные) и могут инициировать передачу в любой момент. Именно этот режим используется в протоколе PPP и в качестве основы для канального уровня в современных сетях.
Итоговое резюме
- Stop-and-Wait — работает, где задержки минимальны (или ресурсы критичны), но неэффективен для спутниковой связи и Gigabit-сетей.
- Go-Back-N — компромисс между простотой и скоростью, но “паникует” при частых ошибках.
- Selective Repeat — “король” производительности, требует сложной логики и больших буферов.
- ВУК (HDLC) — реализует все три стратегии через поле Control, решает проблему уникальности данных через бит-стаффинг и лежит в основе многих современных WAN-технологий.