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

Post on 06-Apr-2016

221 views 2 download

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