Czy przeglądarki tworzą nowe połączenia TCP dla każdego żądania HTTP?

23

Wiem więc, że HTTP to po prostu protokół tekstowy przez TCP i że TCP jest oparty na stanie / połączeniu. Oznacza to, że przeglądarka musi połączyć się przez serwer TCP z serwerem przed wykonaniem żądania HTTP. Pytanie zatem: czy przeglądarki zazwyczaj tworzą nowe połączenie TCP dla każdego żądania HTTP?

Przeglądarki mogą po prostu otworzyć żądanie TCP i utrzymać je przy życiu, dopóki użytkownik nadal przegląda na tym serwerze, ale wtedy serwery będą musiały użyć dużej liczby maksymalnych połączeń, aby to obsłużyć. Ale z drugiej strony, jeśli przeglądarki utworzą połączenie dla każdego żądania, a użytkownik dużo przegląda na tym samym serwerze, byłoby to marnotrawstwem. Jak to zwykle działa? Może przez użycie timera?

Xeon06
źródło

Odpowiedzi:

30

W HTTP / 0.9 (już nieużywane) każde żądanie używało osobnego połączenia TCP, a koniec odpowiedzi sygnalizowany był przez zamknięcie połączenia.

W HTTP / 1.0 osobne połączenia są nadal oficjalnym ustawieniem domyślnym. Jednak nieoficjalny, ale bardzo szeroko obsługiwany Connection: Keep-Alivenagłówek żądania może być użyty do zażądania trwałego połączenia, jeśli serwer je obsługuje.

W HTTP / 1.1 trwałe połączenia stały się domyślnymi , a stare zachowanie pojedynczego żądania należy jawnie zażądać. Zwykle stosuje się wiele (2–5) trwałych połączeń.

(Wnioski można ewentualnie potokowych , ale okazało się to być trudne do zrealizowania i stwarza więcej problemów niż rozwiązuje (head-of-line blokującej, etc.), więc nikt nie używa HTTP / 1.x rurociąg).

HTTP / 2 (aka SPDY ) został specjalnie zaprojektowany do multipleksowania wielu żądań jednocześnie. Ma warstwę kadrowania / pakietowania, która pozwala na otrzymywanie odpowiedzi w dowolnej kolejności, a nawet jednocześnie.

Zasoby: artykuł w Wikipedii i sekcja RFC 2616 8.1 .

grawitacja
źródło
Kolejny interesujący artykuł o tym samym deweloperze.mozilla.org/en-US/docs/Web/HTTP/…
Ganesh Satpute
6

Istnieje nagłówek „Connection: Keep-Alive”. Szczegóły w enwiki .

Za pomocą Wireshark można przechwytywać i analizować połączenia oraz wyświetlać wszystkie nagłówki.

Vi.
źródło
Dlaczego Wireshark zamiast Fiddler?
Pacerier
3
Fiddler to 1. Nie jest oprogramowaniem typu open source; 2. Tylko Windows.
Vi.