![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Логические соединения — основа надежности ТСР
В лекции, посвященной коммутации пакетов, мы уже говорили о методе передачи данных с установлением логического соединения. Как мы знаем, логическое соединение дает возможность участникам обмена следить за тем, чтобы данные не были потеряны, искажены или продублированы, а также чтобы они пришли к получателю в том порядке, в котором были отправлены. В этом разделе мы выясним, в каком виде этот механизм используется в протоколе ТСР. Протокол ТСР устанавливает логические соединения между прикладными процессами, причем только между двумя процессами. ТСР-соединение является дуплексным, то есть каждый из участников этого соединения может одновременно получать и отправлять данные. После установки соединения у каждого компьютера есть вся необходимая для передачи прикладных данных информация. Вот из чего она складывается. · Номер порта. Клиенту уже известен номер порта сервера, который относится к хорошо известным портам и необходим для инициализации соединения. В поле Source Port сообщений клиента, адресованных серверу, передается временный номер порта, который будет подставляться в ответы сервера. · Начальный порядковый номер байта, с которого она начинает отсчет потока данных в рамках данного соединения. · Максимальный размер сегмента (MSS), который она готова принять. · Максимальный объем данных (возможно несколько сегментов) которые она разрешает другой стороне передавать, даже если та еще не получила квитанцию на предыдущую порцию данных (размер окна).
Рис. 3. Процедура установления и разрыва логического соединения
Соединение устанавливается по инициативе клиентской части приложения. При необходимости выполнить обмен данными с серверной частью приложение-клиент обращается к нижележащему протоколу ТСР, который в ответ на это обращение посылает сегмент-запрос на установление соединения протоколу ТСР, работающему на стороне сервера (рис. 3, а). В числе прочего в запросе содержится флаг SYN, установленный в 1. Получив запрос, модуль ТСР на стороне сервера пытается создать «инфраструктуру» для обслуживания нового клиента. Он обращается к операционной системе с просьбой о выделении определенных системных ресурсов: для организации буферов, таймеров, счетчиков. Эти ресурсы закрепляются за соединением с момента создания и до момента разрыва. Если на стороне сервера все необходимые ресурсы были получены и все необходимые действия выполнены, то модуль ТСР посылает клиенту сегмент с флагами АСК и SYN. В ответ клиент посылает сегмент с флагом АСК и переходит в состояние установленного логического соединения (состояние ESTABLISHED). Когда сервер получает флаг АСК, он также переходит в состояние ESTABLISHED. На этом процедура установления соединения заканчивается, и стороны могут переходить к обмену данными. Соединение может быть разорвано в любой момент по инициативе любой стороны. Для этого клиент и сервер должны обменяться сегментами FIN и АСК, в последовательности, показанной на рис. 3, б (здесь инициатором является клиент). Соединение считается закрытым по прошествии некоторого времени, в течение которого сторона инициатор убеждается, что его завершающий сигнал АСК дошел нормально и не вызвал никаких «аварийных» сообщений со стороны сервера. ПРИМЕЧАНИЕ -------------------------------------------------------------------- Мы описали здесь процедуры установления и закрытия соединения очень схематично. Реальные протокольные модули работают в соответствии с гораздо более сложными алгоритмами, учитывающими всевозможные «нештатные» ситуации, такие, например, как задержки и потери сегментов, недостаточность ресурсов или неготовность сервера к установлению соединения. Кроме того, мы проигнорировали тот факт, что еще на этапе установления соединения стороны договариваются о некоторых параметрах своего взаимодействия, например, о начальных номерах посылаемых ими байтов. Однако мы скоро вернемся к этим важным деталям работы протокола ТСР.
|