WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

44
WEBSOCKETS DATUM AUTOR

Transcript of WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Page 1: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

WEBSOCKETSDATUMAUTOR

Page 2: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Sockets• Rückblick: Vorlesung Datenkommunikation

26.04.23 WebSockets 2

Page 3: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 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

Page 4: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 5: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Hypertext Transfer Protocol• Request-Response-Nachrichtenaustausch

26.04.23 WebSockets 5

Page 6: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Hypertext Transfer Protocol• Kommunikationsfluss des Protokolls

26.04.23 WebSockets 6

Page 7: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Hypertext Transfer Protocol• Kommunikationsfluss des Protokolls

26.04.23 WebSockets 7

Page 8: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 9: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 10: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Lösungsansätze - SSE

26.04.23 WebSockets 10

Request Response

Page 11: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 12: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Ursprünglich von Google vorgeschlagen (2009)• Standard RFC 6455 (2011) besteht aus

• Protokollspezifikation• JavaScript Webbrowser API

26.04.23 WebSockets 12

Page 13: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Verbindungsaufbau (Opening Handshake)

26.04.23 WebSockets 13

Page 14: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Der „Sec WebSocket Accept“ Mechanismus

26.04.23 WebSockets 14

Page 15: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Der „Sec WebSocket Accept“ Mechanismus

26.04.23 WebSockets 15

Page 16: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Das Protokoll (Frame)

26.04.23 WebSockets 16

Page 17: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Das Protokoll (Frame)

26.04.23 WebSockets 17

Page 18: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 19: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Fragmentierung (Stückweise Übertragung der Nutzdaten)

26.04.23 WebSockets 19

Page 20: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Maskierung (mittels XOR)

26.04.23 WebSockets 20

Page 21: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets - Datenframes

26.04.23 WebSockets 21

Server Client Client Server

Page 22: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 23: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets - Close

26.04.23 WebSockets 23

Server beendet Client beendet

Page 24: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

HTML5 WebSockets• Beispiel Kommunikation (Traffic Analyse)

26.04.23 WebSockets 24

Page 25: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

WebSockets - Implementierungen• Client

• JavaScript Webbrowser API • (Bestandteil des Standards)

• Server• Socket.IO• Websocket-PHP• Vert.x• …

26.04.23 WebSockets 25

Page 26: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Die Client API• Browsersupport

• Beispiele: Chrome ab V. 16, FF ab V. 11, IE ab V. 10

26.04.23 WebSockets 26

Page 27: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 28: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Die Client API• WebSocket-Objekt Erzeugung

• Notation

• Beispiel

26.04.23 WebSockets 28

Page 29: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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)

Page 30: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 31: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 32: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Die Client API• Die send(…) Methode zur Datenübertragung

• Parameter: Text

• Parameter: Binär (Blob)

• Parameter: Binär (ArrayBuffer)

26.04.23 WebSockets 32

Page 33: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 34: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Die Client API• Beispiel Anwendung „Chatserver“

26.04.23 WebSockets 34

Page 35: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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… …

Page 36: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 37: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

Server Implementierungen• Beispiel Anwendung „Chatserver“

26.04.23 WebSockets 37

Page 38: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

WebSockets in der Praxis• Performance im Web

26.04.23 WebSockets 38

Page 39: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

WebSockets in der Praxis• Performance und Overhead Vergleich mit Polling

26.04.23 WebSockets 39

Page 40: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

WebSockets in der Praxis• Aspekte der IT Sicherheit

• Same Origin Policy• SSL bzw. TLS• Authentifizierung

26.04.23 WebSockets 40

Page 41: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 42: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 43: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

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

Page 44: WEBSOCKETS DATUM AUTOR. Sockets Rückblick: Vorlesung Datenkommunikation 22.08.2015WebSockets 2.

WEBSOCKETSVielen Danke für Ihre Aufmerksamkeit

Quellenhttp://websockets101.orghttp://websockets.orghttps://github.com/ghedipunk/PHP-WebSockets