Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1-13_310608.doc
Скачиваний:
70
Добавлен:
15.09.2019
Размер:
39.63 Mб
Скачать

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

Между двумя станциями сети должно быть установлено соединение ТСР, прежде чем станет возможна передача данных между ними. Приложения взаимодействуют посредством ТСР путем последовательных функциональных вызовов. Вызовы включают открытие (open) и закрытие (close) соединения, посылку (send) и прием (receive) информации из этого соединения и получение сведений о состоянии (status) соединения.

При необходимости установить связь с удаленной станцией приложение направит FTP запрос о вызове open. Существует два типа вызова open: пассивный и активный.

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

Активный вызов open осуществляется при необходимости соединиться с удаленной сетевой станцией. Как показано на рисунке, станции А нужна связь со станцией В. При этом станция А передает станции В активный вызов open.

Для организации соединения станция В должна к этому моменту уже выполнить пассивный вызов open, чтобы позволить устанавливать входящие соединения. В пакете попытки установления связи содержится номер порта, который станция А намеревается использовать на станции В. Операционная система на станции В запустит отдельный процесс для поддержки этого соединения. Процесс будет действовать так, как будто он является локальным на станции. Затем ТСР начнет ожидать следующего входящего запроса соединения. Все выглядит так, словно многозадачная операционная система работает с несколькими приложениями.

Трехэтапное установление связи

Соединение станет активным только после того, как отправитель и получатель обменяются несколькими управляющими пакетами для установки соединения. Данный процесс известен как трехэтапное установление связи (three-way handshake). Его цель – синхронизировать порядковые номера и номера подтверждений для каждой конечной точки в момент установки соединения ТСР.

Рассмотрим этот процесс. Станция А пошлет ТСР активный вызов open для запроса установки соединения с приложением удаленной сетевой станции. Станция А построит заголовок ТСР с установленным битом SYN (бит синхронизации), затем определит начальное порядковое значение (оно не всегда равно 0 и может быть любым; здесь выбрано 100) и разместит его в поле порядкового номера. После заполнения в заголовке ТСР других полей пакет будет отправлен протоколу IP для передачи станции В.

Станция В получит пакет и определит, что это – попытка соединения. Если станция В может принять новое соединение, она пошлет подтверждение станции А, сформировав новый пакет. Станция В установит в заголовке ТСР биты SYN и ACK, показанные на рисунке, поместит свое собственное начальное порядковое значение (200) в поле порядкового значения пакета, а в поле подтверждения будет указано значение 101 (порядковый номер станции А плюс 1, что задает следующий ожидаемый порядковый номер).

С танция А получит ответный пакет и определит, что это подтверждение запроса соединения. Станция построит новый пакет, установив бит АСК, назначит порядковый номер равным 101, укажет номер подтверждения 200 + 1 и отошлет пакет станции В. Как только это произойдет, соединение станет активным, и данные и команды приложения начнут передаваться по нему. Пока по соединению проходят данные и команды, каждая сторона соединения поддерживает свою собственную таблицу порядковых номеров для данных, отсылаемых и получаемых по соединению. Номера всегда следуют в восходящем порядке.

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