HTTP 206 Status: Partial Content

Der HTTP-Statuscode 206 (Partial Content) signalisiert, dass ein Server nur einen Teil der angeforderten Ressource überträgt.

Dies ist oft der Fall, wenn eine Datei in mehreren Abschnitten heruntergeladen wird oder ein unterbrochener Download fortgesetzt wird.

Der HTTP 206 Statuscode ist besonders nützlich, um große Datenmengen effizient zu übertragen, ohne die gesamte Datei erneut laden zu müssen.

In diesem Artikel wird erklärt, wann und warum dieser Statuscode eingesetzt wird und welche technischen Hintergründe dabei relevant sind.

Was ist der HTTP 206 Statuscode?

Definition

Gemäß dem offiziellen HTTP-Standard RFC 7233, Abschnitt 4.1 bedeutet der Statuscode 206: “Der Server hat nur einen Teil der Ressource erfüllt. Das Antwortbody enthält eine Beschreibung des Bereichs und kann ein Entity-Header Range enthalten.”

Anwendungsbereiche

Der HTTP 206 Statuscode wird hauptsächlich in folgenden Situationen verwendet:

  • Wenn ein großer Dateiinhalt in mehreren Teilen übertragen werden soll.
  • Wenn eine unterbrochene Download-Sitzung fortgesetzt werden soll.
  • Wenn ein Client die Bandbreitennutzung optimieren möchte, indem er nur einen Teil der Datei herunterlädt.
  • Wenn es zu Datenübertragungsproblemen kommt und eine erneute Übertragung des gesamten Inhalts vermieden werden soll.

Unterscheidung zu anderen HTTP Statuscodes (z.B. 200, 404)

Der HTTP 206 Statuscode unterscheidet sich von anderen Codes wie 200 (OK), 401 (Unauthorized) oder 404 (Not Found), da er speziell für die Übertragung von Teilinhalten vorgesehen ist.

Während der Code 200 den erfolgreichen Download einer gesamten Ressource signalisiert, zeigt der Code 206 an, dass nur ein Teil davon übertragen wurde.

HTTP Status CodeBeschreibungVerw.-ZweckVorteileNachteile
200 OKAnforderung erfolgreich abgeschlossen.Wird verwendet, wenn eine Anfrage erfolgreich verarbeitet wurde und alle Daten gesendet wurden.Liefert die vollständige Ressource.Keine Nachteile in Bezug auf die Übertragung.
206 Partial ContentTeillieferung von Inhalten.Wird verwendet, wenn nur ein Teil einer Ressource angefordert oder bereitgestellt wird (z.B. bei Downloads, Streams).Effizient bei der Übertragung großer Dateien oder Streams.Erfordert mehrere Anfragen für die vollständige Ressource.
404 Not FoundAngeforderte Ressource nicht gefunden.Wird verwendet, wenn die angeforderte Seite oder Datei auf dem Server nicht existiert.Informiert den Benutzer, dass die Ressource nicht existiert.Keine Möglichkeit, den Fehler innerhalb der Anfrage zu beheben.
Tabelle zum Vergleich der unterschiedlichen Statuscodes 200, 206 und 404

Wie funktioniert HTTP 206?

Um zu verstehen, wie der HTTP 206 Statuscode funktioniert, muss man sich mit dem Mechanismus des Byte-Range-Requests (auch “Range Requests”) vertraut machen.

Beim Byte-Range-Request fordert ein Client nur einen Teil einer Ressource an, indem er im Request-Header den Bereich (engl. Range) angibt, den er benötigt.

Der Server antwortet dann mit dem Code 206 und liefert die angeforderten Daten in einem Content-Range Header zurück.

Dieser enthält Informationen über die Größe und den Bereich des Teils der Datei, der übertragen wurde.

4 Anwendungsfälle des HTTP 206 Statuscodes

1 – Teilweiser Datei-Download

Ein gängiges Szenario für die Verwendung von HTTP 206 ist ein “Teilweiser Datei-Download”.

Dies kann beispielsweise bei großen Videodateien oder Software-Updates nützlich sein, um nur den benötigten Teil herunterzuladen und somit Zeit und Bandbreite zu sparen.

2 – Streaming von Medieninhalten (Audio, Video)

Ein weiterer Anwendungsfall ist das Streaming von Medieninhalten, wie z.B. Audio oder Video.

Hier kann der HTTP 206 Statuscode dazu verwendet werden, um nur den momentan benötigten Teil einer Datei zu übertragen und somit eine unterbrechungsfreie Wiedergabe sicherzustellen.

3 – Zwischenspeicherung von Webressourcen

Der HTTP 206 Statuscode kann auch bei der Zwischenspeicherung von Webressourcen verwendet werden.

Dies ermöglicht die Auslieferung von Teilen einer Ressource aus dem Cache anstatt jedes Mal den gesamten Inhalt herunterzuladen, was zu einer effizienteren Nutzung der Netzwerkressourcen führt.

4 – Fortsetzen abgebrochener Downloads

Ein weiterer nützlicher Anwendungsfall für den HTTP 206 Statuscode ist das Fortsetzen abgebrochener Downloads.

