Zum Inhalt springen

Byte Serving

aus Wikipedia, der freien Enzyklopädie

Byte Serving (andere Bezeichnungen: Range Requests; Byte Range Serving;[1] Page on demand[2]) ist der im HTTP-Protokoll 1.1 eingeführte Prozess, nur einen Teil einer Nachricht von einem Server an einen Client zu senden. Das Byte Serving beginnt damit, dass ein HTTP-Server seine Bereitschaft zur Übermittlung von Teilanforderungen mit Hilfe des Antwort-Headers Accept-Ranges bekannt gibt. Ein Client fordert dann mit dem Range-Request-Header einen bestimmten Teil einer Datei vom Server an. Ist der Bereich gültig, sendet der Server ihn an den Client mit dem Statuscode 206 Partial Content und einem Content-Range-Header, der den gesendeten Bereich auflistet. Wenn der Bereich ungültig ist, antwortet der Server mit dem Statuscode 416 Requested Range Not Satisfiable.[3]

Clients, die Byte-Serving anfordern, tun dies möglicherweise in Fällen, in denen eine große Datei nur teilweise geliefert wurde und ein begrenzter Teil der Datei in einem bestimmten Bereich benötigt wird. Byte Serving ist daher eine Methode zur Bandbreitenoptimierung.[4] Im HTTP/1.0-Standard konnten Clients nur ein ganzes Dokument anfordern. Durch die Möglichkeit des Byte-Serving können die Clients einen beliebigen Teil der Ressource anfordern. Ein Vorteil dieser Fähigkeit ist, dass der Client bei der Anforderung einer großen Mediendatei, die ordnungsgemäß formatiert ist, nur die Teile der Datei anfordern kann, von denen er weiß, dass sie von Interesse sind. Dies ist für die Bereitstellung von Videodateien von entscheidender Bedeutung. Fehlt einem Server diese Funktion, können die auf diesem Server gehosteten Videos möglicherweise erst dann abgespielt werden, wenn die gesamte Datei vom Client heruntergeladen wurde, und die Suche innerhalb der Datei kann deaktiviert sein.

In ähnlicher Weise können PDF-Dateien für Byte Serving optimiert werden, damit große Dateien sofort im Browser angezeigt werden können, indem nur die Daten angefordert werden, die zum Rendern der aktuellen Seite erforderlich sind.[5] Adobe unterstützt seit langem die Verwendung von Byte Serving durch eine Funktion in Adobe Acrobat, die PDF-Dateien mit einer optionalen „Fast Web View“-Struktur speichert, die für das „seitenweise Herunterladen“[5] optimiert ist.

Byte Serving kann auch von Multihomed-Clients genutzt werden, um eine Ressource gleichzeitig über mehrere Netzwerkschnittstellen herunterzuladen[6]. Um diese Art der Verbindungsaggregation auf der Anwendungsschicht zu erreichen, werden mehrere HTTP-Sitzungen eingerichtet und logische Dateisegmente gemeinsam vom Server heruntergeladen und am Client wieder zusammengesetzt. Dies ermöglicht die volle Ausnutzung mehrerer End-to-End-Pfade und führt somit zu einer erhöhten Download-Geschwindigkeit.

Die Verwendung der Chunked Transfer-Encoding-Methode ist kein Byte-Serving, sondern eine Methode, bei der ein HTTP/1.1-Server die gesamte Ressource sendet, aber in mehreren separaten Teilen (oder Chunks) von Daten[7]. Sie wird häufig verwendet, wenn ein Server nicht genau weiß, wie viele Daten die gesamte Antwort enthalten wird, so dass der Server sofort mit dem Senden von Daten an den Client beginnen kann, ohne die Antwort zwischenspeichern und die genaue Länge bestimmen zu müssen, bevor er sie an den Client sendet. Dies verbessert die Latenzzeit und reduziert den Speicherbedarf, während die Möglichkeit erhalten bleibt, die Verbindung nach Abschluss der Antwort wieder zu verwenden. Byte Serving und Chunking sind kompatibel und können mit oder ohne das jeweils andere verwendet werden. Spätere Versionen des HTTP-Protokolls unterstützen weiterhin Byte Serving,[8] obwohl die Verwendung von Chunked Transfer Encoding durch alternative Methoden ersetzt wurde.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Apache Week. HTTP/1.1
  2. Byte Serving: definition of byte serving in the Free Online Encyclopedia
  3. RFC 7233: Hypertext Transfer Protocol (HTTP/1.1): Range Requests
  4. Key Differences between HTTP/1.0 and HTTP/1.1 "A typical example is a server's sending an entire (large) resource when the client only needs a small part of it. There was no way in HTTP/1.0 to request partial objects... HTTP/1.1 range requests allow a client to request portions of a resource."
  5. a b Enable Fast Web View in a PDF
  6. Enhancing Video-on-Demand Playout over Multiple Heterogeneous Access Networks by D. Kaspar, K. R. Evensen, P. E. Engelstad, A. F. Hansen, P. Halvorsen, and C. Griwodz. In: IEEE Consumer Communications and Networking Conference (CCNC), ISBN 978-1-4244-5176-0, 2010
  7. HTTP Chunking. Archiviert vom Original am 8. Februar 2012;.
  8. RFC 7540 Section 8