Создают ли браузеры новые TCP-соединения для каждого HTTP-запроса?

Поэтому я знаю, что HTTP – это всего лишь текстовый протокол через TCP, а TCP – это состояние / соединение. Это означает, что браузер должен подключиться через TCP к серверу, прежде чем выполнять HTTP-запрос. Вопрос: тогда браузеры обычно создают новое TCP-соединение для каждого HTTP-запроса?

Браузеры могут просто открыть TCP-запрос и сохранить его до тех пор, пока пользователь все еще просматривает этот сервер, но тогда серверы должны будут использовать большое количество максимальных подключений для его обработки. Но опять же, если браузеры создают соединение для каждого запроса, а пользователь много просматривает на том же сервере, это может показаться пустой тратой. Как это обычно работает? Может быть, с помощью таймера?

В HTTP / 0.9 (больше не используется) каждый запрос использует отдельное TCP-соединение, и конец ответа сигнализируется закрытием соединения.

В HTTP / 1.0 неофициальный, но очень широко поддерживаемый заголовок запроса « Connection: Keep-Alive » может использоваться для запроса постоянного соединения, если сервер его поддерживает.

В HTTP / 1.1 постоянные соединения по умолчанию , и старое поведение с одним запросом должно запрашиваться явно.

Необязательные запросы могут быть конвейерными , хотя это все еще имеет некоторые недостатки, поэтому часто используются множественные (2-5) соединения.

HTTP / 2 (aka SPDY ) был специально разработан для одновременного мультиплексирования множества запросов.

Ресурсы: статья Википедии и RFC 2616, раздел 8.1 .

Существует заголовок «Connection: Keep-Alive». См. Enwiki для получения дополнительной информации.

Вы можете использовать Wireshark для захвата и анализа соединений и просмотра всех заголовков.

  • Что такое параметр -nolisten tcp для X
  • Использование SO_REUSEADDR?
  • Как написать масштабируемый сервер Tcp / Ip
  • Обработка частичного возврата из recv () TCP в C
  • BOOST ASIO - Как написать консольный сервер
  • Это тот же порт, что и клиент и сервер?
  • Java TCP-сокет: передача данных медленная
  • Некоторое уточнение, необходимое для синхронных и асинхронных операций asio
  • максимальный размер пакета для TCP-соединения
  • Как установить соединение между двумя компьютерами в разных подсетях?
  • Кто слушает данный порт TCP на Mac OS X?
  • Давайте будем гением компьютера.