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

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

1 голос
/ 15 декабря 2011

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

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

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

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

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

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

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

2 голосов
/ 15 декабря 2011

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

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

...