Р.Л. Смелянский - Компьютерные сети. Том 1. Системы передачи данных (1130069), страница 30
Текст из файла (страница 30)
пехс ггапе со яепо = О) /* следуюпий кадр в оправляемомпотоке */ /* номер кадра, ожидаемого к поступлению /* получаем пакет с сетевого уровня l* подготовка к отправке первого кадра /* вставляем последовательный номер в кадр *l "'и /* подтверждение с попутным кадром передаем кадр */ /* включаем таймер Ггапе ехресееб = О Ггоп песногХ 1ауех (4ЬпГГег) я. 1пто = Ьп Гег4 я. яес =- пехс сапе Со яепб я.аяХ = 1 — Ггапе ехрессеб Со рьуя са1 1ау)г (ья)) ягагс Стпег (я. яеЧ); 130 тать, что кадры отправляются в соответствии с порядковыми номе.'-'; рами.
Окна отправки и получения имеют верхнюю и нижнюю тра.'",; ницы. Порядковые номера кадров в окне отправки показывают кадрЬт! т отправленные, но не подтвержденные. Как только от сетевого уров'-.-".: '';,т ня поступает еще один пакет, ему присваивается первый свободньф:;;. наибольший номер, и верхняя граница окна отправителя поднимая,!'; ется. Как только приходит подтверждение получения, нижняя грани=,:"' ца окна также поднимается.
Таким образом, в окне все время нахо";:-: дятся неподтвержденные кадры. Рассмотрим протокол скользящею окна, имеющего максимальный,~ размер 1 бит. Такой протокол использует старт-стопный режим и';~ послав один кадр, не шлет другой, пока не придет подтверждение на:, первый.
Приведем текст протокола скользяшего окна размером 1 бит!:. 1401: у* ожидаем одно из следую- щих событий *У У* 1 аюе аххтча1. окяою. ехх или «1юеоо«зос«*/ /* кадр получен неповреж- денным епх1е («хое) на)«. «ох ечег«(ьечеп«) Г (ечеп = = Гхаюе ах«1ча1) Гхою рпуя«са1 1ауех (ах); 11 (х. зеЧ = = Гхаюе ехрес«еб) получаем его *l ( У" обработка входного потока данных /* передаем пакет на сетевой уровень *у изменяем гооледова- «о пе«нохх 1ауех (а х.
1п«о); 1пс(тхаюе ехрео«ес(); тельный номер кадра от отправителя *у ) 1Е (х. аях = = пех«Гхаюе о яепс() ( у* обрабатываем поток отправляемых кадров гхою пе«нохх 1ауех (аЬп««ех); /" получаем новый пакет о сетевого уровня *у тпс(пех« «хазе «о зевс)); /" увеличиваем последовательный номер для очередного отправляемого кадра я.
1п«о = Ьо«тех; создаем кадр для отправки *! вставляем в него последовательный номер последовательный номер последнего полученного кадра *у передаем кадр *у /* включаем таймер *у я, яеЧ = пех« ххаюе о яепс(; я. аяк = 1 — ххаюе ехрео«ес1; «о рпуягса1 1ауех (ая)) з«ах« «тюех (я. зеч); ) 131 )гак и все другие протоколы, данный протокол начинается с определения переменных. Переменнаялехг бате го зелх(указывает, какой кадр посылается. Переменная Фате ехресгеа определяет, какой кадр получатель ожидает, и у нее есть только два значения: 0 и 1, Здесь возможны два случая. В первом случае, простом и наиболее удобном, один из канальных уровней первым начинает передачу.
В этом случае вне тела основного никла одной из программ канального уровня имеются обрагдения к пропедурам го риаз)са) 1ауег и з(агг г)тек Ж О. и о оЯ Иа „о а ~ а ~ Д Й О х 0 оф !32 йМ =о Ь~ Ьй "%о ~о Я; ч- Ю О М М О Ы ~ Ф ~ Д ~ Д Ю ~Ц О~; О / / ~' Йо Йо 'Ц р. о~.
о~ О М М с ~< ~=' ч~ о~~ о~~ о~ о~ п~~ ио ~о е3 ~бесо сна~ ~~йа ~4Щ 1~/~1~1 О -О -О О ~а ~а Д~~бИ3И с аа ~о йо 'С ~ а Ю М 2 о о Б и о О М о С~ а Машина, инициирующая обмен, берет пакет от сетевого уровня, формирует кадр и посылает его. Когда этот кадр (или любой другой) поступает, канальный уровень-получатель проверяет, не является ли этот калр дубликатом. Если поступивший кадр тот, который ожидался, то он передается на еетевой уровень и окно получателя сдвигается вверх. Поле уведомления содержит номер последнего кадра, полученного без ошибок. Если этот номер согласуется с номером кадра, который стараются послать, то уровень-отправитель считает, что кадр, хранящийся в буфере, послан и сбрасывает его оттуда, забирая при этом новый кадр с сетевого уровня. Если же указанные номера не согласуются, то отправитель старается послать тот же кадр еще раз.
При этом в любом случае, после получения кадра отправляется новый кадр. На рис. 4.4 показана схема работы протокола скользящего окна в 1 бит. Если у машины А очень короткий тайм-аут, то все дубликаты кадра пойдут с одним и тем же значением полей хек и ах)г. Поэтому, получив исправный кадр, машина В установит значение переменной ~~.ате ехресгеЫ, равное 1, и пошлет подтверждение.
Все последующие дубликаты будут отвергнуты машиной В, так как она ожидает кадр с единицей, а не с нулем. Случай, когда оба канальных уровня начинают передачу одновременно, рассматривается в [401. 4.2.6. Протокол с возвратам на и кадров и протокол с выборочным повтором До сих пор мы предполагали, что время доставки кадра и время доставки подтверждения пренебрежимо мало. В некоторых случаях это прелположение очевидно не работает, т.е. оно может приводить к серьезным бесполезным тратам пропускной способности канала. Рассмотрим канал со скоростью передачи 50 Кбит/с и общей задержкой 500 мс, например спутниковый канал. Попробуем использовать протокол скользящего окна для передачи кадров размером 1 000 бит по этому каналу.
В момент времени г = 0 отправитель отправляет первый кадр. В момент времени г = 20 мс кадр полностью отправлен, в момент времени г = 270 мс он принят и в момент времени г = 520 мс огправитель получил подтверждение. Эти цифры говорят о том, что отправитель был блокирован в течение 96 о времени работы 1500/520), а это потеря пропускной способности канала. Рассматриваемая проблема является следствием правила, по которому отправитель прежде чем послать следукнций кадр ждет подтверждения о получении предыдущего кадра. Это требование можно ослабить, т.е.
разрешить отправителю отправлять гв кадров, не дожидаясь их подтверждения. Надлежащим образом выбрав значение и>, отправитель может заполнить все время, необходимое на отправ- 133 ку кадра и получение его подтверждения. В приведенном примере и):,'.1 должно быть равно по крайней мере 26. Это число кадров, какое от-,',11 правитель успеет отправить за 520 мс, т.
е, прежде чем придет под-":;:! тверждение на кадр О. Таким образом, неподтвержденными будут 25',. из 26 кадров, а размер окна отправителя будет равным 26 кадрам. При использовании этой техники, известной как конвейер,и в случае применения ненадежного канала необходимо решить не-',,'! сколько проблем. Во-первых, что делать, если в середине потока':1: пропадет или попадется поврежденный кадр? Ведь получатель уже",,' получит большое количество кадров к тому моменту, когда отправи-::;; тель обнаружит, что что-то произошло. В то же время, когда получа-:,,' тель получил поврежденный кадр, он его должен сбросить, поэтому-~, необходимо решить вопрос, что делать с последующими кадрами.,-:; Помните, что канальный уровень обязан передавать пакеты на сете-:: вой уровень в том порядке, в каком их отправлял отправитель.
Имеется два метода решения этих проблем: откат и выборочный::, повтор. При откате все кадры, поступившие после поврежденного: кадра, сбрасываются и не подтверждаются. Отправитель по тайм-ауту;:" повторно отправляет все кадры, начиная с первого неподтвержден-,--,- ного кадра. При выборочном повторе у получателя длина окна такая,',. же, как и у отправителя. Отправитель отмечает неподтвержденные:.:.
кадры и посылает их еще раз, Получатель вставляет повторно по-:, сланные кадры туда, где требуется, и не передает на сетевой уровень,'.",, пакет, если в нем есть разрывы. 4.2.7. Протокол Н01.С До сих пор мы рассматривали схемы решений основных проблем;.", с которыми приходится иметь дело на канальном уровне.
Теперь по-:!г знакомимся с группой давно известных, но по-прежнему широко:,.:;., используемых на практике протоколов. Все они имеют одного пред'-:,:, шественника — ЯЭ1.С (Яупс)ггопопз Оага 1зп)г Сопгго1) — протокол,':,-", управления синхронным каналом, предложенный фирмой 1ВМ. Этот'',! протокол был модифицирован 1БО и выпущен под названием Н1)1.С::! (Н)я)г !еуе1 Вага Ып)с Сои!го!). Протокол НО1.С был модифицировай::."г МСЭ для Х.25 и выпущен под названием 1.АР (Ып!с Ассезв Ргосег)пге) '::! который позднее был модифицирован как 1.АРВ. Все эти протоколы для обособления кадров используют технику-') вставки специальных последовательностей битов и являются бит- ь Биты 8 8 8 >О 18 8 Оц! 010 АЙ!гага Сои!го! Вам Сьсскаивг Оц!ШО Рис.
4.5. Типовая структура кадра протокола НО! С !34 Биты ! з ! з а звч !'~т !ч ! Рис. 4.6. Поле Сои!го! для кадров!пГоппапоп 1а), Бирегт!зогу !б) и 1)ппаш)тетей (в) ориентированными протоколами. Различия между ними незначительные. На рис. 4.5 показана типовая структура кадра протокола НПЬС: ° поле Адг)гезз используется для адресации, если на линии имеется несколько абонентов. Для линий точка — 'точка это поле используется для того, чтобы отличать команду от ответа; ° поле Сопгго1 используется для последовательных номеров кадров, подтвержлений и других нужд; » поле Вага, которое может быть сколь угодно большим, используется для передачи данных.