Wenn ein Download unterbrochen wird, kann der Client die fehlenden Teile anfordern und der Server liefert diese dann mit dem entsprechenden Bereich zurück. Somit muss der gesamte Download nicht erneut gestartet werden.

Diese Anwendungsfälle zeigen, dass der HTTP 206 Statuscode eine wichtige Rolle bei der Optimierung von Webanwendungen spielt.

Er ermöglicht es Clients, effizienter mit Ressourcen umzugehen und verbessert somit die Benutzererfahrung. Durch die Nutzung des HTTP 206 Statuscodes können sowohl Zeit als auch Ressourcen gespart werden, was besonders für mobile Geräte und Netzwerke mit begrenzter Bandbreite wichtig ist.

Vorteile der Verwendung von HTTP 206

Der HTTP 206 Statuscode bietet mehrere Vorteile bei der Optimierung von Webanwendungen:

Bessere Nutzererfahrung bei langsamen Internetverbindungen

Wenn eine Internetverbindung langsam ist, kann es vorkommen, dass große Dateien nicht vollständig heruntergeladen werden können. Durch die Verwendung des HTTP 206 Statuscodes können Clients den Download fortsetzen und somit unvollständige Downloads vermeiden. Dies verbessert die Nutzererfahrung erheblich, da der gesamte Inhalt schneller geladen wird.

Effiziente Nutzung von Bandbreite und Netzwerkressourcen

Durch die Möglichkeit, nur bestimmte Bereiche einer Ressource anzufordern, wird die Bandbreite effizienter genutzt. Dies ist besonders wichtig für mobile Geräte oder auf Netzwerken mit begrenzter Bandbreite. Außerdem können durch den HTTP 206 Statuscode Überlastungen des Servers vermieden werden, da weniger Anfragen gestellt werden.

Unterstützung für große Dateien

Der HTTP 206 Statuscode ermöglicht die Übertragung von großen Dateien in mehreren Teilanfragen. Dadurch wird verhindert, dass der Server eine große Datei komplett übertragen muss, was zu einer besseren Performance und Skalierbarkeit führt.

Streaming-Optimierung

Streaming-Dienste können vom HTTP 206 Statuscode profitieren, da sie nur den benötigten Teil der Ressource anfordern können, anstatt die gesamte Datei zu übertragen. Dies ermöglicht ein nahtloses Streaming ohne Unterbrechungen oder Wartezeiten.

Fehlerbehandlung und Debugging

Der HTTP 206 Statuscode kann auch für Fehlerbehandlung und Debugging-Zwecke verwendet werden. Wenn beispielsweise eine bestimmte Range-Anfrage fehlschlägt, kann dies auf ein Problem mit dem Server hinweisen und somit zur Behebung des Problems beitragen.

Technische Implementierung des HTTP 206 Statuscodes

“Range Requests” im HTTP-Protokoll

Um den HTTP 206 Statuscode nutzen zu können, müssen sowohl der Client als auch der Server das “Range Request” Feature des HTTP-Protokolls unterstützen. Dies ermöglicht es dem Client, bestimmte Teile einer Ressource anzufragen und vom Server zu empfangen.


Beispiel eines HTTP 206 Headers

from http.server import BaseHTTPRequestHandler, HTTPServer

class RequestHandler(BaseHTTPRequestHandler):

def do_GET(self):

# Beispiel für die angeforderte Range

range_header = self.headers.get(‘Range’)

if range_header:

# Hier könnte der Code sein, um die angeforderte Datei zu öffnen und den entsprechenden Teil zu lesen

# In diesem Beispiel nehmen wir an, dass die Datei “sample.mp4” heißt und 1000 Bytes groß ist

start = 0

end = 499 # Beispiel für einen 500 Byte großen Teil

# Senden des 206 Headers

self.send_response(206) # Status Code 206

self.send_header(‘Content-Type’, ‘video/mp4’)

self.send_header(‘Content-Range’, f’bytes {start}-{end}/1000′) # Gesamtgröße der Datei

self.send_header(‘Content-Length’, end – start + 1) # Länge des gesendeten Teils

self.end_headers()

# Hier könnte der Code zum Senden der Datei hinzugefügt werden

# Beispiel: self.wfile.write(b’Daten des 500 Byte großen Teils’)

else:

# Wenn kein Range-Header vorhanden ist, senden wir einen 200 OK Status

self.send_response(200)

self.send_header(‘Content-Type’, ‘video/mp4’)

self.send_header(‘Content-Length’, 1000) # Gesamtgröße der Datei

self.end_headers()

# Hier könnte der Code zum Senden der gesamten Datei hinzugefügt werden

def run(server_class=HTTPServer, handler_class=RequestHandler):

server_address = (”, 8080)

httpd = server_class(server_address, handler_class)

print(‘Starting server on port 8080…’)

httpd.serve_forever()

if __name__ == ‘__main__’:

run()


Serverunterstützung (Apache, NGINX)

