Stellen Browser für jede HTTP-Anforderung eine neue TCP-Verbindung her?

23

Ich weiß also, dass HTTP im Grunde genommen nur ein Textprotokoll über TCP ist und dass TCP auf dem Status / der Verbindung basiert. Das bedeutet, dass der Browser über TCP eine Verbindung zu einem Server herstellen muss, bevor eine HTTP-Anforderung ausgeführt wird. Frage: Stellen Browser normalerweise für jede HTTP-Anfrage eine neue TCP-Verbindung her?

Browser könnten einfach eine TCP-Anfrage öffnen und sie am Leben erhalten, solange der Benutzer noch auf diesem Server surft. In diesem Fall müssten die Server jedoch eine große Menge maximaler Verbindungen verwenden, um dies zu handhaben. Wenn die Browser jedoch für jede Anforderung eine Verbindung herstellen und der Benutzer häufig auf demselben Server browst, scheint dies eine Verschwendung zu sein. Wie funktioniert es normalerweise? Vielleicht mit einem Timer?

Xeon06
quelle

Antworten:

30

In HTTP / 0.9 (nicht mehr verwendet) wurde für jede Anforderung eine separate TCP-Verbindung verwendet, und das Ende einer Antwort wurde durch Schließen der Verbindung signalisiert.

In HTTP / 1.0 sind separate Verbindungen weiterhin die offizielle Standardeinstellung. Ein inoffizieller, aber weit verbreiteter " Connection: Keep-Alive" Anforderungsheader kann jedoch verwendet werden, um eine dauerhafte Verbindung anzufordern, wenn der Server dies unterstützt.

In HTTP / 1.1 wurden dauerhafte Verbindungen zum Standard , und das alte Verhalten bei Einzelanforderungen muss explizit angefordert werden. In der Regel werden mehrere (2–5) dauerhafte Verbindungen verwendet.

(Optional können Anforderungen per Pipeline weitergeleitet werden , obwohl dies schwierig zu implementieren ist und mehr Probleme verursacht, als es löst (Head-of-Line-Blockierung usw.), sodass niemand HTTP / 1.x-Pipeline verwendet.)

HTTP / 2 (auch bekannt als SPDY ) wurde speziell entwickelt, um viele Anforderungen gleichzeitig zu multiplexen. Es verfügt über eine Framing- / Paketierungsschicht, mit der Antworten in beliebiger Reihenfolge und sogar gleichzeitig eingehen können.

Ressourcen: Wikipedia-Artikel und RFC 2616 Abschnitt 8.1 .

Grawity
quelle
Ein weiterer interessanter Artikel, der denselben Entwickler
erwähnt.mozilla.org/en-US/docs/Web/HTTP/…
6

Es gibt den Header "Connection: Keep-Alive". Siehe enwiki für Details.

Mit Wireshark können Sie Verbindungen erfassen, analysieren und alle Header anzeigen.

Vi.
quelle
Warum Wireshark statt Fiddler?
Pacerier
3
Fiddler ist 1. Keine Open Source-Software; 2. Nur für Windows.
Vi.