Лекции 2010-го года (1130544), страница 34
Текст из файла (страница 34)
По-видимому, в недалеком будущемразвитие средств связи в целом приведет к иной форме восприятия мира и новому этапуразвития цивилизации.125Курс Компьютерные сети.Глава 3. Канальный уровеньРаздел 3.1. Проблемы, решаемые на уровне канала данных.3.1.1. Сервис, предоставляемый сетевому уровню3.1.2. Разбиение на кадры3.1.3. Обнаружение ошибок3.1.4.
Управление потокомРаздел 3.2. Обнаружение и исправление ошибок.3.2.1. Коды с исправлением ошибок3.2.2. Коды с обнаружением ошибокРаздел 3.3. Простейшие протоколы канала данных.3.3.1. Симплексный протокол без ограничений3.3.2. Симплексный старт-стопный протокол3.3.3. Симплексный протокол для канала с шумомРаздел 3.4. Протокол скользящего окна.3.4.1. Протокол скользящего окна в 1 бит3.4.2. Протокол с возвратом на n кадров и протокол с выборочным повторомРаздел 3.5.
Примеры протоколов канала данных.3.5.1. Протокол HDLC (High Level Data Link Control)3.5.2. Frame Relay3.5.2.1. Проблемы стандартизации3.5.2.2. Логическая характеристика протокола FR3.5.2.3. Процедурная характеристика протокола FR3.5.2.4. Управление доступом и защита от перегрузок3.5.3. Уровень канала данных в Интернете3.5.3.1.
SLIP - Serial Line IP13.5.3.2. PPP - протокол «точка-точка»3.5.4. Уровень канала данных в ATM3.5.4.1. Передача ячеек3.5.4.2. Прием ячеек2В этой главе рассматриваются алгоритмы надежной и эффективной передачи данныхмежду двумя соседними машинами. Под словом «соседние» мы понимаем то, что этимашины физически соединены проводом. Под проводом мы будем понимать любуюфизическую среду передачи данных, для которой справедливо, что биты поступаютполучателю точно в той последовательности, в какой их послал отправитель. Эта, простая,на первый взгляд, задача при детальном рассмотрении оказывается весьма сложной, еслиучесть, что при передаче по каналу могут возникать ошибки, возникают задержки,которые могут вызывать дублирование данных, и т.д.Раздел 3.1.
Проблемы, решаемые на уровне каналаданныхНа уровне канала данных решается ряд проблем, присущих только этому уровню:реализация сервиса для сетевого уровня, объединение битов, поступающих с физическогоуровня в кадры, обработка ошибок передачи, управление потоком кадров и другие.3.1.1.
Сервис, предоставляемый сетевому уровнюОсновная задача канального уровня - обеспечить сервис сетевому уровню по передаче иприему данных. Назначение этого сервиса - передать данные от процесса на сетевомуровне одной машины процессу на сетевой уровень другой машины. Как это происходит,показано на рисунке 3-1 (а). Фактически процесс передачи сложнее, чтопроиллюстрировано на рисунке 3-1 (b). Однако для простоты изложения мы будемпридерживаться первой схемы.Рисунок 3-1. Передача данных - виртуальная (a), фактическая (b)Канальный уровень может обеспечивать различный сервис. Хотя этот сервис можетварьироваться от системы к системе, есть три общих видов сервиса:1.Сервис без уведомления и без соединения2.Сервис с уведомлением и без соединения3.Сервис с уведомлением и с соединением3Сервис без уведомления и без соединения не предполагает, что до начала передачидолжно быть установлено соединение, которое после передачи должно быть разорвано,что факт приема переданного кадра должен подтверждаться специальным сообщением.Если в результате помех на физическом уровне кадр будет потерян, то никаких попытокего восстановить на канальном уровне произведено не будет.
Этот класс сервисаиспользуется там, где физический уровень обеспечивает настолько высокую надежностьпри передаче, что потери кадров происходят редко и восстановление при потере кадровможно переложить на верхние уровни. Этот вид сервиса также применяют при передачеданных в реальном времени там, где лучше потерять часть данных, чем увеличитьзадержку при их доставке. Например, передача речи, видео изображения. БольшинствоЛВС использует этот вид сервиса на канальном уровне.Следующий вид сервиса – сервис с уведомлением без соединения. В этом виде сервисаполучение каждого посланного кадра должно быть подтверждено. Если подтверждения непришло в течение определенного промежутка времени, то считают, что кадр не принят идолжен быть послан опять. Этот вид сервиса используется в ненадежной физическойсреде передачи, например, беспроводной.Можно было бы, конечно, подтверждать не кадры, а все сообщение целиком на сетевомуровне.
Однако это было бы невыгодно для больших сообщений. Например, если припередаче этих данных разрушалось бы 10-20% кадров, то повторная передача такихсообщений заняла бы больше времени, чем передача их отдельных фрагментов. Поэтомуподтверждение на канальном уровне следует рассматривать как минимизацию затрат напередачу данных, а не необходимость.Наиболее сложный класс сервиса на канальном уровне - сервис с соединением иуведомлением. Этот класс сервиса предполагает, что до начала передачи междумашинами устанавливают соединение и данные передают по этому соединению. Каждыйпередаваемый кадр нумеруется, и канальный уровень гарантирует, что он будетобязательно получен, причем только один раз, а также что все кадры будут получены внадлежащей последовательности.
При сервисе без соединения этого гарантировать нельзя,потому что потеря подтверждения получения кадра приведет к его пересылке, что, в своюочередь, приведет к появлению нескольких идентичных кадров. Использование сервиса ссоединением особенно полезно в том случае, когда канал образует СПД. Как мы ужевидели, в СПД может быть достаточно сложная организация канала, при которой можетпроисходить коммутация потоков данных самыми разными способами. Здесь полезновспомнить структуру кадра в Х.25, рассмотренную в разделе 2.3. С точки зренияструктуры, в Х.25 есть три вида кадров: с 3-битовым полем номера кадра, 7- и 12битовым.
Таким образом, в Х.25 предусмотрен сервис с соединением, причем, взависимости от длины передаваемых данных, можно оптимизировать затраты наподдержку соединения.При сервисе с соединением и уведомлением передача данных разбивается на три этапа.На первом этапе устанавливают соединение: на обеих машинах инициируют переменныеи счетчики, отслеживающие, кадры с какими номерами были приняты, а с какими нет. Навтором этапе передают нужные кадры. На третьем - соединение разрывают: переменные,счетчики, буферы и другие ресурсы, использованные для поддержки соединения,освобождают.На рисунке 3-2 показан типичный фрагмент WAN, где два маршрутизатора соединенычерез телефонную линию.
Когда кадр поступает на маршрутизатор, аппаратура проверяетконтрольную сумму и передает кадр канальному уровню. Канальный уровень проверяет,4является ли поступивший кадр ожидаемым, и если да, то передает пакет, расположенныйв кадре, сетевому уровню на другой машине.Рисунок 3-2. Размещение протокола канального уровня3.1.2. Разбиение на кадрыСервис, создаваемый канальным уровнем для сетевого уровня, опирается на сервис,создаваемый физическим уровнем.
На физическом уровне принимают и передают потокибитов. Отправленное количество битов не обязательно должно быть равно принятомуколичеству битов, значение посланного бита также не обязательно должно быть равнопринятому значению бита. Поэтому на канальном уровне нужны специальные действия пообнаружению и исправлению таких ошибок.Типовой подход к решению подобных проблем - разбиение потока битов на кадры,подсчет контрольной суммы для каждого кадра и передача этой суммы вместе с кадромданных. При приеме контрольная сумма вычисляется для каждого кадра заново исравнивается с той, что хранится в кадре.
Если они различаются, то это признак ошибкипередачи. На канальном уровне должны быть приняты меры к исправлению ошибки,например, сбросить плохой кадр и послать сообщение об ошибке тому, кто прислал этоткадр.Разбиение потока битов на кадры - задача не простая. Один из способов - делать паузумежду битами разных кадров. Однако в сети, где нет единого таймера, нет гарантии, чтоэта пауза всегда будет одинаковой, или, наоборот, не появится новая пауза там, где ее недолжно было быть.Так как методы, использующие временные задержки, не надежны, применяются другиеметоды. Здесь мы рассмотрим четыре основных метода:1.счетчик символов2.вставка специальных стартовых и конечных символов3.вставка стартовых и концевых битов4.нарушение кодировки на физическом уровне5Первый метод показан на рисунке 3-3.
В начале каждого кадра указывают, сколькосимволов в кадре. При приеме кадра вновь подсчитывают число принятых символов. Есличисло полученных символов отлично от ожидаемого числа, то этот факт воспринимаюткак ошибку. Однако этот метод имеет существенный недостаток: счетчик символов можетбыть искажен при передаче. Тогда принимающая сторона не сможет обнаружить границыкадра. Даже обнаружив несовпадение контрольных сумм, принимающая сторона несможет сообщить передающей, какой кадр надо переслать и сколько символов пропало.Этот метод сейчас используется редко.Рисунок 3-3.
Поток символов: (а) без ошибок; (b) с одной ошибкойВторой метод построен на вставке специальных символов. Обычно для этого используютпоследовательность символов DLE STX для начала кадра и DLE ETX для конца кадра.DLE (Data Link Escape), STX (Start TeXt), ETX (End TeXt) – это специальные символы,имеющие специальную кодировку. При этом методе, если даже была потеряна границатекущего кадра, нужно просто найти ближайшую последовательность DLE STX или DLEETX. Однако здесь есть одна опасность: при передаче чисел или программы в объектномкоде такие последовательности могут уже содержаться в передаваемых данных.
Длярешения этой проблемы используют прием экранирования: каждая последовательностьDLE или STX просто дублируется в передаваемых данных. Поэтому, если при приеме естьдва последовательных DLE, то один удаляется. Этот метод проиллюстрирован на рисунке3-4.Рисунок 3-4. Метод экранированияОсновным недостатком только что рассмотренного метода является то, что он жесткосвязан с размером байта и конкретным методом кодировки символов - ASCII.
По мере6развития сетей эта связь становилась все более и более обременительной. Кроме этого, настороне отправителя надо было просматривать кадр, чтобы обнаружить недопустимыепоследовательности.Был предложен иной прием, позволяющий использовать любое число битов на символ илюбую кодировку. Его идея состоит в том, что каждый кадр начинается и заканчиваетсяспециальным флаг-байтом: 01111110. Чтобы избежать аналогичной последовательности,внутри кадра поступают следующим образом. Посылающая сторона, встретивпоследовательно 5 единиц, обязательно вставит 0. Принимающая сторона, приняв 5последовательных единиц, обязательно удалит следующий за ними 0. Таким образом,если в передаваемых данных встретится конфигурация флаг-байта, то она будетпреобразована в конфигурацию 011111010. Этот метод иллюстрирует рисунок 3-5.