Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример использования порядковых номеров и подтверждений




Как видно из рисунка, соединение было установлено с применением начальных порядковых номеров отправителя и получателя (целевой станции). Каждая сторона поддерживает свой собственный порядковый номер, который находится в диапазоне от 0 до 2147483647. На обеих сторонах соединения ТСР известно о верхнем и нижнем пределах порядковых значений, и по достижении предела сразу осуществляется переход обратно к нулевому значению (каждая сторона знает о нулевом значении). Начальные порядковые номера выбираются случайно. Обе стороны должны подтвердить получение датаграмм друг от друга.

Номер подтверждения = порядковый номер + количество хороших байтов, прочитанных из сегмента + 1

 

Это – простой, быстрый, эффективный способ определения, какие байты приняты успешно, а какие нет. Отправителю надо сохранять копию передаваемых данных, пока он не получит от удаленной сетевой станции соединения подтверждения поступления этих байтов.

Пакеты подтверждений – не обязательно отдельные пакеты, содержащие только номер подтверждения. Это было бы неэффективно. Например, если станция А открывает соединение со станцией В и эти станции передают данные друг другу, то датаграмма подтверждения может быть объединена с ответным пакетом данных. Другими словами, одна передаваемая датаграмма содержит три блока информации: данные от станции В для станции А, подтверждение от станции В о данных, переданных ранее станцией А, и порядковый номер для данных, которые станция В посылает станции А.

Если отправитель не получит в течение заданного времени подтверждения, он повторно вышлет данные, начиная с первого неподтвержденного байта. ТСР прекратит попытки после определенного количества безуспешных передач. Повторная передача датаграммы осуществляется с помощью алгоритма «назад к N». Любое количество переданных байт может оказаться неподтвержденным. Когда целевая станция подтверждает прием последовательности байтов, отправитель смотрит на номер подтверждения. Все порядковые номера до номера подтверждения считаются успешно принятыми (номер подтверждения исключается). Например, станция-отправитель начинает с порядкового номера 3, а затем посылает две датаграммы, содержащие по100 байт сегмента ТСР каждая. Получив подтверждение от целевой станции, равное 203 (от 3 до 102, затем от 102 до 202; номер подтверждения 203 – следующий ожидаемый байт), она будет знать, что данные обеих отправленных ранее датаграмм считаются успешно принятыми.

Поток ТСР и управление окном

ТСР необходимы две функции, чтобы протокол мог управлять данными в соединении: управление потоком (flow control) и управление передачей (transmission control).

Управление потоком – это механизм, предназначенный для управления потоком данных. Например, если данные принимаются на целевой станции быстрее, чем станция успевает их обрабатывать, ей приходится обращаться к станции отправителю с просьбой замедлиться или совсем остановиться и подождать, пока будет освобождено место (обновлен буфер).

Управление потоком данных использует механизм плавающего окна, но кроме этого, применяется также более гибкая схема приема/передачи данных и отсылки подтверждений на успешный прием данных. Управление потоком протокола TCP использует так называемую схему с выделением лимита на передачу данных. По этой схеме каждый передаваемый байт имеет свой собственный номер в последовательности (SN). Когда протокол TCP посылает сегмент, он выставляет в поле номера в последовательности номер первого байта в поле данных этого сегмента. На принимающей стороне пришедший сегмент подтверждается сообщением, в котором указывается (А= i, W = j). Такая запись имеет следующее значение: если величина А (АСК) равна i, это значит, что сообщение подтверждает получение всех байтов, вплоть до номера в последовательности i-1; следующие ожидаемые байты имеют номер в последовательности г. Кроме того, выдается разрешение на посылку дополнительного окна W(Window) из j байтов, то есть байтов с номерами в последовательности от i до i +j - 1. На рисунке иллюстрируется работа этого механизма. Окна передачи и приема указывают количество байтов данных.

Для большей наглядности покажем поток данных, идущий только в одном направлении, и предположим, что в каждом сегменте посылаются 200 байт данных. Во время установления соединения номера в последовательностях отправителя и получателя синхронизированы и станция А имеет начальный лимит на отсылку данных 1400 байт, начиная с номера байта 1001. После посылки 600 байт в трех сегментах станция А уменьшает свое окно отсылки до 800 байт (номера с 1601 до 2400). После получения этого сегмента станция В подтверждает получение всех байтов, вплоть до 1601, и формирует свое окно приема на 1000 байт. Это означает, что станция А может посылать байты, начиная с номера 1601 и заканчивая номером 2600, то есть пять сегментов. Однако к тому моменту, когда сообщение от станции В доходит до станции А, последняя уже успела выслать два сегмента, содержащие байты 1601-2000, что позволял начальный лимит. Следовательно, оставшийся лимит станции А на этот момент составляет всего 400 байт или два сегмента. Во время обмена станция А продвигает левую границу своего окна каждый раз, когда осуществляет передачу. Правая граница передвигается только тогда, когда станция получает новый лимит.

