tanenbaum_seti_all.pages (525408), страница 60
Текст из файла (страница 60)
Этот прием проиллюстрирован на рис. 3.4, а для четырех кадров размером 5, 5, 8 н 8 символов соответственно. Недостаток такой системы в том, что при передаче может быть искажен сам счетчик. Например, если размер второго кадра нз числа 5 станет из-за ошибки в канале числом 7, как показано на рис.
ЗА, б, то принимающая машина потеряет синхронизацию и не сможет обнаружить начало следующего кадра. Лаже если контрольная сумма не совпадет (скорее всего) и пришзмающий компьютер поймет, что кадр принят неверно, то он все равно нс сможет определить, где начало следующего кадра. Запрашивать повторную передачу калра также бесполезно, поскольку принимающий компьютер не знает, сколько символов нужно пропустить до начала повторной передачи.
По атой причине метод подсчета символов теперь практически не применяется. 228 Глава 3. Уровень передачи данных 5 1 2 3 4 5 6 7 8 9 8 О 1 2 3 4 5 6 8 7 6 9 О 1 2 3 Кадр 3 8 символов Кадр 4 8 символов Кадр 2 5 символов Кадр 1 5 символов Ошибка 5 1 2 3 4 7 6 7 8 9 8 О 1 2 3 4 5 6 9 7 8 9 О 1 2 3 Кадр 1 Кадр 2 Теперь этот символ (Неправильный) воспринимается квк счетчик Рис. 3.4.
Поток символов; беэ ошибок (а); с одной ошибкой (б) Второй метод формирования кадров решает проблему восстановления синхронизации после сбоя при помощи маркировки начала и конца каждого кадра специальными байтами. В прошлом стартовые и стоповыс байты отличались друг от друга, но в последнее время болыпинство протоколов перешло на использование в обоих случаях одного и того же байта, называемого флаговым.
Это показано на рис. 3.5, а как г(АО. Таким образом, если приемник теряет синхронизацию, ему необходимо п)юсто найти флаговый байт, с помощью которого он распознает конец текущего кадра. )[ва соседних флаговых байта говорят о том, что кончился один кадр и начался другой. гьАО Заголовок После заполнения Рио. 8.5. КадР, ограниченный флаговыми байтами (в), четыре примера байтовых последовательностей до и после символьного заполнения (б) Исходные символы А Р(АО В А ЕЗС В А ЕЗС гьАО А ЕЗС ЕЗС тчик символов Один символ ч Поле данных Концевик Г(АΠ— М ЕВС ЕьАΠ— ЕВС ЕЗС В вЂ > А ЕВС ЕЗС ЕЗС РьАΠ  — ~ А ЕЗС ЕЗС ЕВС ЕЗС В Ключевые аспекты организации уровня передачи данных 229 Этот метод иногда приводит к серьезным проблемам при передачи бинарных данных, таких как объектные коды программ нли числа с плавающей занятой В передаваемых данных запросто может встретиться последовательность, используемая в качестве флагового байта.
Возникновение такой ситуации, скорее всего, собьет синхронизацию. Одним из способов решения проблемы является добавление специального езсаре-символа (знака переключения кола, ЕЯС) непосредственно перед случайно совпавшим с флаговым байтом внутри кадра. Уровень передачи данных получателя вначале убирает эти сзсарс-символы, затем передает кадр на сетевой уровень. Такой метод называется символьным заполнешьем. Таким образом, настоящий флаг можно отличить от «подложного» по наличию или отсутствию перед ним ЕБС. Следующий логичный вопрос: а что, если и символ ЕЗС случайно окажется среди прочих данных? Решение такое же: вставить перед этим фиктивным езсаресимволом настоящий. Тогда любой одиночный ЕБС будет частью езсаре-последовательности, а двойной будет указывать на то, что служебный байт случайно оказался в потоке данных. Некоторые примеры показаны на рис.
3.8, б. В любом случае, байтовая последовательности после ее очищения от вставных символов в точности совпадает с исходной. Схема символьного заполнения, показанная на рис. 3.5, — это немного упрощенная модель протокола РРР, с помощью которого большинство домашних компьютеров соединяется с интернет-провайдером.
Мы изучим РРР в атой главе. Главный недостаток этого метода заключается и том, что он тесно связан с 8-битными символами. Между тем не во всех кодировках один символ соответствует 8 битам, Например, ()Х!СОРЕ использует 18-битное кодирование. По мере развития сетевых технологий недостатки использования длины символьного кода в механизме формирования кадров становились все очевиднее. Поэтому потребовалось создание новой техники, допускающей использование символов произвольного размера. Новый метод позволяет использовать кадры и наборы символов, состоящие из любого количества битов.
Вот как зто реализуется. Каждый кадр начинается и завершается специальной последовательностью битов, 01111110 (на самом деле это все тот же флаговый байт). Если в битовом потоке передаваемых данных встретится пять идущих подряд единиц, уровень передачи данных автоматически вставит в выходной поток пулевой бпт.
Битовое заполнение аналогично символьному, при котором в кадр перед случайно встретившимся среди данных флагом вставляется езсаре-символ. Когда принимающая сторона встречает пять единиц подряд, за которыми следует ноль, она автоматически удаляет этот ноль. Битовое заполнение, как и символьное, является абсолютно прозрачным лля сетевого уровня обоих компьютеРов. Если флаговая последовательность битов (01111110) встречается в данных пользователя, она передается в виде 011! 110! О, но в памяти принимающего компьютера сохраняется опять в исходном виде: 01111110.
На рис. 3.6 приведен пример битового заполнения. Благодаря битовому заполнению границы между двумя кадрами могут быть безошибочно распознаны с помощью флаговой последовательности. Таким обра- 230 Глава 3. Уровень передачи данных зом, если приемная сторона потеряет границы кадров, ей нужно всего лищь отыскать в полученном потоке битов флаговый байт, поскольку он встречается только на границах кадров и никогда — в данных пользователя. оттотттт(ттттт(тттттоото от)оттт(тот(()тот))т)о)оо)о Вставленные биты от(от(())тттттттттттоото Рис. 3.6.
Битовое заполнение: исходные данные (а); данные на линии (б); данные, сохраненные в памяти после удаления вставных битов (в) Наконец, последний метод формирования кадров приемлем только в сетях, в которых физический носитель обладает некоторой избыточностью. Например, некоторые локальные сети кодируют один бит данных двумя физическими битами. Обычно бит 1 кодируется парой высокого и низкого уровней сигналов (отрицательный перепад), а бит 0 — наоборот, парой низкого и высокого уровней (положительный перепад). В такой схеме каждый передаваемый бит данных содержит в середине переход, благодаря чему упрощается распознавание границ битов. Комбинации уровней сигналов (низкий — низкий и высокий †высок) не используются для передачи данных, но используются в качестве ограничителей кадров в некоторых протоколах.
В заключение разговора о кадрировании заметим, что многие протоколы передачи данных для повышения надежности применяют комбинацию счетчика символов с другим методом формирования кадра. Когда прибывает кадр, для обнаружения его конца используется счетчик. Кадр воспринимается как правильный только в том случае, если соответствующий разделитель присутствует в нужной позиции и совпадает контрольная сумма. В противном случае сканируется входной поток, в котором ищется следующий разделитель. Обработка ошибок Решив проблему маркировки начала и конца кадра,мы сталкиваемся с новой проблемой: как гарантировать доставку сетевому уровню принимающей машины всех кадров и при этом расположить их в правильном порядке.
Предположим, что отправитель просто посылает кадры, не заботясь о том, дошли ли они до адресата. Этого было бы достаточно для сервиса без подтверждений и без установления соединения, но не для ориентированного на соединение сервиса с подтверждениями. Ключевые аспекты организации уровня передачи данных 231 Обычно для гарантирования надежной доставки поставщику посылается информация о том, что происходит на другом конце линии. Протокол требует от получателя посылать обратно специальные управляющие кадры, сапер.хашие позитивные или негативные сообщения о полученных кадрах. Получив позитивное сообщение, отправитель узнает, что посланный им кадр успешно получен на том конце линии. Негативное сообщение, напротив, означает, что с кадром что-то случилось и его нужно передать снова. Кроме того, посланный кадр может из-за неисправности оборудования или какой-нибудь помехи (напримср, шума) пропасть полностью.