Процедура установления соединения
В связи с крайней ненадежностью нижележащих протокольных уровней TCP использует процедуру троекратного рукопожатия для установления соединения (см. рис. 6.18.).
На рисунке 6.18 ПВУ - один из протоколов вышележащего уровня (HTTP. FTP и т.д.). Последовательность следующая:
1. ПВУ А посылает в свой объект TCP примитив «Открыть», указав адрес и параметры.
2. TCP А посылает TCP В сегмент SYN с номером, к примеру, 55.(флаг SYN=1, «номер в последовательности» = 55). Этот начальный номер будет затем использоваться в процедуре передачи данных. Начальный порядковый номер устанавливается с помощью специального генератора случайных чисел, который увеличивает свои значения каждые 4 мкс, работая по модулю 232. Это значит, что следующий раз такой номер встретится через 4,5 часа.
3. TCP В подтверждает получение запроса на соединение посылкой пакета SYN-ACK (SYN=1, ACK-1) с собственным начальным номером (например, 202) и с установленным в поле подтверждения номером 56 (следующий ожидаемый на приеме номер).
4. TCP А посылает сегмент АСК с номером 203 (номер следующего ожидаемого байта).
5. TCP А уведомляет ПВУ А об открытии соединения.
6. Получив АСК 203, TCP В уведомляет примитивом «успешное открытие» ПВУ В.
Процедура передачи данных
Рассмотрим простейший случай. Из А в В передается 30 байт, а из В в А посылается 100 байт. Соединение является дуплексным. Последовательность обмена следующая (рис.6.19.):
7) ПВУ А выдает в TCP А примитив «Передать» и сообщение длиной 30 байт.
8) TCP А помещает 30 байт в сегмент. В заголовке указывается порядковый номер первого байта в сегменте — 56.
9) TCP В получает сегмент, передает его ПВУ В и посылает сегмент подтверждения (АСК 86). Последний полученный байт будет иметь номер 85 (55+50). Так как в АСК указывается номер следующего ожидаемого байта, то это будет 86.
10) ПВУ В выдает TCP В примитив «Передать» и сообщение длиной 100 байт.
11) TCP В отправляет сегмент с порядковым номером 203 (202+1) — номером первого байта в этом сегменте.
12) TCP А передает сообщение ПВУ А и посылает подтверждение AСК (303), т.е. с указанием номера следующего ожидаемого байта.
Так как протокол дуплексный и подтверждения могут включаться в состав передаваемого сегмента, то этапы 9 и 11 могут быть объединены (посылкой сегмента данных с N=203, АСК=86).
Дата добавления: 2016-10-07; просмотров: 1752;