Назад | Перейти на главную страницу

Постоянное соединение HTTP (keep-alive) и номера портов

Является ли постоянное соединение http (keep-alive), всегда привязанным к определенному порту, или оно может использовать диапазон портов?

Соединения выполняются только с обычным прослушивателем HTTP, если вы это имеете в виду - это не отдельный порт прослушивания.

Что касается портов, которые он может использовать, HTTP обычно находится на порту 80, но вы можете настроить свой HTTP-сервер на любой порт, который хотите.

Когда клиент открывает HTTP-соединение с веб-сервером, он выделяет локальный сокет из операционной системы, который привязывает сокет к некоторому порту на исходном сервере. Это исходный порт для подключения, и это может быть что угодно (хотя разные ОС имеют ограничения на порты).

Другой конец сокета подключен к порту 80 веб-сервера (HTTP по умолчанию) или к пользовательскому порту веб-сервера. Этот порт одинаков для всех подключений к этому конкретному веб-серверу.

Механизм проверки активности работает просто так, что ни клиент (веб-браузер), ни сервер не закрывают TCP-соединение сразу после выполнения запроса, сохраняя соединение открытым в случае необходимости выполнения новых запросов.

Следовательно, для соединения keepalive применяются те же порты источника / назначения.

Если в течение указанного времени в соединении нет трафика, любая из сторон может закрыть TCP-соединение.

Следующий запрос к серверу установит новое соединение, открыв новый порт источника.