HTTP-Pipelining

Technik, bei der mehrere HTTP-Anfragen einem einzigen Socket übergeben werden, ohne auf eine Antwort zu warten

Wenn eine Website aufgerufen wird, so müssen in der Regel mehrere Dateien geladen werden (html, javascript, css, favicon, multimedia etc.). HTTP-Pipelining ist eine Technik, bei der mehrere HTTP-Anfragen in einer einzigen TCP-Verbindung übergeben werden, ohne auf eine Antwort zu warten. Pipelining wird ausschließlich von HTTP/1.1 unterstützt.

Schema einer HTTP-Verbindung ohne und mit Pipelining.

Besonders bei Verbindungen mit hohen Latenzzeiten, wie Internetzugang über Satellit oder den mehrfach weitergeleiteten Verbindungen über das anonymisierende Tor-Netzwerk, bringt dies eine erhebliche Verkürzung der Seitenladezeiten mit sich. Beim Webbrowsing über Tor macht der standardmäßig eingesetzte Filterproxy Polipo Gebrauch davon.

Da Pipelining nicht von jedem Server unterstützt wird, wird dies nicht bei Anfragen für eine neue Verbindung verwendet, da noch nicht festgestellt werden konnte, ob der Server HTTP/1.1 unterstützt.

Damit Pipelining funktioniert, müssen sowohl der Server als auch der Client Pipelining unterstützen. Server, die HTTP/1.1 unterstützen, unterstützen Pipelining mindestens insofern, als entsprechende Anfragen nicht zu Fehlern führen.

Die Technik wurde durch Multiplexing über HTTP/2 abgelöst.[1]

In HTTP/3 wird das Multiplexing durch das neue zugrundeliegende Transportprotokoll QUIC erreicht, welches TCP ablöst. Dadurch wird die Ladezeit weiter reduziert, da es kein Head-of-Line-Blocking mehr gibt.

Bearbeiten
  • RFC 2616 – Hypertext Transfer Protocol – HTTP/1.1. Februar 1999, Abschnitt 8.1.2.2: Pipelining. (englisch).
  • RFC 7230 – Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing. Juni 2014, Abschnitt 6.3.2: Pipelining. (englisch).
  • RFC 7450 – Automatic Multicast Tunneling. Mai 2015 (HTTP/2, englisch).

Einzelnachweise

Bearbeiten
  1. Revision 1330814 – Connection management in HTTP/1.x. In: MDN Web Docs. Abgerufen am 19. März 2018 (amerikanisches Englisch).