Эндрю Уэзеролл - Компьютерные сети. 5-е издание
- Название:Компьютерные сети. 5-е издание
- Автор:
- Жанр:
- Издательство:Питер
- Год:2011
- ISBN:9785446100682
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Уэзеролл - Компьютерные сети. 5-е издание краткое содержание
Компьютерные сети. 5-е издание - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Обычно канальный уровень разбивает поток битов на отдельные кадры и вычисляет для каждого кадра короткий маркер, называемый контрольной суммой. Контрольная сумма добавляется в кадр перед тем, как он пересылается дальше. (Алгоритмы подсчета контрольных сумм будут обсуждаться ниже в этой главе.) Когда кадр прибывает в пункт назначения, его контрольная сумма подсчитывается снова. Если она отличается от содержащейся в кадре, то канальный уровень понимает, что при передаче кадра произошла ошибка, и принимает меры (например, игнорирует испорченный кадр и посылает передающей машине сообщение об ошибке).
Разбиение потока битов на отдельные кадры представляет собой более сложную задачу, чем это может показаться на первый взгляд. В хорошей системе приемник с легкостью находит отметки начала новых кадров, минимально нагружая полосу пропускания. Мы рассмотрим четыре метода маркировки границ кадров.
1. Подсчет количества байтов.
2. Использование сигнальных байтов с символьным заполнением.
3. Использование сигнальных битов с битовым заполнением.
4. Использование запрещенных сигналов физического уровня.
Первый метод формирования кадров использует поле в заголовке для указания количества байтов в кадре. Когда канальный уровень на принимающем компьютере видит это поле, он узнает, сколько байтов последует, и таким образом определяет, где находится конец кадра. Этот прием проиллюстрирован на рис. 3.3, а для четырех небольших кадров размером 5, 5, 8 и 8 байтов соответственно.
Недостаток такой системы в том, что при передаче может быть искажен сам счетчик. Например, если размер второго кадра из числа 5 станет из-за ошибки в единственном бите числом 7, как показано на рис. 3.3, б, то принимающая машина потеряет синхронизацию и не сможет правильно обнаружить начало следующего кадра. Даже если контрольная сумма не совпадет (скорее всего) и принимающий компьютер поймет, что кадр принят неверно, то он все равно не сможет определить, где начало следующего кадра. Запрашивать повторную передачу кадра также бесполезно, поскольку принимающий компьютер не знает, сколько байтов нужно пропустить до начала повторной передачи. По этой причине метод подсчета байтов отдельно от других теперь практически не применяется.
Второй метод формирования кадров решает проблему восстановления синхронизации после сбоя при помощи маркировки начала и конца каждого кадра специальными байтами. Зачастую в качестве разделителя используется один и тот же байт, называемый флаговым. Он устанавливается в начале и в конце кадра. Этот байт помечен на рис. 3.4, а как FLAG. Два соседних флаговых байта говорят о том, что кончился один кадр и начался другой. Таким образом, если приемник теряет синхронизацию, ему необходимо просто найти два флаговых байта, с помощью которых он распознает конец текущего кадра и начало следующего.
Рис. 3.3.Поток байтов: а — без ошибок; б — с одной ошибкой
Однако одна проблема все же остается. В передаваемых данных, особенно если это двоичные данные, такие как фотографии или музыка, запросто может встретиться последовательность, используемая в качестве флагового байта. Возникновение такой ситуации, скорее всего, собьет синхронизацию. Одним из способов решения проблемы является добавление специального escape-символа (знака переключения кода, ESC) непосредственно перед случайно совпавшим флаговым байтом внутри кадра. Таким образом, настоящий флаг можно отличить от «подложного» по наличию или отсутствию перед ним ESC. Канальный уровень получателя вначале убирает эти escape-символы, затем передает кадр на сетевой уровень. Такой метод называется символьным заполнением( byte stuffing).
Следующий логичный вопрос: а что если и символ ESC случайно окажется среди прочих данных? Решение такое же: вставить перед этим фиктивным escape-символом настоящий. На стороне получателя первый символ ESC будет удален, а следующий байт данных останется, даже если это еще один байт ESC или флаговый байт. Некоторые примеры показаны на рис. 3.4, б. В любом случае, байтовая последовательность после ее очищения от вставных символов в точности совпадает с исходной. Найти границу кадра можно все так же по двум последовательным флаговым байтам до удаления дополнительных символов ESC.
Схема символьного заполнения, показанная на рис. 3.4, — это немного упрощенная модель протокола PPP( Point-to-Point Protocol, протокол «точка-точка»), с помощью которого пакеты передаются по коммуникационным каналам. Мы изучим PPP в конце этой главы.
Третий метод разделения потока битов на кадры позволяет обойти недостатки символьного заполнения, которое обязывает использовать исключительно 8-битные байты. Делить данные на кадры можно на уровне бит, причем кадры могут содержать произвольное число бит и состоять из блоков любого размера. Данный метод был разработан для некогда популярного протокола HDLC( High-level Data Link Control— высокоуровневый протокол управления каналом передачи данных). Каждый кадр начинается и завершается специальной последовательностью бит, 01111110 (или 0x7E в шестнадцатеричной системе). Это все тот же флаговый байт. Если в битовом потоке передаваемых данных встретится пять идущих подряд единиц, уровень передачи данных автоматически вставит в выходной поток нулевой бит. Битовое заполнение( bit stuffing) аналогично символьному, при котором в кадр перед случайно встретившимся среди данных флагом вставляется escape-символ. Он также гарантирует минимальную плотность передачи, помогающую сохранять синхронизацию на физическом уровне. По этой причине битовое заполнение применяется в протоколе USB ( Universal Serial Bus — универсальная последовательная шина).
Рис. 3.4. Кадр, ограниченный флаговыми байтами (а); четыре примера байтовых последовательностей до и после символьного заполнения (б)
Когда принимающая сторона встречает пять единиц подряд, за которыми следует ноль, она автоматически удаляет этот ноль. Битовое заполнение, как и символьное, является абсолютно прозрачным для сетевого уровня обоих компьютеров. Если флаговая последовательность битов (01111110) встречается в данных пользователя, она передается в виде 011111010, но в памяти принимающего компьютера сохраняется опять в исходном виде: 01111110. На рис. 3.5 приведен пример битового заполнения.
Читать дальшеИнтервал:
Закладка: