1. Протокол рукопожатия TCP
В протоколе TCP/IP протокол TCP обеспечивает надёжные сервисы соединения, используя трёхстороннее рукопожатие для установления соединения.
Первое рукопожатие: при установлении соединения клиент отправляет син-пакет (syn=j) на сервер и входит в состояние SYN_SEND, ожидая подтверждения сервером.
Второе рукопожатие: Когда сервер получает пакет SYN, он должен подтвердить SYN клиента (ack=j+1), а также отправить пакет SYN (syn=k), то есть пакет SYN+ACK, в этот момент сервер переходит в состояние SYN_RECV.
Третье рукопожатие: клиент получает пакет SYN+ACK от сервера и отправляет подтверждающий пакет ACK (ack=k+1) на сервер.
После трёх рукопожатий клиент и сервер начинают передавать данные, и в вышеуказанном процессе есть несколько важных понятий:
Неподключённая очередь: в трёхстороннем протоколе рукопожатия сервер поддерживает неподключённую очередь, которая открывает запись для каждого SYN-пакета клиента (syn=j), указывающую на получение SYN-пакета и отправляющую подтверждение клиенту, ожидая подтверждения от клиента. Соединение, идентифицируемое этими записями, находится в состоянии Syn_RECV на сервере, и когда сервер получает пакет подтверждения от клиента, запись удаляется, и сервер входит в состояние УСТАНОВЛЕННО. Параметр Backlog: Указывает максимальное количество несвязанных очередей.
Время повторной передачи SYN-ACK Если сервер отправляет пакет SYN-ACK и не получает пакет подтверждения клиента, сервер выполняет первую повторную передачу, ждёт некоторое время без получения пакета подтверждения клиента и выполняет вторую повторную передачу. Обратите внимание, что время ожидания для каждого повторного прохода не обязательно одинаковые.
Время выживания полусоединения: относится к максимальному времени сохранения записи в очереди полусоединения, то есть максимального времени с момента получения SYN-пакета сервисом до момента подтверждения недействительности пакета, а это значение времени — сумма максимального времени ожидания всех пакетов запросов на повторную передачу. Иногда мы также называем полусвязанное время выживания SYN_RECV временем выживания.
|