RFC 6455 – The WebSocket Protocol

StatusProposed Standard
VeröffentlichtDezember 2011
Volltextrfc-editor.org/rfc/rfc6455

RFC 6455 spezifiziert das WebSocket-Protokoll, das eine bidirektionale Kommunikation zwischen einem Client (etwa einem Webbrowser) und einem Server über eine einzige TCP-Verbindung ermöglicht. Es adressiert die Schwächen traditioneller HTTP-basierter Ansätze wie Polling oder long-lived HTTP-Verbindungen, bei denen mehrere TCP-Verbindungen pro Client anfallen. Das Protokoll setzt auf ein Sicherheitsmodell, das auf der Herkunft (Origin) des Clients basiert, wie es in Webbrowsern üblich ist.

Der Kern des Protokolls besteht aus einem zweigeteilten Handshake auf Basis von HTTP, gefolgt von einem eigenen Rahmenformat für die Datenübertragung. Der Client initiiert die Verbindung mit einem HTTP-Upgrade-Request, der den `Sec-WebSocket-Key` enthält. Der Server antwortet mit einem entsprechenden `Sec-WebSocket-Accept`. Nach erfolgreichem Handshake wechselt die Verbindung vom HTTP-Protokoll zum WebSocket-Protokoll. Die Datenübertragung erfolgt über einen Rahmen, der einen Opcode, Nutzdatenlänge sowie optionale Maskierung (nur vom Client zum Server) und Erweiterungen enthält. Das Protokoll definiert auch Kontrollrahmen für Ping, Pong und Close zur Überwachung und zum ordentlichen Verbindungsabbau.

Das WebSocket-Protokoll ist heute ein fundamentales Element moderner Webanwendungen, besonders für Echtzeitanwendungen wie Chats, Spiele, Finanzdashboards oder Kollaborationstools. Es bietet im Vergleich zu HTTP-Polling deutlich geringere Latenz und reduziert den Overhead durch Header-Daten. Die in RFC 6455 spezifizierte Version stellt den allgemein verwendeten Standard dar, der von allen gängigen Browsern und Servern implementiert wird. Das Protokoll ersetzt zudem das zuvor in einigen Browsern genutzte proprietäre und sicherheitskritischere HyBi-Vorläufer-Protokoll.