Введение
Термин "полуоткрыто" относится к TCP-соединениям, состояние которых не синхронизировано между двумя общающимися хостами, возможно, из-за сбоя одной из сторон. Связь, которая находится в процессе установления, также известна как эмбриональная связь. Отсутствие синхронизации может быть вызвано злонамеренным намерением.
RFC 793
Согласно RFC 793, TCP-соединение называется полуоткрытым, когда хост на одном конце этого TCP-соединения потерпел сбой или удалил сокет без уведомления другого конца. Если остальной конец не работает, соединение может оставаться в полуоткрытом состоянии в течение неограниченного периода времени.
Время выхода из режима Stateful Firewall
Еще одно обстоятельство, которое может привести к полуоткрытым соединениям, - это если файрвол с состоянием выдерживает соединение, которое слишком долго находится в неактивном состоянии. В этом случае брандмауэр очищает свое внутреннее состояние, и если какая-либо сторона соединения отправляет пакет, брандмауэр отключит пакет. Это часто приводит к полуоткрытому соединению, поскольку обе стороны соединения могут в конечном итоге иметь несоответствующие состояния соединения.
Эмбриональная связь
Термин "полуоткрытое соединение" также может использоваться для описания эмбрионального соединения, т.е. TCP-соединения, которое находится в процессе установления. TCP имеет трехстадийную систему для открытия соединения. Во-первых, исходящая конечная точка (A) отправляет пакет SYN в пункт назначения (B). A сейчас находится в эмбриональном состоянии (в частности, SYN SENT) и ожидает ответа. B теперь обновляет свою информацию ядра, чтобы указать на входящее соединение от A, и отправляет запрос на открытие канала обратно (пакет SYN / ACK). В этот момент B также находится в эмбриональном состоянии (в частности, SYN RCVD). Обратите внимание, что Б. был приведен в это состояние другой машиной, вне контроля Б. При нормальных обстоятельствах (см. атаку отказа в обслуживании для случаев преднамеренного сбоя) A получит SYN/ACK от B, обновит свои таблицы (которые теперь имеют достаточно информации для A для отправки и получения), и отправит окончательный ACK обратно в B. После того, как B получает этот последний ACK, у него также есть достаточно информации для двусторонней связи, и соединение полностью открыто. Обе точки в настоящее время находятся в состоянии устойчивости.