Р.Л. Смелянский - Компьютерные сети. Том 1. Системы передачи данных (1130069), страница 26
Текст из файла (страница 26)
Если подтверждение не пришло в течение определенного промежутка времени, считается, что кадр не принят и должен быть послан снова. Этот вид сервиса используется в ненадежной физической среде передачи, например беспроводной. Можно бьгло бы, конечно, полтверждать не кадры, а все сообщение целиком на сетевом уровне, однако это становится невыгодным при передаче больших сообщений.
Например, если при передаче больших сообщений разрушится 10...20% кадров, то повторная их передача займет больше времени, чем передача отдельных фрагментов. Поэтому подтверждение, выполняемое на канальном уровне, следует рассматривать как минимизацшо затрат на передачу данных, а не необходимость. Наиболее вьюжный вид сервиса на канальном уровне — это сервис с соединением и уведомлением, который предполагает, что до начаша передачи между машинами устанавливается соединение и данные передаются по этому соединению. При этом каждый передаваемый кадр нумеруется, и канальный уровень гарантирует, что он будет обязательно получен, причем только один раз, а также что все кадры !)2 ' ~'-'-";.'-~:;:.: будут получены в надлежащей последовательности. При сервисе без .соединения этого гарантировать нельзя, поскольку потеря подтверж;-., ' дания получения кадра приведет к его повторной пересылке, что, в свою очередь, может привести к появлению нескольких идентичных кадров.
Использование сервиса с соединением особенно полезно в том случае, когда канал формирует СПД В СПД может быть достаточно сложная организация канала передачи, при которой коммутация потоков данных происходит самыми разными способами В гл.
5 рассматриваются различные типы сервиса в разных СПД, ,, ° атакже показывается, как за счет использования поля номеРа кадра 1'"- переменной длины можно повысить эффективность применения .!-„. канала для различных видов сервиса и оптимизировать затраты на поддержку соединения При использовании сервиса с соединением и уведомлением пере: дача данных разбивается на три этапа. На первом этапе устанавли,';;- дается соединение: на обеих машинах инициируются переменные и ,,'":.,' счетчики, отслеживающие то, с какими номерами кадры были при= пяты, а с какими нет. На втором этапе передаются требуемые кадры, , -- ' а,на третьем этапе соединение разрывается; переменные, счетчики, буферы и другие ресурсы, использованные для поддержки соедине' -!',:ч ния, освобождаются 4.
г.2. Разбиение на кадры Сервис, создаваемый канальным уровнем для сетевого уровня, -'„::";: опирается на сервис, создаваемый физическим уровнем. На физиче- .~'::!;:;ском уровне принимаются и передаются потоки битов. Нельзя пред:.;.;:: полагать, что число отправленных битов должно быть равно числу ;!,' Принятых битов, а значение посланного бита также не обязательно '::;;; должно быть равно значению принятого бита.
Следовательно, на :,',' канальном уровне необходимы специальные действия для обнаруже„' ",.;ция и исправления таких ошибок Типовой подход к решению подобных проблем — это разбиение Пакета сетевого уровня на кадры, подсчет контрольной суммы сим::"; валов для каждого кадра и передача этой суммы вместе с кадром. При приеме контрольная сумма вычисляется лля каждого кадра заново и :.
' сравнивается с той суммой, которая пришла с кадром. Различие этих ,. "~: сумм является признаком ошибки передачи. На канальном уровне ,:,, необходимо принять меры по исправлению ошибки, например сбросить плохой кадр и послать сообщение об ошибке тому, кто прислал этот кадр Также на канальном уровне рсшается задача разбиения потока битов на кадры при приеме, например делая паузу между битами Разных кадров. Однако в сети, где нет единого таймера, нет и гарантии„что эта пауза всегда будет одинаковой или, наоборот, что не 7' появится новая пауза там, где се не должно было быть 113 Поскольку методы, использующие временные задержки, ненадежны, необходимо рассмотреть другие методы разбиения: ° использование счетчиков символов; ° вставка специальных стартовых и конечных символов; » вставка стартовых и концевых битов; ° нарушение кодировки на физическом уровне.
Идея первого метода заключается в том, что в начале каждого кадра указывают, сколько символов в кадре, При приеме кадра подсчитывают число принятых символов. Если число полученных символов отличается от числа, указанного в начале кадра, то этот факт воспринимается как ошибка. Однако этот метод разбиения имеет существенный недостаток: счетчик символов может быть искажен при передаче и тогда принимающая сторона не сможет обнаружить границы кадра.
Даже обнаружив несовпадение контрольных сумм, принимающая сторона не сможет сообщить передающей стороне, какой кадр следует переслать и сколько символов пропало, поэтому данный метод сейчас используется редко. Следующий метод разбиения на кадры основан на вставке специальных символов. Обычно в этом случае для начала кадра используется последовательность символов РЕЕ БТХ, а для конца кадра— Р1.Е ЕТХ. Р1.Е (Рага Ь|п)г Езсаре), ЯТХ (Яап ТеХг), ЕТХ (Енса ТеХ1) — это специальные символы, имеющие специальную кодировку. При использовании этого метода, если даже была потеряна граница текущего кадра, требуется просто найти ближайший специальный символ РЬЕ ЯТХ или РЕЕ ЕТХ.
Однако здесь имеется одна опасность: при передаче чисел или программы в обьектном коде такие последовательности могут уже содержаться в передаваемых данных. Для решения этой проблемы используют прием экранирования: каждая последовательность РЕЕ ЯТХ просто дублируется в передаваемых данных. Следовательно, если при приеме получены две последовательности Р1.Е, то одну из них удаляют. Основным недостатком рассмотренного метода является его жесткая связь с размером байта и конкретным методом кодировки символов — АЬСП, которая по мере развития сетей становилась все более и более обременительной. Кроме того, на стороне отправителя в этом случае необходимо просматривать кадр, чтобы обнаружить недопустимые байтовые последовательности. Идея другого предложенного приема, позволяющего использовать любое число битов на символ и любую кодировку, состоит в том, что каждый кадр начинается и заканчивается специальной последовательностью битов (флагом) 01111110.
Чтобы избежать появления аналогичной последовательности внутри кадра, поступают следующим образом. Посылаюгцая сторона, встретив последовательность из пяти единиц, обязательно вставит нуль. Принимающая сторона, приняв последовательность из пяти единиц, обязательно удалит следующий !14 .,."",~~.,"!.:::.эгаз ней нуль. Таким образом, если в передаваемых данных встретится '-:;;:!",:,:конфигурация Флага, то она будет преобразована в конфигурацию ,..., бцц1б1О.
Кадр легко распознается по флагу, н если 1раница очередного кадра по какой-то причине была потеряна, то все что следует сделать — это япойматья ближайший флаг. Последний метод разбиения — нарушение кодировки — используется там, где применяется специальная кодировка битов на Физическом уровне.
Пусть для передачи одного бита используются два ! единичных сигнала, например как в манчестерском коде, где елиница кодируется как переход высокое — низкое, а нуль — как переход "-'„Низкое — высокое. Сочетания низкое — низкое или высокое — высокое „'. не используются для передачи данных, поэтому их и применяют для обозначения границ кадра На практике для разбиения на кадры используют, как правило, ~!;::,!';;комбинацию рассмотренных методов, например счетчик символов ;-:; комбинируют с одним из перечисленных методов. Тогда если число ;:,', 'сймволов в кадре совпадает с кодировкой его границы, кадр счита:;, ' ется переданным правильно 4.
1.3. Сохранение последовательности кадров Решив проблему разбиения на кадры, приходим к необходимости ':; .решения следующей проблемы: обеспечение попадания на сетевой ,'%~~:::уровень всех кадров в надлежащей последовательности. Для решения ''"."::: этой проблемы устанавливают обратную связь между отправителем ,. ';.';.;!"ти получателем в виде кадра подтверждения. Если кадр-подтверждение ."".;:;::;::.Несет положительную информацию, то считается, что переданные '.:-;; '",'кадры прошли нормально, если же в нем имеется сообщение об ';;;,- ошибке, то все или часть переданных кадров надо передавать зано!.;:-." во. Однако возможны ситуации, когда из-за ошибок в канале кадр ;-".;.'-: ~;-'„,может исчезнуть целиком. В этом случае получатель не будет никак :Я:": "',.-'. Реагировать, а отправитель может сколь угодно долго хгдать подтверж:, '- дения, Для решения этой проблемы на канальном уровне используЮтся таймеры„т.е.
сразу после передачи очередного кадра устанавЛивают таймер на определенное время, которого должно хватать на то, чтобы получатель получил кадр и отправил уведомление, а отПравитель получил его. Заметим, что определить это время не так-то просто и его значение может изменяться в течение передачи При этом если отправитель не получит уведомление раньше, чем истечет время, установленное на таймере, то он будет считать, что кадр потерян и отправит его еще раз Олнако если был утерян кадр-подтверждение, то вполне возможно, что один и тот же кадр получатель получит дважды.
для решения ч'.:;. 1!5 этой проблемы каждому кадру присваивается порядковый номер, с помогцью которого получатель может обнаружить дубли. Итак, таймеры и нумерация калров — это основные средства на канальном уровне„обеспечивающие доставку каждого кадра в единственном экземпляре и в требуемом порядке. 4. 1.4. Управление потоком Другая важная проблема, которую необходимо решать на канальном уровне, — управление потоком. Может случиться так, что отправитель будет посылать кадры столь часто, что получатель не будет успевать их обрабатывать.
Это возможно, например, если машина- отправитель более могцная или загружена слабее, чем машина- получатель. Для борьбы с такими ситуациями. вводится специальный механизм управления потоком. Этот механизм предполагает наличие обратной связи между отправителем и получателем, которая позволит им регулировать темп передачи. Существует много схем управления потоком, но все они в основе своей используют следующий сценарий.
Прежде чем начать передачу отправитель спрашивает у получателя, сколько кадров тот может принять. Получатель сообщает ему эти данные. Отправитель после передачи указанного ему числа кадров должен приостановить передачу и запросить у получателя еше раз, сколько кадров тот может принять в этот раз, и т.д. Далее на примерах мы познакомимся с конкретными механизмами управления потоком. 4. 1.5. Обнаружение и исправление ошибок При рассмотрении физической среды отмечалось, что в беспроводных и аналоговых каналах достаточно высок уровень ошибок, т, е. ошибки при передаче на физическом уровне — это реальность, которую надо обязательно учитывать. В разных средах характер ошибок разный.