webnt
WING FHNW
WING FHNW
-
- 1 / 189
-
Lernkarten
Die Methode "self.end_headers()" führt in der Response eine leere Zeile ein.
Eine HTML Repsonse muss immer aus einem HTML File gelesen werden.
Die OpenAPI-Initiative (OAI) wurde von einem Konsortium zukunftsorientierter Branchenexperten ins Leben gerufen, die den immensen Wert einer Standardisierung der Beschreibung von APIs erkannt haben.
RESTful API => OpenAPI Spezifikation
Wofür ist das Richardson Maturity Model (RMM)?
Model zur Bestimmung der Reife eines Services im Bezug auf seine „RESTfulness“
Welche stufen hat das RMM?
Stufe 0 – RESTless --> kein REST Support
Stufe 1 – Ressourcen --> Jede identifizierbare Ressource hat eine eigene URI.
Stufe 2 – HTTP-Verben --> GET, POST, HEAD, PUT, DELETE und OPTIONS werden gemäss ihrer Spezifikation unterstützt. & HTTP Statuscode soll den Status der Verarbeitung beschreiben
Stufe 3 – Hypermedia --> Verknüpfung von Ressourcen und Repräsentationen durch Hyperlinks.
Wofür ist ein Statuscode?
Durch die Übermittlung eines HTTP-Statuscodes teilt der Webserver dem Client mit, ob die HTTP-Anfrage erfolgreich bearbeitet werden konnte oder ob es zu einem Fehler beim Aufruf einer URL gekommen ist.
Welche HTTP Statuscodes gibt es?
1xx Informational (Informationen)
2xx Success (Erfolgreiche Operation)
3xx Redirection (Umleitung oder Weiterleitung)
4xx Client Error (Client Fehler / Fehlerseiten)
¨ 5xx Server Error (Webserver Fehler
Welche Payload Serialisierungen gibt es?
JSON und XML
Welche Vor und Nachteile hat die Serialisierung in XML?
Pros
Zusammen mit einem Schema kann dank Validierung eine hohe Konsistenz des Datenaustausches erreicht werden.
Sehr genaue Beschreibung des Datenaustausch-Formats möglich.
Contra
Parsing und Validierung bzgl. eines Schemas ist teuer.
Sehr Verbose: Bzgl. den Nutzdaten viel zusätzlicher "Balast"
Welche Vor und Nachteile hat die Serialisierung in JSON?
Pros
JSON ist ein JavaScript-Objekt à sehr einfache Serialisierung/Deserialisierung in einer JavaScript Umgebung
Einfach, kompakt à weniger Netzwerklast
Cotras
Unterstützt nur einfache Datenstrukturen wie Variablen, Arrays, Hashmaps.
Beschreibung des Datenaustausch-Formats ist beschränkt.
Welche Aufgabe hat die Firewall?
Was wäre wenn es keine Firewall geben würde?
Ohne eine Firewall können andere Menschen und Programme Zugriff auf Ihren Computer nehmen und im schlimmsten Fall auf ihre sensiblen Daten zugreifen.
Wofür sorgt eine Firewall?
Die Firewall sorgt dafür, dass von ausserhalb ihres Netzwerks ein Zugriff über einen offenen Port auf ihren Rechner ausgeführt werden kann.
Wieviele Firewalls hat man in der Regel?
Im Regelfall haben sie zwei Firewalls: Die Personal Firewall auf ihrem Computer und die externe Firewall.
Wie funktioniert eine Firewall?
Eine externe Firewall (auch Netzwerk- oder Hardwarefirewall genannt) kontrolliert die Verbindung zwischen zwei Netzen und dient dazu, den Netzwerkzugriff zu beschränken, basierend auf Absender- oder Zieladresse und genutzten Diensten. Sie überwacht den durch die Firewall laufenden Datenverkehr und entscheidet anhand festgelegter Regeln, ob bestimmte Netzwerkpakete durchgelassen werden oder nicht. Auf diese Weise versucht sie, unerlaubte Netzwerkzugriffe zu unterbinden.
Motivationen für das HTTP Polling
- Firewall
Anforderung: Eine verteilte Anwendung muss im Internet über eine StandardICT-Infrastruktur kommunizieren können, inkl. den Firewalls.
Restriktion Firewall: Der Aufbau einer Kommunikation ist nur von einem Client aus möglich.
- "Echtzeit"
Anforderung: Neue Daten auf dem Server in "Echtzeit" zum Client kommunizieren können.
Restriktion HTTP: HTTP beschränkt die Kommunikation auf ein Request/Response Modell mit dem Client als Initiator des Kommunikationsaufbaus (siehe Firewall).
- Bidirektionale Kommunikation
Anforderung: Client und Server als gleichwertige Kommunikationspartner.
Restriktion HTTP: Request/Response Modell von HTTP ist Half-Duplex.
Welche Vorteile hat das Polling?
Mit HTTP umsetzbar
Ist einfach zu realisieren, da alle notwendigen Funktionen in Python vorhanden sind
Welche Nachteile hat das Polling?
Grosser Overhead des Netzwerkes
Zusätzliche, unnötige Last auf dem Server
was bedeutet der "Stateless" Zustand?
"stateless" bezeichnet die Eigenschaft eines Protokolls, mehrere Anfragen – auch desselben Clients – grundsätzlich als voneinander unabhängige Transaktionen zu behandeln. Insbesondere werden Anfragen ohne Bezug zu früheren Anfragen behandelt und keine Sitzungsinformationen ausgetauscht und/oder verwaltet.
Welche Art von Kommunikation ermöglicht Websocket?
erlaubt Full-Duplex Kommunikation über TCP-Verbindungen
Wie funktioniert der Websocket?
startet beim Client, der wie bei HTTP einen Request initiiert, mit dem Unterschied, dass nach der Übertragung der Daten zum Verbindungsaufbau die zugrundeliegende TCP-Verbindung bestehen bleibt.
Websocket Verbindung
Einfache Integrierbarkeit in bestehende ICT-Infrastrukturen des Internets:
- WebSocket ist als Upgrade des HTTP-Protokolls konzipiert: => Das Opening Handshake ist ein valider HTTP-Request
- WebSocket baut nach dem Upgrade eine stehende TCP-Verbindung zwischen Client und Server auf.
Die WebSocket-Spezifikation definiert zwei neue URI-Schemas:
- ws: für unverschlüsselte Verbindungen
- wss: für verschlüsselte Verbindungen
Ist WebSocket ein Protokoll oder Transport?
WebSocket spezifiziert den Auf- und Abbau einer Verbindung.
WebSocket kennt keine Regelung bzgl. der Strukturierung der eigentlichen Daten, d.h. des Payloads.
Ein Teil der Spezifikation sieht die Möglichkeit vor, dass sich Client und Server auf ein Protokoll einigen, mit dem die übertragenen Daten formatiert und interpretiert werden sollen.
--> In der Norm werden diese als "Unterprotokolle" bezeichnet, um Unklarheiten in der Nomenklatur zu vermeiden. Beispiele für Unterprotokolle sind JSON, XML, MQTT, ...
Was für eine Art Protokoll ist das Websocket?
Ein Low-Level Protokoll
Zusätzliches Applikationsprotokoll als "Unterprotokoll" ist notwendig, das sowohl vom Client wie auch vom Server interpretiert werden kann.
Was beinhaltet ein Applikationsprotokoll?
Das Applikationsprotokoll kann folgendes beinhalten:
- Daten wie Funktion, Payload, Zeitstempel, ...
- Format wie Text, Binär, JSON, XML, ...
Wie wird eine Websocket-Verbindung agebaut?
Um die Verbindung zu schliessen, wird ein Closing Handshake durchgeführt:
- Die Seite, welche die Verbindung schliessen möchte, muss dazu ein Frame mit dem Befehlscode ”0x8“ senden.
- Nachdem eine Seite sowohl einen Close-Frame empfangen als auch gesendet hat, muss sie die TCP-Verbindung trennen.
- Durch dieses Vorgehen stellt es auch kein Problem dar, falls beide Seiten zur selben Zeit die Verbindung trennen möchten: Da beide Seiten parallel einen Close-Frame senden und kurz darauf den der anderen Seite empfangen, können sie die Verbindung direkt trennen.
Eigenschaften des Websocket
- bidirektional (full-duplex)
- internettauglich
- sicher: mittels TLS
- Plattformunabhängig: Java, C++..
Was ist das Websocket nicht:
dauerhaft:
WebSocket-Verbindungen werden in einem Internet-Kontext betrieben, d.h. Webserver, Firewall, Routers, ... Deshalb können WebSocketVerbindungen durch solche Komponenten abgebaut werden, falls Inaktivität über eine gewisse Periode festgestellt wird.
Wie wird das Websocket im Betrieb gehalten
Mittels Ping-Pong Messages
Was muss bereitgestellt werden um ein Upgrade Request durchzuführen?
Der Upgrade Request ist ein HTTP GET Request.
Der Kommunikationspartner (Server) muss einen entsprechenden HTTP-Endpoint bereitstellen, der den Upgrade Request entgegennehmen kann.
Unterschiede HTTP und Websocket
HTTP:
- unidirectional (client always initiates request)
- stateless (closed by the server)
- half-duplex (request-response pattern)
Websocket:
- bidirectional (client and server can send messages)
- stateful (connection is persistent)
- full-duplex (client and server can send messages independently of each
other)