18

Если ваш интернет-провайдер или брандмауэр блокирует все входящие соединения, как веб-серверы могут отправлять вам данные в ваш браузер? Вы отправляете запрос (исходящий), а сервер отправляет данные (входящий). Если вы заблокируете все входящие, как веб-сервер может ответить?

Как насчет потокового видео и многопользовательских игр, где используется UDP? UDP не имеет соединения, поэтому не нужно устанавливать соединение, так как брандмауэр или провайдер справится с этим?

2 ответа2

39

"Входящий блок" означает, что входящие новые соединения блокируются, но установленный трафик разрешен. Так что, если разрешены новые исходящие соединения , то входящая половина этого разговора в порядке.

Брандмауэр управляет этим путем отслеживания состояния соединений (такой брандмауэр часто называют "брандмауэром с отслеживанием состояния"). Он видит исходящий TCP SYN и разрешает его. Он видит входящий SYN/ACK и может проверить, соответствует ли он исходящему SYN, который он видел, и пропускает его, и так далее. Если он разрешает трехстороннее рукопожатие (например, это разрешено в соответствии с правилами брандмауэра), он разрешает этот разговор. И когда он видит конец этого диалога (FIN или RST), он удаляет это соединение из списка разрешенных пакетов.

UDP выполняется аналогично, хотя он включает в себя брандмауэр, запоминающий достаточно, чтобы притвориться, что UDP имеет соединение или сеанс (а UDP не имеет).

15

У @gowenfawr низкоуровневая картинка. Тем не менее, я решил добавить некоторые подробности о том, как выполняется "сопоставление" для отслеживания соединений, поскольку это может показаться магическим для непосвященных.

Каждое TCP-соединение имеет номер порта каждой стороны. Как известно большинству специалистов, HTTP-серверы работают через порт 80. Когда ваш браузер подключается к веб-серверу, он запрашивает у операционной системы "локальный" номер порта, который будет случайным, например, 29672, который не используется никаким другим TCP-соединением с этого компьютера (и ОС может это сделать потому что он знает обо всех активных соединениях TCP). Затем начальный пакет установки TCP будет отправлен с IP-адреса вашей машины (IP_YOURS) и порта 29672 на IP-адрес веб-сервера (IP_WEBSERVER) и порт 80. В этот момент брандмауэр с отслеживанием состояния скажет: «Ага, будущие пакеты от порта 80 IP_WEBSERVER, идущие на порт 29672 IP_YOURS, не являются новыми соединениями, они являются ответами на существующее соединение и должны быть разрешены». Межсетевые экраны с отслеживанием состояния поддерживают таблицу, и в конце концов, срок действия этой таблицы истекает, если в течение длительного времени не видно пакетов, идущих в обоих направлениях.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .