WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.
-
Upload
kora-stieber -
Category
Documents
-
view
221 -
download
2
Transcript of WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.
WEBSOCKETSDATUMAUTOR
Sockets• Rückblick: Vorlesung Datenkommunikation
26.04.23 WebSockets 2
Sockets• Die wichtigsten Eigenschaften
• reservierter Bereich im Arbeitsspeicher• Kommunikationsendpunkt• Austausch von Daten
• In Rechnernetzten• Zwischen Prozesse (Interprozesskommunikation)• Bidirektional
• seit 1983 Standard
26.04.23 WebSockets 3
Agenda• Das HTTP Protokoll• Interaktivität und Echtzeitfähigkeit im Web• HTML5 WebSockets• Die Client API• Server Implementierungen• WebSockets in der Praxis• Ausblick und Fazit
26.04.23 WebSockets 4
Hypertext Transfer Protocol• Request-Response-Nachrichtenaustausch
26.04.23 WebSockets 5
Hypertext Transfer Protocol• Kommunikationsfluss des Protokolls
26.04.23 WebSockets 6
Hypertext Transfer Protocol• Kommunikationsfluss des Protokolls
26.04.23 WebSockets 7
Hypertext Transfer Protocol• Einschränkungen
• Kommunikation kann nur vom Client aus initiiert werden• Keine native Unterstützungen für bidirektionale Kommunikation• Codierung der Protokollelemente erfolgt als Text• Großer Overhead• „Zustandslosigkeit“ bzw. „Gedächtnislos“
Keine Interaktivität und Echtzeitfähigkeit (nativ) möglich
26.04.23 WebSockets 8
Lösungsansätze• Wie kann Interaktivität und „Echtzeitfähigkeit“ erreicht
werden?• Plug-in basierte Ansätze (Browser)• XmlHttpRequest• Polling und Long-Polling• Comet• Server-Sent Events
26.04.23 WebSockets 9
Lösungsansätze - SSE
26.04.23 WebSockets 10
Request Response
Lösungsansätze?• Nachteile der Implementierungen
• (noch) Hoher Overhead / Datenmengen• nur „konstruierte“ Lösungsansätze• oft nur „scheinbare“ Verbindung von Server zu Client
(Quasiinteraktivität)• Schwächen bei der Kommunikationskontrolle• Fehlerbehandlung• Fehlende Spezifikationen
26.04.23 WebSockets 11
HTML5 WebSockets• Ursprünglich von Google vorgeschlagen (2009)• Standard RFC 6455 (2011) besteht aus
• Protokollspezifikation• JavaScript Webbrowser API
26.04.23 WebSockets 12
HTML5 WebSockets• Verbindungsaufbau (Opening Handshake)
26.04.23 WebSockets 13
HTML5 WebSockets• Der „Sec WebSocket Accept“ Mechanismus
26.04.23 WebSockets 14
HTML5 WebSockets• Der „Sec WebSocket Accept“ Mechanismus
26.04.23 WebSockets 15
HTML5 WebSockets• Das Protokoll (Frame)
26.04.23 WebSockets 16
HTML5 WebSockets• Das Protokoll (Frame)
26.04.23 WebSockets 17
HTML5 WebSockets• Operation Codes
26.04.23 WebSockets 18
Code Frame0x0 Fortsetzung Frame
0x1 Textframe
0x2 Binärframe
0x3 bis 0x7 Reserviert für weitere Non-Control-Frames
0x8 Connection Close Frame
0x9 Ping Frame
0xA Pong Frame
0xB bis 0xF Reserviert für weitere Control Frames
HTML5 WebSockets• Fragmentierung (Stückweise Übertragung der Nutzdaten)
26.04.23 WebSockets 19
HTML5 WebSockets• Maskierung (mittels XOR)
26.04.23 WebSockets 20
HTML5 WebSockets - Datenframes
26.04.23 WebSockets 21
Server Client Client Server
HTML5 WebSockets• Der Verbindungsabbau (Statuscodes)
26.04.23 WebSockets 22
Code Bedeutung1000 Normal Closure
1001 Going Away
1002 Protocol Error
1003 Unsupported Data
1004 Reserved
1005 No Status Recieved
1006 Abnormal Closure
1007 Invalid Frame Payload Data
1008 Policy Violation
1009 Message Too Big
HTML5 WebSockets - Close
26.04.23 WebSockets 23
Server beendet Client beendet
HTML5 WebSockets• Beispiel Kommunikation (Traffic Analyse)
26.04.23 WebSockets 24
WebSockets - Implementierungen• Client
• JavaScript Webbrowser API • (Bestandteil des Standards)
• Server• Socket.IO• Websocket-PHP• Vert.x• …
26.04.23 WebSockets 25
Die Client API• Browsersupport
• Beispiele: Chrome ab V. 16, FF ab V. 11, IE ab V. 10
26.04.23 WebSockets 26
Die Client API• Grundlegendes Namensschema
26.04.23 WebSockets 27
Bestandteil Bedeutungws oder wss Protokoll
host Server
port Beliebiger Port (auch 80 grundsätzlich möglich)
path Pfad auf Dateisystem
query Optionale Parameter
Die Client API• WebSocket-Objekt Erzeugung
• Notation
• Beispiel
26.04.23 WebSockets 28
Die Client API• Objektzustände
26.04.23 WebSockets 29
Intern Zustand Beschreibung0 CONNECTING Verbindungsaufbau läuft
1 OPEN Verbindung hergestellt
2 CLOSING Abbau läuft derzeit
3 CLOSED Verbindung geschlossen (oder konnte nicht aufgebaut werden)
Die Client API• Eventhandler
26.04.23 WebSockets 30
Handler Event Wird getriggert, wenn …onopen open WS-Objekt in den Zustand OPEN wechselt
onerror error - Verbindungsfehler- Übertragungsfehler
onmessage message Nachricht empfangen wurde
onclose close - Verbindung geschlossen wird- Verbindung nicht aufgebaut werden konnte
Die Client API• Weitere Attribute eines WS-Objektes
26.04.23 WebSockets 31
Attribut BeschreibungbinaryType:DOMString Typ der Binärdaten (Blob oder ArrayBuffer)
bufferedAmoung:long Anzahl der Bytes in der Warteschlange
extensions:DOMString Erweiterungen, die vom Server ausgesucht wurden
protocol:DOMString Aktuell genutztes Subprotokoll
url:DOMString URL der Verbindung
Die Client API• Die send(…) Methode zur Datenübertragung
• Parameter: Text
• Parameter: Binär (Blob)
• Parameter: Binär (ArrayBuffer)
26.04.23 WebSockets 32
Die Client API• Verbindung schließen
26.04.23 WebSockets 33
Attribut Beschreibungcode:long Close Status Code
reason:DOMString Textnachricht als Grund für die Beendigung der Verbindung
wasClean:boolean Bestimmt, ob die Verbindung ordnungsgemäß geschlossen wurde
Die Client API• Beispiel Anwendung „Chatserver“
26.04.23 WebSockets 34
Server Implementierungen• Übersicht
26.04.23 WebSockets 35
Name Sprache
SuperWebSocket .NET
libwebsockets C++
Vert.x CoffeScrip, Groovy, Java, JavaScript, Python, Ruby
jWebSocket Java, JavaScript
Socket.IO Node.jsphpwebsocket PHPAutobahn Python… …
Server Implementierungen• Beispiel anhand des Frameworks WebSockets-PHP
• Open Source• Eine Hauptklasse „WebSocketServer“ (588 LoC)• einfache Klasse „User“ bereits integriert• Eigene WS-Klasse einfach von Vorgabe ableiten
26.04.23 WebSockets 36
Server Implementierungen• Beispiel Anwendung „Chatserver“
26.04.23 WebSockets 37
WebSockets in der Praxis• Performance im Web
26.04.23 WebSockets 38
WebSockets in der Praxis• Performance und Overhead Vergleich mit Polling
26.04.23 WebSockets 39
WebSockets in der Praxis• Aspekte der IT Sicherheit
• Same Origin Policy• SSL bzw. TLS• Authentifizierung
26.04.23 WebSockets 40
WebSockets in der Praxis• Verhalten gegenüber den „gängigen“ Attacken
• Denail-of-Service• Man-in-the-Middle• Network Scan• Port Scanner
26.04.23 WebSockets 41
Fazit• Verbesserungen die WebSockets bringen
• Performance• Echte Interaktivität zwischen Server und Client• „Echtzeitfähigkeit“• gelten allgemein als „sicher“• einfache Verwendung
• Nachteile• Mögliche Probleme bei Verwendung eines Proxys im System
• Cache• Anonymisierung oder Filtern• Überwachung
• „Browsersupport“
26.04.23 WebSockets 42
Ausblick• Große Veränderungen im heutigen Web
• Komplexere Webseiten• Größere Datenmengen und Traffic• Mobile Endgeräte
HTTP 2.0SPDY („Speedy“, von Google)Stream Control Transmission Protocol
26.04.23 WebSockets 43
WEBSOCKETSVielen Danke für Ihre Aufmerksamkeit
Quellenhttp://websockets101.orghttp://websockets.orghttps://github.com/ghedipunk/PHP-WebSockets