Термин полуоткрытый относится к TCP соединения, состояние которых не синхронизировано между двумя взаимодействующими хостами, возможно, из-за сбоя на одной стороне. Соединение, которое находится в процессе установления, также известно как эмбриональное соединение . Отсутствие синхронизации может быть связано с злым умыслом.
Согласно 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.
Как только B получит этот последний ACK, он также будет иметь достаточно информации для двусторонней связи, и соединение полностью открыто. Обе конечные точки теперь находятся в установленном состоянии.
.