Kommunikation auf Anwendungsebene Flashcards
Codierung von Daten auf Anwendungsebene
Auf der Anwendungsebene existiert eine Vielzahl von Möglichkeit der Codierung für den Transport von Daten. Hier steht nicht das Codieren von Bits, sondern das Format, in dem die Daten innerhalb von Netzwerkpaketen angeordnet werden, im Vordergrund.
Beispiele für Codierung:
* Internet Media Type (MIME)
* Extensible Markup Language (XML)
* Tag Length Value (TLV)
Multipurpose Internet Mail Extensions (MIME)
MIME wurde ursprünglich für den Einsatz in E-Mails entwickelt, ist aber auch bei der Kommunikation mit HTTP unabdingbar. Druch MIME-Typen wir der Inhalt von Daten beschrieben, beispielsweise werden MIME-Type für Audiodaten, Videodaten oder Text definiert.
Die Codierung der Daten auf Anwendungsebene wird dadurch stark erleichtert, da der jeweilige Empfänger weiss, welche Daten auf welche Weise auszuwerten sind.
Extensible Markup Language (XML)
XML kann sehr leicht und eindeutig interpretiert werden. Mit XML kann ein eigenes Datenformat entwickelt werden, welches, ohne zusätzlichen Entwicklungsaufwand, von vielen Anwendungen und Systemen interpretiert werden kann.
Mit dem hierarchischen Aufbau des XML-Dokuments lassen sich komplexe Strukturen sehr leicht abbilden. Binäre Daten können in XML eingebunden werden, wenn sie zuvor mit BASE64 codiert werden.
Wofür eignet sich die Extensible Markup Language (XML)
Mit seiner sehr ausführlichen und von Menschen lesbaren Beschreibung der Struktur, eignet sich XML hervorragend für die Implementierung von Anwendung, da Fehler bei der Übertragung leicht zu identifizieren sind.
Die ausführliche Beschreibung kann jedoch zum Nachteil werden, wenn die Effizienz der Datenübertragung im Vordergrund steht.
Tag Length Value (TLV)
Tag Length Value (TLV) ist ein Prinzip für den Aufbau von Kommunikationsnachrichten. In Bezug auf die Effizienz hat es gegenüber MIME und XML den Vorteil, dass es binär codiert werden kann, es wird also oft eingesetzt, wenn es auf die Effizienz der Übertragung ankommt.
Wenn es im TLV beispielsweise nur acht verschiedene Tags gibt, kann die Länge des TAG-Feldes auf 3 Bit beschränkt werden, gleiches gilt für das Length-Feld.
Angewendet wird TLV bei hocheffizienten Übertragungsprotokollen oder Anwendungen auf Embedded Systems.
Hypertext Transfer Protocol (HTTP)
HTTP wird für den Austausch von Daten im Word Wide Web verwendet. Primär wird es eingesetzt für das Übertragen von Webseiten zwischen einem Web-Server und einem Web-Browser.
HTTP soll Daten zuverlässig übertragen und verwendet das Transportprotokoll TCP. Die Kommunikation von HTTP besteht aus englischen Textnachrichten und ist mit Ausnahme der Übertragung von Binärdaten menschenlesbar.
Kommunikation mit dem Hypertext Transfer Protocol (HTTP)
Eine HTTP-Kommunikation besteht immer aus zwei Nachrichten:
* Anfrage an den Web-Server
* Antwort vom Web-Server
Der Webserver bietet keine Möglichkeit, ohne vorherige Anfragen Daten zu senden. Ausserdem speichert der Web-Server keine Informationen über zurückliegende Kommunikation mit dem Web-Browser. Jedes Frage-Antwort Paar ist dadurch unabhängig voneinander. Beides ist zwar heutzutage möglich, wird aber innerhalb der Webanwendung realisiert und verwendet weiterhin das Frage-Antwort-Prinzip von HTTP.
Kommandos und Antworten vom Hypertext Transfer Protocol (HTTP)
Anfragen an den Web-Server werden mit den Kommandos GET, POST oder HEAD eingeleitet. Diese erlauben es Daten von einem Web-Server abzufragen.
Der Web-Server antwortet auf die Anfrage mit einem Statuscode und einer Klartextmeldung. Die Statuscodes werden in unterschiedliche Kategorien eingeteilt:
* 1xx: Informationen
* 2xx: Erfolg
* 3xx: Umleitung
* 4xx: Clientfehler
* 5xx: Serverfehler
Codierung im Hypertext Transfer Protocol (HTTP)
Daten werden von Webservern codiert als ASCII-Werte versendet. In HTML-Dokumenten sind in der Regel alle Zeichen codierbar, bei der Übertragung von Binärdaten wir Grafikdateien kann es jedoch zu Problemen kommen, da auch nicht druckbare Zeichen enthalten sein können. Um übertragen werden zu können, müssen Binärdaten vorher BASE64 codiert werden, was aus der ursprünglichen 8 Bit pro Byte eine 6 Bit pro Byte Codierung erzeugt. Die übertragenen Binärdaten werden dadurch zwar etwas grösser, können dafür auf allen Systemen empfangen und dargestellt werden.
Dynamische Webseiten mit HTTP
Dynamische Webseiten generieren ihre Daten abhängig von den Eingaben der Benutzer und stellen diese als HTML-Dokument dar. Auf der Seite des Web-Servers liegen diese Webanwendungen in Sprachen wie PHP oder JSP vor und haben oft eine Datenbankanbindung.
Benutzer senden Informationen an den Web-Server mit zwei unterschiedlichen Kommandos: GET und POST.
HTTP: GET und POST
- GET: Übertragung der Benutzerdaten an den Web-Server wird in der aufgerufenen URL Codiert.
- POST: Parameter werden innerhalb der Anfragenachricht gespeichert, nicht in der URL
Sicherheit von HTTP
Mit HTTP ist nur eine unsichere Übertragung der Webseiten möglich. Für eine sichere Übertragung wurde die Erweiterung HTTPS entwickelt, welche das TLS Protokoll verwendet. Dieses authentifiziert den Web-Server und kümmert sich um eine verschlüsselte und integritätsgeschützte Übertragung.
Nach dem Aufbau der TCP-Verbindung zwischen Browser und Web-Server wird die TLS-Verbindung aufgebaut. Danach erfolgt die normale HTTP-Kommunikation durch den sicheren TLS-Tunnel.
File Transfer Protocol (FTP)
Das File Transfer Protocol (FTP) ermöglicht eine effiziente Übertragung grosser Datenmengen zwischen zwei Systemen. Primär wird es verwendet um Dateien jeglicher Art zwischen einem FTP-Server und einem FTP-Client bidirektional zu übertragen. Um eine zuverlässige und effiziente Übertragung von Dateien zu ermöglichen verwendet FTP als Transportprotokoll TCP.
Welche zwei Übertragungsarten setzt FTP ein und wofür?
Damit auch bei der Übertragung von grossen Dateien, die eine gewisse Zeit in Anspruch nimmt, weiterhin Kommandos zwischen FTP-Client und FTP-Server ausgetauscht werden können, arbeitet FTP mit zwei parallelen Verbindungen:
* CONTROL: Über diese Verbindung werden Kommandos zwischen FTP-Client und FTP-Server ausgetauscht.
* DATA: Über diese Verbindung werden, in Abhängigkeit der Kommandos die Daten übertragen.
Aktives und Passives FTP
Bei beiden Varianten baut der FTP-Client eine bidirektionale CONTROL-Verbindung zum FTP-Server auf. Der Unterschied zwischen aktivem und passiven FTP bezieht sich auf den Aufbau der DATA-Verbindung:
* Aktiv: FTP-Server kann eine DATA-Verbindung zum FTP-Client aufbauen.
* Passiv: FTP-Server kann keine DATA-Verbindung zum FTP-Client aufbauen. Dies ist z.B. der Fall wenn der FTP-Client hinter einer Firewall liegt oder NAT aktiv ist. Der FTP-Client wird in die Lage versetzt eine DATA-Verbindung zum FTP-Server aufzubauen.