Установка соединения

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

В большинстве случаев соединение TCP устанавливается на время передачи единственного файла. Например, подключаясь к серверу в Интернете, браузер сначала устанавливает соединение с ним, затем передает HTTP-запрос с URL и наконец получает файл, указанный в URL. Как только файл передан, системы разрывают соединение. Обрабатывая полученный файл, браузер может найти в нем ссылки на изображения, звукозаписи и другие файлы, необходимые для отображения Web-страницы. Для каждого из них браузер устанавливает новое соединение с сервером, копирует файл и отображает его в составе страницы. Таким образом, обработка одной Web-страницы может обернуться десятком самостоятельных TCP-соединений.

Процесс установления TCP-соединения называется трехшаговым рукопожатием (three-way handshake) и состоит из обмена тремя сообщениями, ни одно из которых не содержит данных прикладного уровня. Помимо проверки существования другого компьютера и его готовности к приему данных, цель этих сообщений состоит в согласовании нумерации передаваемых сообщений. В начале соединения каждый компьютер выбирает для первого сообщения TCP начальный номер последовательности (initial sequence number, ISN). Затем с каждым последующим сообщением системы увеличивают этот номер на 1. Для выбора ISN компьютеры используют специальный алгоритм, который минимизирует вероятность того, что для соединения между одной и той же парой сокетов в одно и то же время будут использованы одинаковые номера последовательности.

В сообщении с номером ISN для каждой системы установлен флаг синхронизации (SYN). В начале типичной TCP-транзакции сообщение SYN с номером ISN в поле Sequence Number посылает клиентская система. Получив это сообщение, сервер генерирует ответ, который выполняет сразу две функции. Во-первых, за счет установки флага АСК ответное сообщение подтверждает получение первого клиентского сообщения SYN. Во-вторых, в отклике сервера также установлен флаг SYN, а в поле Sequence Number указан его номер ISN.

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

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

В ходе трехшагового рукопожатия с помощью сообщений SYN компьютеры также информируют друг друга о максимальном размере сегмента (maximum segment size, MSS). По значению MSS для другой системы передающий компьютер определяет количество данных, которое можно включать в последующие сообщения. Значение MSS зависит от того, какой протокол канального уровня используется в сети, где находится соответствующая система. Величина MSS передается в виде 4 байтов, записанных в полях Options заголовков TCP двух пакетов SYN. Значение этих байтов таково.

• Kind (1 байт) — тип дополнительного параметра. В случае передачи MSS значение равно 2.

• Length (1 байт) — длина дополнительного параметра в байтах. В случае передачи MSS значение равно 4.

• Maximum Segment Size (2 байта) — максимальный размер сегмента для данной системы в байтах.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: