Internet-Protokolle, Teil 2: Anwendungsprotokolle im Vergleich

Bevor man ein eigenes Protokoll entwickelt, lohnt es sich häufig, erst einmal zu prüfen, was bestehende bereits leisten. Sei es, um Inspiration und Verständnis zu erlangen, sei es, um zu erkennen, dass man sich die Arbeit sparen kann.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 18 Min.
Von
  • Maik Wojcieszak
Inhaltsverzeichnis

Bevor man ein eigenes Protokoll entwickelt, lohnt es sich häufig, erst einmal zu prüfen, was bestehende bereits leisten. Sei es, um Inspiration und Verständnis zu erlangen, sei es, um zu erkennen, dass man sich die Arbeit sparen kann.

Die im ersten Teil dieser Artikelserie vorgestellte TCP/IP-Protokollsuite ermöglicht die Übertragung von Daten im Netz. Damit jedoch aus dem Datenstrom, den Anwendungen austauschen, eine sinnvolle Kommunikation wird, ist noch Einiges zu tun. Verwendung finden dabei Protokolle, die dem Anwendungsentwickler wichtige Werkzeuge zur Verfügung stellen und modular einsetzbar sind. Das richtige Anwendungsprotokoll aus einer Vielzahl von Möglichkeiten auszuwählen, ist jedoch oft eine Herausforderung.

Das OSI-Modell (*.zip) wurde 1979 als Referenzmodell für Netzwerkprotokolle entwickelt. Die Abkürzung OSI steht für Open Systems Interconnection und ist ein Teil des ISO/IEC-7498-1-Standards, weshalb häufig auch vom ISO/OSI-Modell die Rede ist.

Letztlich hat sich die OSI-Protokollsuite, die gern als zu kompliziert, groß und ineffizient kritisiert wurde, nicht gegen den pragmatischen Ansatz der TCP/IP-Protokollsuite durchsetzen können. Das OSI-Modell eignet sich jedoch gut zur Erläuterung von Netzwerktechniken. Abbildung 1 stellt die sieben Ebenen des OSI-Modells den vier Schichten des TCP/IP-Modells gegenüber, das im ersten Teil dieser Artikelserie vorgestellt wurde. Die Ebenen 1 bis 4 des OSI-Modells entsprechen den Ebenen 1 bis 3 im TCP/IP-Modell. Die Ebenen 5 bis 7 des OSI-Modells teilen die Anwendungsschicht in drei Schichten auf und sollen hier näher betrachtet werden.

Das ISO/OSI-Schichtenmodell gliedert Protokollfunktionen im Gegensatz zum TCP/IP-Modell feiner auf (Abb. 1).


Die Kommunikationssteuerung erzeugt, verwaltet und löscht Verbindungsparameter, die den Datenfluss durch eine oder mehrere Transportverbindungen steuern. Alle Änderungen der Verbindungsparameter müssen beide Kommunikationspartner bestätigen, damit immer ein definierter Zustand entsteht. Falls nötig, werden Daten zwischengespeichert und der Datenfluss synchronisiert. Die Kommunikationssteuerung ist außerdem für die Verwaltung der Transportverbindungen zuständig, die sie je nach Bedarf startet oder beendet.

Daten werden auf verschiedenen Plattformen unterschiedlich dargestellt und sind für die Übertragung in eine allgemein gültige Form zu bringen. Auf der Seite des Empfängers findet dann der umgekehrte Prozess statt. Das Telnet-Protokoll zum Beispiel verwendet auf dieser Ebene maschinenunabhängige Steuerbefehle. Neben dem Festlegen von Steuerzeichen und der Kodierung/Dekodierung der Daten sind auch Verschlüsselung und Kompression Aufgaben der Darstellungsschicht.

Trotz ihres Namens handelt es sich bei der Anwendungsschicht nicht um das Anwendungsprogramm selbst, sondern um eine abstrakte, möglichst standardisierte Schnittstelle, die Netzwerkdienste zur Verfügung stellt. Anwendungen setzen auf dieser Schnittstelle auf.

Beispiele für Dienste auf dieser Ebene sind Dateitransfer, Nachrichtenaustausch oder die Steuerung von Zugriffsrechten. Für den Anwendungsprogrammierer ist nur die Anwendungsschicht sichtbar. Kenntnisse über die darunter liegenden Schichten sind jedoch für das Verständnis der Einsatzmöglichkeiten bestimmter Protokolle notwendig.

Anwendungsprotokolle, die auf der Ebene 5 des OSI-Modells Verbindungsparameter verwenden, sind verbindungsorientiert. Beginn und Ende einer Session sind genau festgelegt. Im Gegensatz dazu beginnen verbindungslose Protokolle, Nutzdaten zu senden, sobald eine Transportverbindung besteht. Das am weitesten verbreitete verbindungslose Protokoll ist wohl HTTP/1.1 und seine Vorgängerversionen. Ursprünglich wurde für jede Anfrage an den Server eine eigene TCP-Verbindung geöffnet und anschließend wieder beendet. Aktuelle Versionen des HTTP-Protokolls erlauben es, Verbindungen mehrfach zu verwenden, um den Datenaustausch zu beschleunigen.

Für den verschlüsselten Transport sensibler Daten zwischen Client und Server ist jedoch eine Erweiterung nötig, die eine abgesicherte Session auf OSI-Ebene 5 etabliert, um eine Verschlüsselung auf OSI-Ebene 6 zu ermöglichen. Dafür sind Verbindungsparameter erforderlich. Weil HTTP diese Parameter nicht vorsieht, wird das verbindungsorientierte HTTPS-Protokoll verwendet.

HTTPS setzt für das Absichern der Verbindung das Transport-Layer-Security-Protokoll (TLS) ein, das früher unter dem Namen Secure Socket Layer (SSL) bekannt war. Der Name wurde im Zuge der Standardisierung im Januar 1999 geändert. TLS wird im OSI-Modell Ebene 5 zugeordnet, da sich dessen Funktionen auf die Session beziehen. Im TCP/IP-Modell dagegen kommt TLS unabhängig vom Anwendungsprotokoll zum Einsatz und wird daher der Transportschicht zugeordnet.

In jedem Fall erfordern eine flexible Steuerung des Datenflusses, Sicherheitsfunktionen wie Authentifizierung und Verschlüsselung oder eine solide Behandlung von Transportfehlern die Verwendung von Verbindungsparametern. Der Aufbau einer Session benötigt jedoch Zeit und Ressourcen und erhöht den Aufwand für die Implementierung.