Логические соединения

Логические соединения – это основа надёжности TCP. Основным отличием TCP от UDP является то, что на протокол TCP возложена задача обеспечения надёжной доставки сообщения, используя в качестве основы ненадёжный дейтаграммный протокол IP. Для решения этой задачи протокол TCP использует метод продвижения данных с установлением логического соединения, которое даёт возможность участникам соединения (или участникам обмена) следить за тем, чтобы данные не были потеряны, искажены, продублированы, а также чтобы они пришли к получателю в том порядке, в котором были отправлены.

Протокол TCP устанавливает логические соединения между прикладными процессами, причём в каждом соединении участвуют только 2 процесса. TCP соединение является дуплексным, т.е. каждый из участников соединения может одновременно получать и отправлять данные.

При установлении логического соединения модули TCP договариваются между собой о параметрах процедуры обмена данными.

В протоколе TCP каждая сторона соединения посылает противоположной следующие параметры:

1) Максимальный размер сегмента, который она готова принимать

2) Максимальный объём данных (возможно несколько сегментов), которые она разрешает другой стороне передавать в свою сторону, даже если там ещё не получила квитанцию на предыдущую порцию данных (размер окна)

3) Начальный порядковый номер байта, с которого она начинает отсчёт потока данных в рамках данного соединения.

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

Соединение устанавливается по инициативе клиентской части приложения. При необходимости выполнить обмен данными с серверной частью приложение-клиент обращается к нижележащему протоколу TCP, который в ответ на это обращение посылает сегмент-запрос на установление соединения протокола TCP, работающему на стороне серверов. Флаг SYN установлен в 1. Получив запрос модуль TCP на стороне сервера пытается создать инфраструктуру для обслуживания нового клиента, он обращается к операционной системе с просьбой о выделении определённых системных ресурсов для организации буферов, таймеров, счётчиков. Эти ресурсы закрепляются за соединением с момента создания и до момента разрыва. Если на стороне сервера все необходимые ресурсы были получены и все необходимые действия выполнены, то модуль TCP посылает клиенту сегмент с флагами ACK и SYN. В ответ клиент посылает сегмент с флагом ACK и переходит в состояние установленного логического соединения. Когда сервер получает флаг ACK, то он переходит в то же состояние. На этом процедура установления соединения заканчивается, и стороны переходят к обмену данными. Соединение может быть разорвано в любой момент по инициативе любой стороны (для этого клиент и сервер обмениваются сегментами ACK и FIN). Соединение считается завершённым тогда, когда сторона – инициатор получает подтверждение, что завершающий сигнал ACK дошёл нормально и не вызвал никаких аварийных сообщений со стороны сервера. Логическое TCP соединение однозначно идентифицируется парой сокетов, определённых для этого соединения двумя взаимодействующими процессами.

Сокет одновременно может участвовать в нескольких соединениях. Пусть некоторый поставщик услуг оказывает услугу по веб-хостингу, т.е. на его сервере клиенты могут разворачивать свои веб-серверы. Веб-сервер основан на протоколе прикладного уровня HTTP, который передаёт свои сообщения в TCP сегментах. Модуль TCP ожидает запросы от веб-клиентов, которые поступают на порт 80. Пользователь браузером обращается одновременно к 2-м серверам. Наличие отдельных соединений для работы с каждым из этих серверов обеспечивает надёжную доставку и разделение информационных потоков, т.е. когда к этим серверам обратится ещё 1 клиент – их логические соединения будут изолированы (потому что в адресе запроса будет стоять не только номер порта, но и другой IP адрес).

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








Дата добавления: 2015-11-28; просмотров: 2249;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.