1

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

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

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

ответ

2

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

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

+0

Будет ли epoll эквивалентом Linux для IHttpAsyncHandler в ASP.NET? – SundayMonday

+0

@MrMusic Пока я не эксперт в области сетей Linux, я считаю, что epoll более похож на порты завершения ввода-вывода в Windows. Веб-сервер, такой как Apache или IIS, будет использовать порты завершения epoll или ввода-вывода для асинхронного чтения данных из сетевого сокета. Обычно существует модель приложения, работающая на веб-сервере (например, PHP-модуль в Apache или ASP.NET в IIS). Некоторые из моделей приложений позволяют «отпустить» поток обратно в threadpool при обработке запроса сервера. Node.js - пример сервера, который пытается сделать все, что угодно, асинхронно. –

2

Я новичок, но имею небольшое понимание сетевых коммуникаций.

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

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

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

+0

Мне нравится ответ Калеба. Перейти к функции веб-сервера. Извините, если мой не был тем, что вы искали. –

Смежные вопросы