Чи створюють браузери нові TCP-з'єднання для кожного HTTP-запиту?


23

Тому я знаю, що HTTP - це в основному текстовий протокол через TCP, і що TCP заснований на стані / з’єднанні. Це означає, що браузер повинен підключитися через TCP до сервера, перш ніж робити HTTP-запит. Питання: чи браузери зазвичай створюють нове TCP-з'єднання для кожного HTTP-запиту?

Браузери можуть просто відкрити запит TCP і підтримувати його живим до тих пір, поки користувач ще переглядає цей сервер, але тоді сервери повинні використовувати велику кількість максимальних з'єднань, щоб впоратися з цим. Але знову ж таки, якщо браузери створюють з'єднання для кожного запиту, а користувач багато переглядає на одному сервері, це може здатися марною. Як це зазвичай працює? Може, за допомогою таймера?

Відповіді:


30

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

У HTTP / 1.0 окремі з’єднання все ще є офіційним замовчуванням. Однак неофіційний, але дуже широко підтримуваний Connection: Keep-Aliveзаголовок " " запиту може використовуватися для запиту постійного з'єднання, якщо сервер його підтримує.

У HTTP / 1.1 постійні з'єднання стали типовими , і стару поведінку з одним запитом потрібно запитувати явно. Зазвичай використовують кілька (2–5) стійких з'єднань.

(За бажанням запити можуть бути конвеєрними , хоча це виявилося складним у виконанні та створює більше проблем, ніж вирішується (блокування прямого рядка тощо), тому ніхто не використовує протокол HTTP / 1.x.)

HTTP / 2 (він же SPDY ) був спеціально розроблений для мультиплексування багатьох запитів одночасно. Він має шар обрамлення / пакетизації, який дозволяє відповіді надходити в будь-якому порядку і навіть одночасно.

Ресурси: стаття Вікіпедії та RFC 2616 розділ 8.1 .


Ще одна цікава стаття, в якій згадується той же розробник.mozilla.org
en-US/docs/Web/HTTP/…

6

Є заголовок "З'єднання: Тримай-живий". Детальніше див. У enwiki .

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


Чому Wireshark замість Fiddler?
Пейсьєр

3
Fiddler - це не програмне забезпечення з відкритим кодом; 2. Тільки для Windows.
Ві.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.