Nachdem der Code zum Senden von Teilen einer Datei implementiert wurde, könnte man diesen auf einem Server wie Apache oder NGINX verwenden, um die Übertragung von großen Dateien zu optimieren. Dies wird oft als “Byte Serving” bezeichnet und ermöglicht es dem Client nur den benötigten Teil einer Datei herunterzuladen, anstatt die gesamte Datei auf einmal zu übertragen.

Um dies auf einem Apache-Server zu aktivieren, muss die Konfigurationsdatei angepasst werden. Dazu kann man in der .htaccess-Datei folgende Zeile hinzufügen:

Accept-Ranges: bytes

Auf einem NGINX-Server muss in der Konfigurationsdatei folgende Zeile hinzugefügt werden:

chunked_transfer_encoding on;

Damit wird dem Server ermöglicht, den Inhalt einer Datei in Teilen zu übertragen und so die Bandbreite effizienter zu nutzen. Dies ist besonders nützlich bei großen Dateien wie Videos oder Audioaufnahmen.

Unterschied zwischen HTTP 200 und HTTP 206

Bei HTTP 200 handelt es sich um eine Erfolgsantwort, die signalisiert, dass die Anfrage des Clients erfolgreich verarbeitet wurde. Dabei wird ein vollständiges HTML-Dokument oder eine andere Ressource an den Client gesendet.

HTTP 206 hingegen ist ebenfalls eine Erfolgsantwort, jedoch mit dem Unterschied, dass nur ein Teil einer Ressource übertragen wird. Dies ist besonders nützlich bei der Übertragung großer Dateien, da der Client somit nicht auf das vollständige Laden der Datei warten muss und stattdessen schrittweise Teile davon empfangen kann.

Wann wird welcher Code verwendet?

HTTP 200 wird verwendet, wenn die Anfrage des Clients vollständig bearbeitet wurde und der Server eine volle Ressource zurücksenden kann. Dies ist beispielsweise der Fall, wenn ein Client eine Webseite aufruft oder eine Datei herunterlädt.

HTTP 206 wird hingegen verwendet, wenn nur ein Teil einer Ressource übertragen werden soll, wie zum Beispiel bei Byte Serving. Hierbei kann der Client angeben, welcher Teil der Datei benötigt wird und somit den Downloadprozess beschleunigen. HTTP 206 kann auch verwendet werden, um bestimmte Medieninhalte wie Videos oder Audioaufnahmen in Echtzeit zu übertragen.

Fehlerbehandlung und HTTP 206

Bei der Übertragung von Teilen einer Ressource mittels HTTP 206 kann es zu Fehlern kommen, wenn der Server nicht in der Lage ist, die gewünschten Teile zu übertragen oder diese beschädigt sind. In diesem Fall wird ein Fehlercode wie beispielsweise HTTP 416 angezeigt, welcher dem Client signalisiert, dass die angeforderten Teile nicht verfügbar sind.

Um solche Fehler zu vermeiden und eine reibungslose Übertragung sicherzustellen, müssen sowohl Server als auch Client korrekt konfiguriert sein und mit den entsprechenden Headers umgehen können. Bei der Fehlerbehandlung sollte auch beachtet werden, dass nicht alle Clients und Server die Übertragung von Teilen einer Ressource unterstützen. Daher ist es wichtig, alternative Lösungen anzubieten oder auf eine vollständige Übertragung umzusteigen, wenn Probleme auftreten.

Abschluss

Der HTTP-Statuscode 206 (Partial Content) spielt eine entscheidende Rolle bei der effizienten Übertragung von Daten im Internet. Durch die Möglichkeit, nur Teile einer Ressource zu übertragen, optimiert dieser Statuscode die Nutzung von Bandbreite und verbessert die Benutzererfahrung, insbesondere in Situationen mit langsamen Internetverbindungen oder bei der Übertragung großer Dateien.

Anwendungsbereiche wie das Fortsetzen abgebrochener Downloads, das Streaming von Medieninhalten und die Zwischenspeicherung von Webressourcen demonstrieren die Vielseitigkeit und den Nutzen von HTTP 206. Der Statuscode ermöglicht nicht nur eine schnellere Bereitstellung von Inhalten, sondern minimiert auch die Notwendigkeit für vollständige Dateiübertragungen, was zu einer besseren Serverlastverteilung führt.

Insgesamt ist der HTTP 206 Statuscode ein unverzichtbares Werkzeug für moderne Webanwendungen, das die Effizienz der Datenübertragung steigert und die Interaktion zwischen Clients und Servern optimiert.

Über den Autor

Profilbild Oliver Jordanov, frontal, sitzend auf beiger Couch
Website | + posts

Oliver sammelt bereits seit mehr als 10 Jahren Erfahrungen in der Suchmaschinenoptimierung (SEO) und dem Suchmaschinenmarketing (SEM). Dabei unterhält er ein eigenes Portfolio an Webseiten (Blogs und Nischenseiten) und setzt parallel Kundenprojekte in der Agentur SEMZen um.
Der Name "SEMZen" verbindet dabei die Ausgeglichenheit des Zen mit der Dynamik des modernen Suchmaschinenmarketing (SEM).
Auf den Blog-Seiten von SEMZen teilt er immer wieder seine Erfahrungen mit Kunden und anderen interessierten Lesern.