Р.Л. Смелянский - Компьютерные сети. Том 2. Сети в ЭВМ (1130083), страница 27
Текст из файла (страница 27)
Это важно, поскольку не требует синхронизателем и получателем. Другое решение проблемы оса см. в [94]. ия, как уже говорилось, может быть асимметриччным. Асимметричный разрыв, т.е. когда одна соединение, не дожидаясь согласия другой сторок потере данных (рис. 3.5). Из рис. 3.5 видно, что узел 2 послал сообшение о разрыве соединения вил данные (Е)АТА). Поскольку узел 2 разорвал чанные узлом 1 данные он не примет. разрыв каждая сторона проводит самостоятельно, весь имею!цийся обьем данных.
Однако если ранее не знает объем данных, который она долж- 115 я Рнс. 3.4. Примеры (а... в) процедуры «троекратного рукопожатия» . ~~~'-:,': дает получение подт -,' ~';.'::но, что будет, если ,,:,''т!!:.;(запрос и подтвержд ;:-;:;4:; ' ;";-;, ";: отправителя и пол -",ф'-- пользует свои номе ".~'!' ции между отправи '",'$'„'":.::.: дублирования запр 3.2.4.
Разрыв соединении Разрыв соединен "1;.".'!ь ным или симметри ",::~' ':сторона разрывает .::;-;.";,-;;;; Ны, может привести и тот момент, когда (13К), узел ! отпра соединение, то пос. Симметричный ,когда она передала 'ов "." .каждая из сторон за на передать, определить тот факт, что все данные переданы и получены, не всегда просто. Здесь есть одна проблема, которая называется проблемой двух армий 119], суть которой состоит в слелуюшем. Пусть есть две противоборствуюшие армии, скажем А и В.
Армия А представлена двумя группировками, между которыми расположена армия В. Суммарно ресурсы А превосходят ресурсы В, и если обе группировки А ударят по В, то А победит. Остается лишь договориться о совместном ударе этих группировок, для чего гонец от А должен пройти через территорию, контролируемую В. Пусть группировка № 1 армии А посылает гонца с донесением, в котором указано время атаки. При этом возникает вопрос: может ли группировка №1, выслав гонца, выступать" .Конечно, нет! Если гонец не лоставил донесение, то атака будет отбита, ресурсы потрачены и В победит.
Выход из создавшегося положения — дожидаться гонца от группировки № 2 армии А с подтверждением. Пустьтонец от зруппировки № 2 прибыл. Можно ли наступать? Опять нельзя, т.е. не получив подтвержления, что гонец доставил подтверждение, группировка № 2 не может выступить. И этот процесс ожидания подтверждений может продолжаться сколь угодно долго.
Внимательно изучив проблему разрыва соединения, мы придем к выводу, что ни одна армия не начнет атаки до тех пор, пока не получит подтвержления на подтверждение, и так до бесконечности. На самом деле, можно доказать, что нет протокола, который безопасно разрешает эту ситуацию.
На рис. 3.6, а... е показаны соответственно четыре сценария разрыва соединения по схеме с «троекратным рукопожатием»: нормальный случай с «троекратным рукопожатием», с потерей последнего подтверждения, с потерей ответа, с потерей ответа и последуюШих данных. Хотя сценарии, показанные на рис. 3.6, и не безупречны, но на практике обычно они работают успешно. Обратим внимание, что Узел 1 Узел 2 После запроса на разры»З ' сбединсниядаиные ое бултт лостаалят»ся Рис.
3.5. Разрыв соединения с по~ерей данных 116 Узел ! Узел 2 Узел ! Узел 2 Узел 2 т потерян зависит от правильного выбора значения оторого принимается решение о разрыве. чно большим, можно потерять данные. навливают соединение, рассмотрим, как го, рассмотрим управление потоком. Эта уровне в чем-то аналогична проблеме вом уровне. Различие заключается в том, ло каналов невелико, в то время как на пений может быть намного больше.
раняет кадры, как на стороне отправитеателя до тех пор, пока они не будут под- 4 соединения и поле «Время жизниь сегряда, го потребуется суммарная емкость гмента. Число буферов можно сократить, о надежности сетевого уров!и или о на- ь, уяснив, как уста вляют. Прежде все а на транспортном ия потоком на сете ршрутизатора чис ртном уровне соеди альный протокол сох на стороне получ ны. Если имеется 6 нимает четыре раз на 1 024 ТРР1)-се ется информация 117 и о Узел ! Узел 2 Узел ! Отправить РКтзапус- РК Отправить тить таймер К РК-ьзапус(Тьше-опь) ф титьтаймер Отправить РК Отправить РК ьзапус РК+запус"з~ -2 ", тнтьтаймер ОВ.
тить таймер ь"=:., Завершить Отправить АСК Завершить АСК соединение е г ":фа ьт'".Ь ф — паке Рис. 3.6. Четыре сценария (а ... г) разрыва соединения многое в этих сценариях гппе-ош, по истечении к :;:".:;!",:;::-' Если оно будет не достато 3.2.5. Управление потокам и буФеризация Тепер им уира проблем управлен что у ма транспо 1(ан -.,:е ля, так и твержде мента за буферов если име личии буфера у получателя.
Пусть на транспортном уровне отправи- ~: тель сохраняет все сегменты на случай, если какой-то из них при-:: дется посылать вторично. Тогда, если получатель знает об этом, он ~ может иметь лишь один пул буферов для всех соединений, и если'.".
пришел сегмент, и ему нет буфера в пуле, то он сбрасывается, в про-,:: тивном случае он сохраняется и подтверждается. Если сетевой уровень ненадежный, то на транспортном уровне'::;,' отправитель вынужден сохранять все отправленные сегменты до под- ";,' тверждения получения. При надежном сетевом сервисе, наоборот, 'з отправителю нет надобности сохранять отправленные сегменты, если:-'.
он уверен, что у получателя всегда есть буфер для сохранения полу-",', ченного ТРО1З-сегмента. Если такой уверенности нет, то ему при-, ' дется сохранять сегменты. Однако и в первом, и во втором случае возникает проблема раз-," мера буфера. При фиксированной длине буфера естественно орга-.'., низовывать пул буферов одного размера.
Однако при переменной,', длине сегментов эта задача значительно усложняется. Если размер ' буфера устанавливать по максимальной длине сегмента, появляется:.:; проблема фрагментации, т. е, неэффективного использования памя- ':::: ти, а если по минимальной — то один сегмент придется пересылать,? как несколько, т.е. с дополнительными накладными расходами.
Мож-:" но установить схему динамического согласования размера буфера при."; установлении соединения. Выбор между буферизацией на стороне отправителя и буфериза-? цией на стороне получателя зависит от типа трафика. Например, для ";;. низкоскоростного нерегулярного графика буферизацию лучше делать:.",, на обоих концах. В общем случае вопрос о числе буферов лучше',:' всего решать динамически, необходимо только позаботиться о решении проблемы потери управляющих сегментов. Проблемами также являются согласование доступного числа бу- ''; феров и пропускная способность сетевого уровня. В настоящее вре- !" мя память дешевеет, поэтому буферизация скоро не будет являться",': проблемой.
Другое дело — проблема пропускной способности сете-,;-', вого уровня. Здесь дело в том, что пропускная способность транс- ',:! портной среды между двумя определенными хостами ограничена, н -". если поток между этими двумя хостами превысит пропускную спо- ' собность транспортной среды, возникнет перегрузка.
Эту проблему:. лучше всего решать динамически с помощью управляющих сообще- "-,. ний. Механизм управления потоком должен, прежде всего, учитывать:-„' пропускную способность транспортной среды, а уже потом — воз-::: можности буферизации. Располагаться этот механизм должен на ' стороне отправителя, чтобы предотвращать накопление большого ':.;.' числа неподтвержденных сообщений. При установлении и разрыве':.'! соединений, изменении интенсивности трафика отправитель и по-.':! лучатель должны изменять стратегию выделения буферов.
Буферы:,; 113 . -.:;,"';:.„:Могут выделяться под каждое соединение или сразу на несколько .::1> соединений. Когда получатель выделяет буферы под соединение, он '":"'-... еше не знает, каким будет график и может случиться так, что ему ,'>' придется сократить число выделяемых буферов по сравнению с из,', начально выделенным значением и сообщить об этом отправителю. Транспортный протокол должен предусматривать такие возможности Подобно алгоритму скользящего окна отправитель, получив от получателя доступное ему число буферов, с каждым отправленным ';=;, ТРР13 уменьшает это значение на единицу. получатель отправляет .:".' обратно на попутных ТРР1 1-сегментах сведения о полученных сег-;:;:;:.:, ментах и имеющемся числе буферов На рис, 3,7 показан пример динамического выделения буферов ',: для случая 4-битового порядкового номера ТРТ317-сегментов.
Пусть !т~:" для простоты запрос на выделение буферов пересылается в отдельном т""~.-: сегменте, а не в заголовке попутного сегмента. Сначала машина А запрашивает восемь буферов, но ей выделяют ' -~;;.':,::.:только четыре. Затем она посылает три сегмента, последний из кото';.",=; - 'рых теряется. На шестом шаге машина А получает подтверждение о "',,:,; получении сегментов 0 и 1, а также сообщение, что остались свобод;,-';.'«~"-Оными три буфера. Машина А считает, что сегмент 2 она послала, : ~';.~:поэтому высылает сегменты 3 и 4.