HTTP-связь через порт 80

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

Может ли веб-сервер отправлять несколько HTTP-ответов на порт 80 одновременно? Или ответы должны быть "сериализованы"?

Получает ли веб-сервер запросы в последовательном порядке? Если это так, то вставка в приоритетную очередь, вероятно, должна быть быстрой.

2 ответа

Решение

Короткий ответ: большинство веб-серверов будут обрабатывать входящие запросы параллельно, обрабатывая каждый запрос в отдельном потоке / процессе (извлекая поток из пула потоков или создавая новый). Обычно существует ограничение на количество запросов, которые могут быть обработаны одновременно (например, максимальное количество потоков в пуле потоков). Выход за пределы этого ограничения означает, что ожидающие запросы будут ожидать в очереди, пока другой запрос не завершится. Если серверу необходимо выполнить некоторую асинхронную обработку запроса, он может вернуть поток в пул потоков, пока не будет готов завершить запрос (например, с помощью IHttpAsyncHandler в ASP.NET).

Сервер фактически не отправляет обратно запросы на порт 80. У клиента будет свой собственный порт для этого конкретного соединения.

Я тоже новичок, но немного разбираюсь в сетевых коммуникациях.

Он не отвечает на несколько запросов одновременно, по одному, просто очень, очень быстро при правильной работе.

Когда информация отправляется по сети независимо от того, какой это порт, она отправляется в пакете. В этом пакете находится заголовок, который в вашем случае определяет, о чем вы спрашиваете, номер порта, который он пытается использовать, и другую необходимую информацию. После заголовка идут данные. Размер данных в пакете зависит от настроек, т. Е. Компьютера, маршрутизатора / коммутатора и других факторов. Затем, наконец, нижний колонтитул, который содержит указания относительно того, будет ли последний пакет поступать для этого конкретного запроса или, если нет, что искать в следующем пакете.

Надеялся, что поможет ответить на ваш вопрос и, возможно, даст вам еще несколько вопросов.

Другие вопросы по тегам