TCP полуоткрытый - TCP half-open

Термин « полуоткрытый» относится к TCP- соединениям, состояние которых не синхронизируется между двумя взаимодействующими хостами, возможно, из-за сбоя на одной стороне. Связь, которая находится в процессе установления, также известна как эмбриональная связь . Отсутствие синхронизации могло быть вызвано злым умыслом .

RFC 793

Согласно RFC 793 , TCP-соединение называется полуоткрытым, когда хост на одном конце этого TCP-соединения вышел из строя или иным образом удалил сокет без уведомления другого конца. Если оставшийся конец свободен, соединение может оставаться в полуоткрытом состоянии в течение неограниченных периодов времени.

Эмбриональная связь

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

TCP имеет систему с тремя состояниями для открытия соединения. Сначала исходная конечная точка (A) отправляет SYN-пакет адресату (B). A сейчас находится в зачаточном состоянии (в частности, SYN_SENT) и ожидает ответа. Теперь B обновляет информацию о своем ядре, чтобы указать входящее соединение от A, и отправляет запрос на открытие обратного канала ( пакет SYN / ACK ).

В этот момент B также находится в эмбриональном состоянии (в частности, SYN_RCVD). Обратите внимание, что B был переведен в это состояние другой машиной, не контролируемой B.

При нормальных обстоятельствах (см. Атаку отказа в обслуживании для случаев преднамеренного сбоя), A получит SYN / ACK от B, обновит свои таблицы (которые теперь содержат достаточно информации для A как для отправки, так и для получения) и отправит окончательный ACK обратно к Б.

Как только B получает этот последний ACK, он также имеет достаточно информации для двусторонней связи, и соединение полностью открыто. Обе конечные точки теперь находятся в установленном состоянии.

Смотрите также

внешние ссылки