Р.Л. Смелянский - Компьютерные сети. Том 1. Системы передачи данных (1130069), страница 29
Текст из файла (страница 29)
В этом случае п ".;:-;-";:,,'1один или несколько кадров, отправляет отправите ".;.,":4Льный кадр, означающий, что отправитель мо ::,:дующий кадр. Приведем этот так называемый с "; -; токол капитального уровня Протокол 2 служит для однонаправленной ;7' от передатчика к приемнику. Канал, как 1, поедполагается свободным от ошибок. раз у приемника буфер конечного объема обработки поступающих данных конечны. т 5': протокол должен явно препятствовать пер гружать приемник данными, передавая их тот способен их обработать м направлении. При всегда готовы к отнных игнорируется.
ниченные размеры, й протокол ущего протокола— ступающие данные зия остаются в силе: вленный. ции, когда отправилучателю требуется саl lауег плюс Го ь данные со средней ие коротких специолучатель, получив лю короткий специжет передавать слетарт-стопный про- передачи данных и в Протоколе Однако на этот и скорость аким образом, едатнику пере- быстрее, чем 125 "='::-:.нз 11е (Стае) нате тот елене (аетепб) агою рпузтса1 1ауег(аг1: о пеоногх 1ауег(аг.
1пто~: у* един~твенно возможное событие тгаше- Глаше агг1та1 *у получаем входной кадр передаем данные на сетевой уровень *у Пуреое1 еппт (Глазе аггтча1) ечепс уре; ()1пс1пбе "Ргопосо1. Ь" чо1б яепбег2 (чо1о) глазе в; l« буфер для выходного кадра «/ /« буфер для выходного паке- та «у у« единственно возможное событие — главе аггтча1 «l расКег Ьпттегя ечепб суре ечепс; нЬ11е (Ьгпе) ( Ггои пегногх 1ауег(аппггег) я.
1пго = Ьпгтег; ; «/ получаем для отправки «у у« копируем в я для передачи «/ /« Счастливого пути! «у ждем наступления события «/ Со рпуяьса1 1ауег(ая); на11 гог ечепг(аечепг); чотб гесетчег2(чо1с)) /« буфера для кадров «/ у« единственно возможное событиеггате агг1ча1 «/ ечеп« гуре ечепьы нп11е (Пгпе) ( на11 1о ечепп(аечедь)," ожидаем единственно возможное событие глазе аггтча1 «l («получаем входной кадр «/ /« посылаем данные на сетевой уровень «/ /« посылаем пустой кадр для того, чтобы кразбудить» приемник «/ ггоы рьуятса1 1ауег(аг); со пепногх 1ауег (аг. 1пго); Ьо рпуя1са1 1ауег(ая); 4.2.4.
Симплексный протокол для канала с шумом 126 Основная проблема при передаче по каналу с шумом состоит в том, что кадр с подтверждением о получении может быть потерян целиком. Как отличить кадр, переданный первый раз, от кадра, переданного повторно? ,:::::,.':„«* Протокол 3 для однонаправленной передачи данных через .'.*,::„.„; ненадежный канал ;"-;,:::;;:((с1е г 1 ежеля ,'-'„-*~1';.*; ь тощ го р вгаг ге мах зк(( /* должно быть равно 1, для Протокола 3 */ схяощ егг; ггщеопг(ечепг гуре, ег еппщ (ггаще аггфча1, пбе "ргояосо1. Ь" яепбегз(чофа( /* последовательный гехТ тгаще Го яепс(; номер для следующего отправляемого кадра */ /* переменная для кадра /*буфер для отправляе- мого гакета Ьогтег гуре ечепг /* первое значЕние для доследовагельных но- Ггаще Го яепб = О; мерен отправляемых кадров */ /* получение первого пакета песногк 1ауег(ЬЬи.гег) (ггпе( то = Ьиггег /* формирование кадра для передачи */ установка последовательного номера в кадре /* пересылка кадра /*запуск таймера, ожидание одного из следующих событий */ /* Ггате аггфчат, сьяяпщ егг, гфщеопь а = пехс тгаюе Го яепб; Ьуяьса1 1ауег(ая( Гьщег(в.
яео); -'на1г го ечепг(яечепг( 127 дно из очевидных решений — нумерация передаваемых кадров. ::::;;",„.":--!'.!„'ттднако сколько места отводить под эту нумерацию? Поскольку эта .:.:„",:; цроблема возникает только для последовательных кадров т и т "; 1, то,достаточно одного разряда: 0 — для только что посланного кадра .;"- = н 1 — для слелуюшего ожидаемого . Все кадры, не содержашие корректной нумерации, просто сбрасываются при приеме.
Приведем программу протокола с подтверждением и восстанов- лением: (ечепп = =- 1гаюе аюьча1) 1гощ рпув1са1 1ауег(ав): /* получение кадра 11 (з азк = =- пехп 1гаюе Со вело); /*проверка подтверждение */ /* получение следую- щего пакета для де- редачи */ */ увеличение после- 1пс (пень блате со зепб) довательного номера для следующего */ ) ) чо1ь( гесе1чегЗ(чоб) ( зес пг 1гаюе ехрессес1; 1гате г, з; ечепп Туре ечепп; бгаюе ехреспес( = Оь нп) 1е (сгие) ( на11 йот ечепп (аечепь); бгою рбуа1са1 1ауег(аг) по пепноп)ь 1ауег(аг.упбо) 1пс (ухаюе ехрессеб) ) з.авХ = 1 — 1гаюе ехресбеФ /* показывает полу- чение какого кадра подтверждается */ ни одно из полей не используется */ Со рпувьса1 1ауег(ьз) 128 ( бгою пепнолк 1ауег(ьбпттег); 11 (ечепс = = Хлеще агггча1) ( 11 (г. зеь) = = Глазе ехресееб); /* возможны события; 1гаще агпйна1, схсзпщ.
егг /* получен коррект- ный кадр */ /* получен очередной прибывщий кадр */ /* вот зто то, что ьы ждали */ /* передаем данные на сетевой уровень */ /* в следующий раз ожидает другой после- довательный номер 4.2.5. П1эотоколь1 скользящего окне В рассмотренных протоколах канального уровня кадры передава'-::.'дись только в одном направлении.
Для обеспечения передачи в обо:: их направлениях на физическом уровне гребуется два симплексных , у канала; олин для передачи кадров, другой — для передачи подтверждений. Однако использование капала только для подтверждений— '"; довольно дорогое удовольствие. Можно смсшивать кадры с данными й кадры с полтверждениями на одном канале. Это, конечно, решение '„':: проблемы, но по-прежнему на подтверждения будет тратиться по. ".;.*: 'дезная пропускная способность канала Можно также для подтверждения использовать 1юлезные кадры с ;:.,' '.данными, движущимися в попутном направлении.
В этом случае по.„с.'яудатель нс сразу отправляет подтверждение, а ожидает от сетевого :;. '.з1Ровна очсРедного пакета. Как только такой пакет возникает, каналь".„: ный уровень помешает в кадр с пакетом в специальное поле ас/с ;:,-';;;:уведомление о получении. Такой прием позволяет полнее использо':,'-,.'!:'::,::1вать имеюшуюся пропускную способность канала. Меньше кадров— ','!-;: меньше прерываний на канальном уровне на их обработку и меньше ;.:"=,.";: затрат на буферизацию ,.4:,::,:.;, Однако реализация этой идеи усложняет протокол, поскольку не;""м;;гпонятно, что делать, если тайм-аут у отправителя на получение под'::г;,,-чверждения заканчивается, а с сетевого уровня получателя не посту- :::,~~! .Пает запрос на передачу пакета.
Поэтому на канальном уровне должен ,;;-;; быть фиксированный интервал времени, в течение которого он будет ' 'О!'""!:-;ожидать от сетевого канала попутный кадр. Если до истечения этого ::~~-'.:;:взремени пакет с сетевого уровня не поступил, то канальный уровень "„':;:; отправляет подтверждение отдельным кадром Теперь подробно рассмотрим класс протоколов скользящего окна. -;~.'„":~:-Протоколы этого класса выполняют следующее: получатель сообщает ,.;,~; отправителю значение определенной константы л 1числа кадров), .~~-,",";:,'Которое тот может послать, не ожидая подтверждения для каждого ::;,.$-::,:~садра получателем.
Отправленные кадры отправитель сохраняет у себя .";".;!;в буфере до тех пор, пока не получит подтверждение об их получении :;"- По мере получения подтверждений отправленные кадры сбрасывакп- '~";."'.ся из буфера отправителя, и буфер пополняется новыми кадрами. Мы уже сталкивались с подобными протоколами. Например, это !,,'".,старт-стопный протокол, в котором и было равно 1. Обычно же в '!,':, таких протоколах н = 2" — 1. У получателя и отправителя в этом случае имеется набор последовательных чисел — номеров кадров, которые 1' " отправитель может отправить, не ожидая подтверждения каждого из ";:::,';;:ннх. Эти кадры образуют окно отправки. Аншюгично у получателя Имеется буфер для получения и временного хранения получаемых :кадров — окно получения Хотя в этих условиях отправителю обеспечивается определенная "';; свобода в порядке отправления кадров, мы по-прежнему будем счи- 5 ем ю«кип 129 /* Протокол 4 является двунаправленным и более полным, чем Протокол 3 */ Мбеттпе МАХ БЕЯ1 /*должно быть равно 1 для прот */ Суребет еппп (Ггапе аггьча1, скяпп егг, Стпеоп ) СУРЕ4 41пс1пбе "ркососо1.Ь" окопа 4 ечепс лота ргогосо14 (чо1б) яеЧ пг лехе Ггапе Со яепб4 яеЧ ~г Ггапе ехресгеб4 Ггапе г, я; расяев Ьпттег4 /*О или 1 */ /ьс или 1 */ /*переменные для кадров */ /*буфер для пакета, который был послан */ ечепг суре ечепс.