Протокол транспортного уровня. TСР сегменты и потоки. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Протокол транспортного уровня. TСР сегменты и потоки.



Единицей данных для протокола TCP является сегмент. Информация, поступающая по протоколу TCP в рамках соединения от протоколов более высокого уровня, рассматривается протоколом TCP как неструктурированный поток байтов.

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

Сегменты, посылаемые через соединение могут иметь разный размер. Оба участника соединения должны договариваться о максимальном размере посылаемого сегмента. Размер выбирается таким образом, чтобы при упаковке в IP-пакет сегмент помещался в него целиком без фрагментации, т.е. размер максимального сегмента не должен превосходить максимального размера поля данных IP-пакета.

 

Соединения.

Для организации надежной передачи данных предусматривается установление логического соединения между двумя прикладными процессами. Т.к. соединение устанавливается через ненадежную среду IP, то во избежание ошибочной инициализации соединений используется специальная многошаговая процедура подтверждения связи.

Соединение в протоколе TCP идентифицируется парой полных адресов обоих взаимодействующих процессов - сокетов. Каждый из взаимодействующих процессов может участвовать в нескольких соединениях.

Формально соединение - это набор параметров, характеризующий процедуру обмена данными между двумя процессами. К таким параметрам относятся:

- Согласованные размеры сегментов.

- Объемы данных, которые разрешено передавать без подтверждения.

- Начальные и текущие номера передаваемых байтов.

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

 

Установка связи по протоколу.

Этапы, из которых состоит процесс установки связи по протоколу таковы:

 

1. Узел-отправитель запрашивает соединение, посылая сегмент с установленным флагом синхронизации (SYN).

2. Узел-адресат подтверждает получение запроса, отправляя обратно сегмент с:

• установленным флагом синхронизации;

• порядковым номером начального байта сегмента, который он может послать;

• подтверждением, включающим порядковый номер следующего сегмента, который он ожидает получить.

Запрашивающий узел посылает обратно сегмент с подтверждением номера последовательности и номером своего подтверждения (ACK).

Этап соединения проиллюстрирован на рис. 5.2

 

Рис. 5.2 этап соединения по протоколу TCP, SYN - пакет синхронизации, DB - блок данных, ACK - подтверждение

 

Из рисунка 5.2 видно, что соединение выполняется в три этапа, гарантирующих безошибочное установление связи.

 

Реализация скользящего окна в TCP.

Во время установленного соединения правильность передачи каждого сегмента должна подтверждаться квитанцией получателя. Квитирование - это один из традиционных методов обеспечения надежной связи. В протоколе TCP используется частный случай квитирования - алгоритм скользящего окна.

Идея состоит в том, что окно определено на множестве нумерованных байтов неструктурированного потока данных,

поступающих с верхнего уровня и буферизуемых протоколом TCP. В качестве квитанции получатель сегмента отсылает ответное сообщение (сегмент), в которое помещается число на единицу большее, чем максимальный номер байта в полученном сегменте. Это число называют номером очереди.

Особенности реализации скользящего окна в протоколе TCP изображены на рис. 5.3. Если размер окна равен W, а последняя

 

 

Рис. 5.3 скользящее окно в протоколе TCP

 

по времени квитанция содержала значение N, то отправитель может посылать новые сегменты до тех пор, пока в очередной сегмент не попадет байт с номером N + W. Этот сегмент выходит за рамки окна, и передача в таком случае должна быть приостановлена до прихода следующей квитанции.

Выбор тайм-аута очередной квитанции - важная задача, результат решения которой сильно влияет на производительность протокола TCP. Время не должно быть слишком коротким - для исключения повторных передач, снижающих полезную пропускную способность системы. И время не должно быть слишком большим во избежание длинных простоев, связанных с ожиданием несуществующей или потерявшейся квитанции.

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

В сетях с большим разбросом времени оборота при выборе тайм- аута учитывается и дисперсия этой величины.

Поскольку каждый байт пронумерован, то каждый из них может быть опознан. Механизм опознавания является накопительным, поэтому опознавание номера Х означает, что все байты с предыдущими номерами уже получены.

Этот механизм позволяет регистрировать появление дубликатов в условиях повторной передачи.

Нумерация байтов в пределах сегмента осуществляется так, чтобы первый байт данных сразу вслед за заголовком имел наименьший номер, а следующие за ним байты имели номера по возрастающей.

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

Чем больше окно, тем большую порцию неподтвержденных данных можно послать в сеть. Но если пришло большее количество данных, чем может быть принято программой TCP, данные будут отброшены. Это приведет к излишним пересылкам информации и ненужному увеличению нагрузки на сеть и программу TCP. C другой стороны, указание малого размера окна может ограничить передачу данных скоростью, которая определяется временем путешествия по сети каждого сегмента в отдельности. Чтобы избежать применения малых окон, получателю данных предлагается откладывать изменение окна до тех пор, пока свободное место не составит 20-40 % от максимально возможного объема памяти для этого соединения. Отправитель также не должен спешить с посылкой данных, до того времени, пока окно не станет достаточно большим.

Разработчики протокола TCP предложили схему, согласно которой при установлении соединения заявляется большое окно, но впоследствии его размер существенно уменьшается.

Если сеть не справляется с нагрузкой, то возникают очереди в промежуточных узлах-маршрутизаторах и в конечных узлах- компьютерах.

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

После приема квитанции с нулевым размером окна протокол- отправитель время от времени делает контрольные попытки продолжить обмен данными. Если приемник уже готов принимать информацию, то в ответ он посылает квитанцию с указанием ненулевого размера окна.

Другим проявлением перегрузки сети является переполнение буферов в маршрутизаторах. В таких ситуациях они могут централизованно изменить размер окна, посылая управляющие сообщения некоторым конечным узлам, что позволяет им дифференцированно управлять интенсивностью потока данных в разных частях сети.

 



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 628; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.223.70.167 (0.01 с.)