На практике обе стороны одновременно задействуют режимы передачи и приема, так как данные могут передаваться в обоих направлениях (происходит полнодуплексная передача). Механизм выделения лимита является достаточно гибким. Например, рассмотрим ситуацию, при которой последнее сообщение, посланное станцией В, было (A= i, W = j). Последним байтом данных, полученным станцией В, был байт с номером i-1. Для увеличения лимита до значения k, при условии, что kj и дополнительные данные не поступали, станция В формирует сообщение (A = i, W = k). Для подтверждения входящего сегмента, содержащего т байт данных (от) без выделения дополнительного лимита, станция В формирует сообщение (А = i+m, W=j-m).

Следует отметить, что от получателя не требуется немедленного подтверждения приходящих сегментов. Он может ожидать некоторое время, а затем сформировать подтверждение сразу на несколько сегментов. Получатель должен проводить какую-то политику, регулирующую количество данных, которое он позволяет передавать отправителю. Можно выделить две политики получателя: консервативную и оптимистическую. Консервативная схема управления потоком основана на том, что лимит выделяется в соответствии с имеющимся доступным буферным пространством. Если это правило применить к ситуации, показанной на рис. 7.10, то первое лимитирующее сообщение говорит о том, что станция В может разместить 1000 байт в своем буфере, а второе — о том, что станция В может разместить 1400 байт. Консервативная схема управления потоком может ограничить пропускную способность логического соединения в ситуации, когда в сети возникают большие задержки.

Получатель может более эффективно использовать пропускную способность канала с помощью оптимистического выделения лимита, сообщая о свободном буферном пространстве, которого он на данный момент фактически не имеет. Например, если буфер получателя заполнен, но он ожидает, что сможет освободить 1000 байт буферного пространства за время прохождения информации из конца в конец соединения, он может послать кредит на 1000 байт. Если получатель может поддерживать скорость, заданную отправителем, то такая схема способна повысить пропускную способность и не принесет вреда. Если же отправитель работает быстрее получателя, то некоторые сегменты будут отбрасываться из-за занятого буфера, что повлечет за собой повторную передачу. В таком случае оптимистическое управление потоком может усугубить ситуацию с перегрузкой в сети.

 

Сколько сегментов могут одновременно оставаться неподтвержденными? Управление данными при помощи окна показано на следующем рисунке. Данные, которые необходимо передать на удаленную сетевую станцию, ТСР получает от приложения. Эти данные последовательно размещаются в памяти, где ждут отправки по соединению до удаленной станции (пока IP не сможет отослать пакет). ТСР располагает поверх данных окно, которое делит на три категории:

· посланные и подтвержденные;

· посланные, но не подтвержденные;

· ожидающие отсылки.

 

Этот механизм называется скользящим окном, так как окно скользит по сегменту данных по мере отсылки и подтверждения каждого пакета данных.

Рассмотрим рисунок. Порядковые номера 100-104 были переданы целевой станции, и целевая станция подтвердила прием этих сегментов. Пакеты, содержащие порядковые номера 105-108, посланы исходящей станцией, но на них она не получила подтверждения. Сегменты, в которые входят порядковые номера 109-114, пока находятся на станции-отправителе и ожидают отправки. Сегментов с номерами 115-118 еще нет в окне.

 

Размер окна управляется полем размера окна в заголовке подтверждения ТСР. Если принимающая станция (целевая станция) ощущает недостаток в буферном пространстве (область памяти, сохраняющая входящие данные), то она может попросить отправителя замедлить скорость передачи до объема данных, которые она в состоянии обработать. Это реализуется посредством поля окна в заголовке пакета ТСР. Данное поле будет содержать количество байт (определяя диапазон порядковых номеров), которые целевая станция успевает обработать. Поле окна в заголовке ТСР изображено на рисунке к разделу «Поля ТСР».

Когда удаленная сетевая станция не сумеет больше принимать данные, она сможет задать в поле окна значение 0 и продолжать отсылать эти нулевые пакеты до тех пор, пока не будет способна снова принимать данные (то есть, отправитель может послать данные узлу, а этот узел должен ответить подтверждением с номером предыдущего подтверждения и полем окна, установленным в нулевое значение).

Как только буферное пространство освободится, станция передаст пакет со значением размера окна, отличным от 0, чтобы показать, что она уже в состоянии принимать данные. Однако, если установлен бит срочности, это говорит получателю, что у отправителя есть экстренная информация, ожидающая отправки.

Такая методика управления соединением позволяет ТСР реализовывать управление передачей данных путем информирования ТСР на передающей стороне о том, сколько данных способен принять получатель. Это дает возможность и отправителю, и получателю поддерживать устойчивый поток данных через соединение.

 




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 532; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.