Является ли постоянное соединение http (keep-alive), всегда привязанным к определенному порту, или оно может использовать диапазон портов?
Соединения выполняются только с обычным прослушивателем HTTP, если вы это имеете в виду - это не отдельный порт прослушивания.
Что касается портов, которые он может использовать, HTTP обычно находится на порту 80, но вы можете настроить свой HTTP-сервер на любой порт, который хотите.
Когда клиент открывает HTTP-соединение с веб-сервером, он выделяет локальный сокет из операционной системы, который привязывает сокет к некоторому порту на исходном сервере. Это исходный порт для подключения, и это может быть что угодно (хотя разные ОС имеют ограничения на порты).
Другой конец сокета подключен к порту 80 веб-сервера (HTTP по умолчанию) или к пользовательскому порту веб-сервера. Этот порт одинаков для всех подключений к этому конкретному веб-серверу.
Механизм проверки активности работает просто так, что ни клиент (веб-браузер), ни сервер не закрывают TCP-соединение сразу после выполнения запроса, сохраняя соединение открытым в случае необходимости выполнения новых запросов.
Следовательно, для соединения keepalive применяются те же порты источника / назначения.
Если в течение указанного времени в соединении нет трафика, любая из сторон может закрыть TCP-соединение.
Следующий запрос к серверу установит новое соединение, открыв новый порт источника.