Kommunikation, also der Austausch von Nachrichten, bedarf der Regelung. Das gilt für den zwischenmenschlichen Bereich, in dem solche Regelungen meist nur implizit vorhanden sind, wie für den technischen Bereich, in dem sie üblicherweise dokumentiert vorliegen. Zu regeln sind unter anderem
Eine Regelung der Kommunikation zwischen zwei oder mehr Kommunikationspartnern wird als Kommunikationsprotokoll oder kurz als Protokoll bezeichnet. Im Deutschen hat der Begriff Protokoll noch weitere Bedeutungen, wird aber im Kontext der Lehrveranstaltung immer als Kommunikationsprotokoll verstanden. Findet die Kommunikation, die durch ein Protokoll geregelt wird, in einem Computernetzwerk statt, wie das bei den verteilten Systemen der Fall ist, dann spricht man von einem Netzwerkprotokoll.
Soll ein Protokoll praktisch verwendet werden, dann muss es eine Protokollimplementierung geben. Diese besteht aus einer Netzwerk-Hardware (Netzwerkschnittstelle, Netzwerkkarte) für die Bitübertragung und aus einer Netzwerk-Software (Protokoll-Software), die zusammen einen protokollkonformen Austausch der Nachrichten vornehmen. Häufig, und in dem vorliegenden Manuskript wird diesem Sprachgebrauch gefolgt, wird von einem Protokoll gesprochen, wenn seine Implementierung gemeint ist.
Netzwerkprotokolle für das Internet entstehen durch einen öffentlichen Prozess und werden nicht durch Behörden wie beispielsweise die International Standardization Organization (ISO) oder durch Industrieunternehmen festgelegt. Zunächst veröffentlicht die Internet Engineering Task Force (IETF) ein Rohkonzept (Draft), das weltweit in Arbeitsgruppen und auf Fachtagungen diskutiert wird. Daraus entsteht als Protokoll ein sogenannter Request For Comments (RFC), der in der Regel im Laufe der Zeit nachgebessert wird und weitere RFCs nach sich zieht. Alle RFCs (und alle Drafts) sind unter der folgenden Web-Adresse einsehbar:
Um komplexe Kommunikationsprotokolle, und dazu zählen die Internetprotokolle, handhabbar zu machen und dadurch die zugehörige Programmentwicklung zu unterstützen, werden sie üblicherweise als eine Schichtung von aufeinander aufbauenden Einzelprotokollen beschrieben. Jede Schicht (Layer) eines solchen Schichtenmodells regelt nur einen Teil der gesamten Netzwerkkommunikation. Zu jeder Schicht gehört eine schichtbezogene Software, bzw. bei der physikalischen Bitübertragung auch eine Hardware, die genau die Teilaspekte der gesamten Netzwerkkommunikation implementiert, mit denen sich diese Schicht befasst. Das gesamte Netzwerkprotokoll stellt sich damit als ein Protokollstapel (Protocol Stack) dar.
Die Soft- bzw. Hardware, die in jeder dieser Schichten ein (Teil-)Protokoll implementiert, stellt seinen Teil der Kommunikationsregelung als Dienstleistung den Protokollen der übergeordneten Schicht zur Verfügung, und es nutzt die Dienstleistungen der Protokolle der untergeordneten Schichten. Das gesamte Netzwerkprotokoll stellt sich demnach als eine sequenzielle Abfolge der Protokolle der einzelnen Schichten dar. Sind die Schnittstellen zwischen den Schichten genau definiert und nutzt jede Schicht nur die Dienstleistungen der unmittelbar unter ihr liegenden Schicht, dann kann im Prinzip jedes Protokoll in jeder Schicht unabhängig von den Protokollen der anderen Schichten entwickelt und bearbeitet werden.
Wird der Benutzer bzw. ein Anwendungsprogramm als anschaulich oben und die Hardware (die Bitübertragung) als anschaulich unten betrachtet, dann entsteht durch ein solches Schichtenmodell der Eindruck, dass Nachrichten beim Sender von der Anwendung durch den Protokollstapel über das Übertragungsmedium bis zum Empfänger fließen, wo sie den umgekehrten Weg vom Übertragungsmedium von unten durch den Protokollstapel bis hoch zur Empfängeranwendung nehmen.
Im Folgenden werden zwei weit verbreitete Schichtenmodelle für Netzwerkprotokolle vorgestellt, nämlich das
Das DoD-Modell beschreibt die Internetkommunikation. Die anfängliche Finanzierung der Internettechnik durch das amerikanische Department of Defense (DoD) hat dem Modell seinen Namen gegeben. Es teilt die Netzwerkkommunikation im Internet in die folgenden vier Schichten ein:
Die Schichten haben inhaltsbezogene Namen und sind von unten (Hardware) nach oben (Anwender) nummeriert. In jeder Schicht gibt es mehrere (manchmal auch viele, insgesamt mehrere hundert) konkrete Protokolle. Auf jedem Rechner, der sich am Internet beteiligen will, müssen alle vier Schichten realisiert sein. Das heißt, es müssen die zugehörigen Protokolle zur Verfügung stehen. Mit anderen Worten: Auf jedem Rechner im Internet müssen
vorhanden sein. Kommunizieren zwei Anwendungen im Internet miteinander, dann benutzen beide in jeder Schicht entweder jeweils das gleiche Protokoll, was üblicherweise der Fall ist, oder sie benutzen jeweils zwei miteinander kompatible Protokolle. Die Daten, die ein Anwendungsprotokoll zum Beispiel durch einen Dialog mit einem Anwender oder einem anderen Programm erzeugt, werden einem Transportprotokoll übergeben, das sie für eine Übergabe an einen anderen Rechner vorbereitet. Von da gelangen sie zu einem Internetprotokoll, das sie um Informationen über den Transportweg durch einen möglicherweise hochkomplexen Verbund von Rechnernetzwerken ergänzt, und schließlich werden sie durch ein Netzzugangsprotokoll und ein Übertragungsmedium an einen anderen Rechner geleitet. Auf der Empfängerseite nimmt ein Netzzugangsprotokoll die Daten von dem Übertragungsmedium entgegen und reicht sie über ein Internetprotokoll und ein Transportprotokoll an das Empfänger-Anwendungsprotokoll weiter, von dem sie einem Benutzer oder einem Programm übergeben werden können, das dann seinerseits die Rolle eines Senders von Nachrichten übernehmen könnte.
Zu jeder DoD-Schicht soll jetzt ein konkretes Internetprotokoll angegeben werden:
Das bereits erwähnte Protokoll HTTP ist also ein Anwendungsprotokoll. Dieses HyperText Transfer Protocol regelt den Nachrichtenaustausch im World Wide Web des Internet zwischen einem Web-Browser und einem Web-Server. In ihm ist unter anderem festgelegt, welche Anforderungen ein Browser stellen darf, wie sie zu formulieren sind und wie ein Server darauf zu reagieren hat. TCP ist ein Transportprotokoll, IP ein Internetprotokoll und WLAN ein Netzzugangsprotokoll. Die Kommunikationsaspekte, die jedes dieser Protokolle unter anderem behandelt, zeigt die nächste Grafik:
Zusammen mit dem Internet sind weitere Netzwerke entstanden, und sie entstehen noch immer. Die International Standardization Organization (ISO) hat deshalb Ende der siebziger Jahre des vorigen Jahrhunderts eine Arbeitsgruppe namens Open Systems Interconnection (OSI) eingesetzt und damit beauftragt, einen allgemeinen, nicht auf das Internet bezogenen Beschreibungsrahmen für Netzwerkprotokolle zu entwerfen. Entstanden ist ein so genanntes Referenzmodell, das keine konkreten Protokolle enthält, sondern Festlegungen (Rahmen), welche Sachverhalte konkrete Protokolle in den einzelnen Schichten des Modells beschreiben sollen. Es ist Sache der Protokollhersteller, die Protokollrahmen auszufüllen und mit konkreten Implementierungen zu versehen.
Die OSI hat sich am DoD-Modell orientiert und zwei Schichten von ihm, nämlich die oberste und die unterste verfeinert. Die Schicht namens Anwendung wurde aufgeteilt in die ISO/OSI-Schichten
Aus der Schicht namens Netzzugang wurden die ISO/OSI-Schichten
Das folgende Bild zeigt das ISO/OSI-Referenzmodell mit den deutschen und englischen Bezeichnungen und der Schichtennummerierung:
In der nächsten Grafik werden die beiden Modelle einander gegenüber gestellt:
In den folgenden Absätzen werden die Aufgaben der Protokolle in den einzelnen Schichten etwas näher erläutert. Da das ISO/OSI-Modell keine konkreten Protokolle, sondern lediglich Protokollrahmen, beschreibt, konkrete Protokolle aber als Beispiele gebraucht werden, orientieren sich die folgenden Ausführungen am DoD-Modell, ergänzt durch gelegentliche Hinweise auf das ISO/OSI-Modell.
In einem Anwendungsprotokoll werden nur solche Kommunikationssachverhalte behandelt, die eine unmittelbare Kommunikation zweier oder mehrerer Kommunikationspartner betreffen. Technische Gegebenheiten wie Threads, Prozesse, Rechner und Netzwerke spielen in dieser Schicht keine Rolle. Darauf wird erst in den anschaulich darunter liegenden Schichten eingegangen. Unter anderem beschreiben Anwendungsprotokolle folgende Sachverhalte, die hier als Fragen formuliert worden sind:
Ein Beispiel für ein Anwendungsprotokoll ist das bereits mehrfach erwähnte HTTP, das die Browser-Server-Kommunikation im World Wide Web beschreibt. Es legt einen Kommunikationsverlauf wie den folgenden fest, der hier aus didaktischen Gründen in deutscher Sprache gehalten ist:
Im ISO/OSI-Modell gehört der durch das Beispiel beschriebene Teil der Client/Server-Kommunikation in die Schicht 7. Es ist dort ein Anwendungsdienst.
Anwendungsprotokolle müssen Regelungen zum Umgang mit Datentypen enthalten, denn unterschiedliche Hard- und Softwaresysteme verwenden unterschiedliche Darstellungen der Daten. Für die Darstellung von Schriftzeichen beispielsweise sind die folgenden Kodierungen verbreitet:
Jedes Anwendungsprotokoll muss den Umgang mit diesen unterschiedlichen Datendarstellungen regeln. Im ISO/OSI-Modell ist diese Aufgabe den Protokollen der Darstellungsschicht, das ist die mit der Nummer 6, zugewiesen worden. Aber auch der Ablauf der einzelnen Kommunikationsschritte muss von dem Anwendungsprotokoll geregelt werden. HTTP beispielsweise legt fest, dass ein Web-Server passiv auf Anforderungen eines Browsers warten muss. Im ISO/OSI-Modell übernehmen solche Regelungen die Protokolle der Schicht 6, der Kommunikationssteuerung.
Auf jedem Rechner, der am Internet teilnimmt, werden Anwendungen durch Prozesse (und deren Threads) realisiert, die zusammen mit vielen anderen Prozessen auf diesem Rechner ablaufen. Dieser Sachverhalt hat dazu geführt, dass Rechner im Internet oft als Hosts (Gastgeber) bezeichnet werden. Sie sind Gastgeber für Anwendungen. Dass diese Hosts im Allgemeinen durch Netzwerke miteinander verbunden sind, wird von den Transportprotokollen nicht berücksichtigt. Diese Aufgabe hat man den Internet-Protokollen übertragen. Ein Transportprotokoll beschreibt eine Situation, in der zwei Anwendungen auf zwei Rechnern durch ein Daten-Transportsystem miteinander verbunden sind. Geregelt werden unter anderem die folgenden Sachverhalte, die auch hier wieder als Fragen formuliert worden sind:
Im Internet gibt es zwei dominierende Transportprotokolle, nämlich das User Datagram Protocol (UDP), ein Datagrammdienst (Datagram Service) und das Transmission Control Protocol (TCP), ein Datenstromdienst (Stream Service), die in den Abschnitten 4.3 (User Datagram Protocol) und 4.4 (Transmission Control Protocol) noch ausführlich behandelt werden.
In der zweiten Schicht des DoD-Modells bzw. in der dritten des ISO/OSI-Modells, die dort Vermittlungsschicht heißt, werden Netzwerkbelange in die Potokolle einbezogen. Damit wird berücksichtigt, dass das Internet aus einem (sehr großen und komplexen) Verbund von Netzwerken besteht. Auf dieser Schicht ist das Internet Protocol ( IP) angesiedelt, das derzeit in zwei Versionen vorliegt. Im Kapitel 5 (Vermittlungsprotokolle im Internet) werden beide vorgestellt. IP beschreibt unter anderem,
Der Netzwerkverbund, auf dem das Internet beruht, enthält ganz unterschiedliche physikalische Netze. Das heißt, dass die einzelnen Netze mit unterschiedlichen physikalischen Größen und Techniken arbeiten. Die nachrichtentechnischen Gegebenheiten der Internetkommunikation beschreibt die Netzzugangsschicht des DoD-Modells. Im ISO/OSI-Modell ist diese Schicht in die zwei Schichten Sicherung (Data Link Layer) und Bitübertragung (Physical Layer) aufgeteilt worden. Ein Netzzugangsprotokoll beschreibt für ein bestimmtes physikalisches Netzwerk unter anderem
Das weit verbreitete Ethernet (vgl. Abschnitt 6.4 (Ethernet)) beispielsweise ist ein Netzwerk, das als Kupferkabelnetz, Funknetz oder Glasfasernetz betrieben werden kann.
Ein Anwendungsprotokoll auf einem bestimmten Host erzeugt entweder (vielleicht als Server) selbst Daten oder es erhält (vielleicht als Client) welche durch einen Dialog mit einem Benutzer oder von einem anderen Programm. Wie auch immer diese Daten entstehen, das Anwendungsprotokoll setzt, bevor es sie an ein Transportprotokoll weitergibt, unmittelbar vor sie einen eigenen Datenbereich. Diese zusätzlichen Daten heißen Anwendungsprotokollkopf (Header). In ihm werden die Belange des Anwendungsprotokolls festgehalten. Im Kapitel 3 (Anwendungsprotokolle im Internet) gibt es dafür Beispiele, und insbesondere wird im Abschnitt 3.2 (HyperText Transfer Protocol) auf den Aufbau von Browser-Requests eingegangen.
Beim Senden einer Nachricht durchläuft diese den gesamten Protokollstapel und jedes dabei verwendete Protokoll fügt protokollspezifischen Daten an. Das DoD-1-Protokoll teilt in der Regel seine Daten in zwei Bereiche auf, von denen es einen Teil anschaulich vor und einen hinter die von dem DoD-2-Protokoll erhaltenen Daten schreibt. Durch dieses Verfahren entsteht ein Datenpaket, bei dem die eigentliche Nachricht der Anwendung durch Protokollköpfe eingeschachtelt wird. Dieses Datenpaket wird als Rahmen (Frame) bezeichnet und physikalisch bitweise übertragen.
Die folgende Grafik veranschaulicht diese Schachtelung von Protokollköpfen beim Sender. Sie beschreibt eine Situation, bei der ein Benutzer Daten an ein Anwendungsprotokoll, hier an einen DoD-4-Client, vielleicht an einen Web-Browser, übergibt.
Beim Empfänger werden von jedem Protokoll in jeder Schicht die zu seiner Schicht gehörenden Angaben ausgewertet und der zugehörige Protokollkopf aus der zusammengesetzten Nachricht entfernt, bevor sie in die nächste Schicht weitergeleitet wird. Auf diese Art erhält schließlich die Empfängeranwendung die für sie gedachte ursprüngliche Nachricht des Kommunikationspartners.