Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SETI_-_kopia.doc
Скачиваний:
97
Добавлен:
14.05.2015
Размер:
501.76 Кб
Скачать

20. Установление и разрыв соединения, состояния tcp.

Процесс установления:

1. Клиентская сторона TCPотсылает серверной стороне спец сегмент, не содержащий данных. ФлагSYN, находящийся в заголовке, установлен в 1 -SYN-сегмент. Клиентская сторона устанавливает начальный порядковый номер и помещает его в поле порядкового номераSYN-сегмента, заключается вIP-дейтаграмму и отсылается серверу.

2. Когда IP-дейтаграмма сSYN-сегментом достигает хоста сервера, сервер извлекает из нееSYN-сегмент, создает буфер и переменные для соединения, а затем отправляет клиенту сегмент, уведомляющий о выделенииTCP-соединения.SYN= 1, начальный порядковый номер+1 - в поле подтверждений. в поле порядкового номера сервер указывает свой начальный порядковый номер -SYNACK - сегмент.

3. Получив SYNACK- сегмент, клиент выделяет память для буфера и переменных соединения и отсылает серверу сегмент, подтверждающий получениеSYNACK- сегмента - в поле подтверждения порядковый номер сервера+1, флагSYN=0.

Эта процедура называется тройным рукопожатием.

Закрытие: Клиентский процесс генерирует команду закрытия соединения, которая приводит к отправке спец сегмента,FIN=1. Получив данный сегмент, сервер подтверждает его, затем отсылает клиенту завершающий сегментFIN=1, получение этого сегмента подтверждается клиентом.

На протяжении TCP-соединения каждая из сторон проходит через серию изменяющихсяTCP-состояний.

CLOSED(инициированиеTCP-соединения клиентским приложением (создание сокета, посылкаSYN-сегмента)) =>SYN_SENT(ожидание ответногоSYNACK-сегмента) =>ESTABLISHED(принимает и отправляет сегменты) => клиент инициирует закрытиеFIN_WAIT_1 (послан сегмент сFIN=1, ожидает подтверждения для переданного сегмента) =>FIN_WAIT_2 (после получения подтверждения, ожидает получение от сервера сегмента сFIN=1) =>TIME_WAIT(получив сегмент, квитирует его, повторная передача для завершающего сегмента (в случае возможной потери (время зависит от реализации)) => формальное закрытие (освобождение всех его ресурсов).

Состояния сервера:CLOSED=> создание прослушивающего сокета =>LISTEN=> получитьSYN, отправитьSYNиACK=>SYN_RCVD=> получитьACK, не предавать ничего =>ESTABLISHED(принимает и отправляет сегменты) => клиент инициирует закрытие (получитьFIN, отправитьACK)CLOSE_WAIT=> отправитьFIN=>LAST_ACK=>получитьACK, ничего не посылать.

32-разрядные поля порядкового номераиномера подтверждениянеобходимы для надежной передачи данных.

16-разрядное окно приемаиспользуется для управления потоком данных (кол-во байтов, которое способна принять прин. сторона)

4-разрядное поле длины заголовкаопределяет длинуTCP-заголовка в 32-разрядных словах.TCP-заголовок может иметь переменную длину благодаря полю параметров (если оно пусто, то 20 байт)

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

Поле флаговсостоит из 6 бит:Бит подтверждения(ACK) указывает на то, что значение, содержащееся в квитанции, является корректным. БитыRST,SYNиFINиспользуются для установки и завершения соединения. битPSHуказывает на то, что данные сегмента должны быть переданы верхнему уровню принимающей стороны немедленно. битURGпоказывает, что в сегменте находятся данные, помещенные верхним уровнем как «срочные».

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

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

Оценка времени оборота: Подвыборочным временем оборота(SampleRTT) - время, проходящее с момента передачи сегмента протоколу сетевого уровня передающей стороны до получения квитанции для этого сегмента, измеряется для 1 из переданных, но не квитированных сегментов, с периодичность в 1 время оборота меняется, не измеряется для повторно переданных сегментов. Для получения типичного значения необходимо некоторым способом усреднить величинуSampleRTT- величинаEstimatedRTT.

EstimatedRTT = (1-a)*EstimatedRTT + a*SampleRTT (а = 0,125)

- является весовым средним значением SampleRTT-экспоненциалоьное весовое скользящее среднее.

DevRTT- приближенное отклонениеSampleRTTотEstimatedRTT.

Определение и управление величиной интервала ожидания:

TimeoutInterval=EstimatedRTT+ 4*DevRTT.

Надежная передача данных: Обеспечивает надежную передачу данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]