Netzwerkprotokoll

Ein Netzwerkprotokoll (auch Netzprotokoll) ist ein Kommunikationsprotokoll für den Austausch von Daten zwischen Computern bzw. Prozessen, die in einem Rechnernetz miteinander verbunden sind (verteiltes System). Die Vereinbarung besteht aus einem Satz von Regeln und Formaten (Syntax), die das Kommunikationsverhalten der kommunizierenden Instanzen in den Computern bestimmen (Semantik).

Der Austausch von Nachrichten erfordert häufig ein Zusammenspiel verschiedener Protokolle, die unterschiedliche Aufgaben übernehmen (beispielsweise Internetprotokollfamilie). Um die damit verbundene Komplexität beherrschen zu können, werden die einzelnen Protokolle in Schichten organisiert. Im Rahmen einer solchen Architektur gehört jedes Protokoll einer bestimmten Schicht an und ist für die Erledigung spezieller Aufgaben zuständig (beispielsweise Übermitteln an einen bestimmten Knoten – Schicht 2). Protokolle höherer Schichten verwenden Dienste von Protokollen tieferer Schichten (Schicht 3 bildet ein logisches Netzwerk und verwendet Schicht 2 für die physische Zustellung). Zusammen bilden die so strukturierten Protokolle einen Protokollstapel – in Anlehnung an das ISO-OSI-Referenzmodell (siehe auch DoD-Schichtenmodell). Nachrichten einer bestimmten Schicht werden auch als Protokolldateneinheiten (protocol data units) bezeichnet.

Der typische Aufbau eines Datenpaketes 
Der in einem Protokoll beschriebene Aufbau eines Datenpaketes enthält für den Datenaustausch wichtige Informationen über das Paket wie beispielsweise:

 dessen Absender und Empfänger, damit Nicht-Empfänger das Paket ignorieren
 den Typ des Pakets (beispielsweise Verbindungsaufbau, Verbindungsabbau oder reine Nutzdaten)
 die Paketgröße, die der Empfänger zu erwarten hat
 bei mehrteiligen Übertragungen die laufende Nummer und Gesamtzahl der Pakete
 eine Prüfsumme zum Nachvollziehen einer fehlerfreien Übertragung

Diese Informationen werden den Nutzdaten als Header vorangestellt oder als Trailer angehängt.

Außerdem werden in manchen Protokollen feste Paketsequenzen für den Verbindungsaufbau und -abbau beschrieben. Diese Maßnahmen verursachen weiteren Datenverkehr (Traffic) auf den Datenleitungen – den sogenannten Overhead. Dieser Overhead ist unerwünscht, weil er die Kapazität belastet, wird aber aufgrund der wichtigen Aufgaben, die Protokolle leisten, in der Regel in Kauf genommen.

In der Internetprotokollfamilie steht mit dem User Datagram Protocol (UDP) in der Transportschicht auch ein Protokoll mit nur geringem Overhead zur Verfügung, das keine Ende-zu-Ende-Kontrolle der Übertragung gewährleistet, so dass Datagramme eventuell verloren gehen können oder die Reihenfolge beim Empfang nicht der beim Versand entspricht. Im Gegensatz dazu wird beim Transmission Control Protocol (TCP) die vollständige Zustellung der Datenpakete überwacht und diese außerdem in die richtige Reihenfolge gebracht, so dass der Anwendung ein zusammenhängender Datenstrom übergeben wird.

Unterscheidungsmerkmale von Netzprotokollen 
 Findet die Kommunikation nur in eine Richtung statt, spricht man von Simplex, fließen die Daten wechselweise in beide Richtungen, von Halbduplex oder gleichzeitig in beide Richtungen, von Vollduplex.
 Wird die Kommunikation über ein Taktsignal synchronisiert, spricht man von synchroner Datenübertragung, ansonsten von asynchroner Datenübertragung.
 Die Anzahl von Parteien, die an der Kommunikation teilnehmen: Gibt es für eine Übermittlung immer nur einen Empfänger, spricht man von Unicast, bei Übertragungen an mehrere Teilnehmer von Multicast. Wird das Paket an alle gesandt, so ist es ein Broadcast.
 Stellung der Kommunikationsteilnehmer: Sind diese untereinander gleichberechtigt, spricht man von Peer-to-Peer oder symmetrischer, anderenfalls von asymmetrischer Kommunikation. Das am weitesten verbreitete asymmetrische Modell ist das Client-Server-System, bei dem ein Dienstanbieter (der Server) Anfragen von verschiedenen Clients bearbeitet (wobei es immer die Clients sind, die die Kommunikation initiieren, d. h. einen Kanal öffnen).
 Wird nach einer Anfrage auf Antwort gewartet, spricht man von synchroner Kommunikation, andernfalls von asynchroner Kommunikation.
 Während einer paketorientierten Kommunikation werden Nachrichten bzw. Datenpakete übertragen, beim Streaming wird mit einem kontinuierlichen Datenstrom einzelner Zeichen gearbeitet.
 Bei verbindungsorientierten (connection oriented) Protokollen wird durch spezielle Paketsequenzen der Anfang und das Ende einer Verbindung definiert. Innerhalb einer solchen Verbindung wird durch das Protokoll meistens gewährleistet, dass Pakete in einer bestimmten Reihenfolge ankommen und/oder sichergestellt, dass die Pakete nochmals gesendet werden, falls sie nicht angekommen sind (zum Beispiel TCP). Verbindungslose (connectionless) Protokolle bieten diesen Komfort nicht, haben aber einen geringeren Overhead (zum Beispiel UDP, RTP).

Aufgaben eines Protokolls 
Nachfolgend werden typische Aufgaben eines Netzwerkprotokolls aufgeführt. Ob sie in einem bestimmten Protokoll abgebildet sind, wird durch dessen Einsatzzweck bestimmt.
 Ein sicherer und zuverlässiger Verbindungsaufbau zwischen den an der Kommunikation beteiligten Computern (Handshake)
 Das verlässliche Zustellen von Paketen
 Wiederholtes Senden nicht angekommener Pakete
 Zustellen der Datenpakete an den/die gewünschten Empfänger
 Das Sicherstellen einer fehlerfreien Übertragung (Prüfsumme)
 Das Zusammenfügen ankommender Datenpakete in der richtigen Reihenfolge
 Das Verhindern des Auslesens durch unbefugte Dritte (durch Verschlüsselung)
 Das Verhindern der Manipulation durch unbefugte Dritte (durch MACs oder elektronische Signaturen)

Funktionsbeispiel 
Anhand des Verbindungsaufbau-Prozederes des TCP-Protokolls soll ein einfaches praktisches Beispiel gezeigt werden (Handshake-Verfahren).

 Zunächst schickt Computer 1 ein Datenpaket, in dem steht, dass er eine Verbindung zu Computer 2 aufbauen möchte.
 Darauf antwortet Computer 2, dass er dazu bereit ist.
 Computer 1 bestätigt anschließend Computer 2, dass er verstanden hat, dass Computer 2 bereit ist.

Die Verbindung ist damit hergestellt, und der eigentliche Datenaustausch kann beginnen, im Beispiel eine Dateiübertragung auf Anwendungsebene.

 Computer 1 schickt ein Datenpaket, in dem angefragt wird, welche Dateien verfügbar sind.
 Darauf antwortet Computer 2 mit einer Liste der verfügbaren Dateien.
 Computer 1 schickt ein Datenpaket, in dem eine bestimmte Datei angefordert wird.
 Darauf antwortet Computer 2, dass die Datei existiert, beschreibt die Datei und beginnt mit der Übertragung.

Protokolle zur Datenübermittlung 
Es gibt eine Reihe von grundsätzlichen Protokollen, die den Datenverkehr in einem Netzwerk regeln. Sie werden vom Netzwerkstack – einem speziellen Systemprogramm – allen weiteren Programmen auf diesem Rechner zur Verfügung gestellt. Diese Protokolle dienen als Standard für die Datenübermittlung zwischen unterschiedlichen Systemen, dienen aber keiner Anwendung durch den Benutzer. Dabei legt man sich in der Regel auf eines dieser Protokolle für ein Netzwerk fest. Für das Internet wird die Internetprotokollfamilie verwendet, vor allem TCP/IP und UDP.

Protokolle für bestimmte Anwendungen 
Die Funktionen der Protokolle bauen aufeinander auf: Transportprotokolle bereiten den Übertragungsweg für von ihnen prinzipiell unabhängige Anwendungsprotokolle. Das stellt sicher, dass Anwendungsprogramme auf unterschiedlichen Systemen untereinander kommunizieren können, sobald diese Systeme in der Lage sind, auf irgendeine Art eine Verbindung herzustellen. So regelt beispielsweise das Internet Protocol die weltweit eindeutige Adressierung von Rechnern. Diese Adressierung nutzen dann beispielsweise das Transmission Control Protocol (1981 ff.) zur Datenübertragung und das Simple Mail Transfer Protocol (1982 ff.) zum Übermitteln von E-Mails. Dieses schichtweise Aufeinanderaufbauen der Protokolle wird mit Hilfe des OSI-Modells dargestellt.

Auch dienen Anwendungsprotokolle als Standard für die Übertragung zwischen unterschiedlichen Programmen gleichen Typs. Bekannte Beispiele:

 Laden von Webseiten – HTTP (1991), HTTPS (1995)
 Abholen von E-Mails – POP (1984) oder IMAP (1994)
 Übertragung von Dateien – FTP (1985), TFTP (1981), EFTP (vor 1980), BitTorrent (2001) oder viele andere

Geschichte 
In der Anfangszeit der Vernetzung von Computern gestaltete sich die Datenübertragung schwierig, denn damit ein Computer einen anderen versteht, werden Regelwerke benötigt. Zunächst wurden sie in den Anwendungsprogrammen nur für den jeweiligen Nutzungszweck implementiert – mit dem Nachteil, dass dieses Programm an die vorhandene Netzwerktechnik und das Anwendungsprogramm auf der bzw. den Gegenseiten angepasst werden musste. Daraus folgte, dass oft nur gleiche Systeme untereinander kompatibel waren, was nicht zuletzt von Herstellern auch genutzt wurde, um die Kunden auch zu weiteren Anschaffungen ihrer Produkte zu animieren. Mit stetigen Neuentwicklungen und der Größe der Netzwerke stieg jedoch auch ihre Heterogenität, so dass sich die Forderung nach universell einsetzbarer Technik und Programmauswahl immer weiter durchsetzte. Dadurch wurden in den späten 1970er- und in den 1980er-Jahren von Computerherstellern modularisierte Protokolle entwickelt, die von nun an in abgeschlossenen Rechnernetzen als Übertragungsstandards galten.

Im Jahr 1968 wurden auf Veranlassung des amerikanischen Verteidigungsministeriums (DoD) von der staatlichen Forschungseinrichtung ARPA Versuche durchgeführt, mit denen grundlegende Erkenntnisse über die Funktionsweise von Rechnernetzen gewonnen werden sollten. Als praktisches Ergebnis wurde 1969 das ARPANET-Projekt aufgelegt, das die transparente Übertragung von Daten zwischen unterschiedlichen Teilnehmersystemen ermöglichen sollte – unabhängig von der Strecke, dem Medium oder dem Umstand der Übertragung. Ab 1983 hatte sich im ARPANET die Internetprotokollfamilie als Sammlung zusammenhängender Standards zuverlässiger und leistungsfähiger Datenübertragung durchgesetzt. Sie wird auch verwendet, nachdem das ARPANET als Internet der Öffentlichkeit zugänglich wurde, und gilt dadurch, dass viele Computer spätestens seit den 2000er Jahren mit dem Internet in Verbindung stehen, als Quasistandard für viele Netzwerkanwendungen.

Siehe auch 
 Liste der standardisierten Ports

Literatur 
 Hein, Reisner: TCP/IP ge-packt. mitp-Verlag, Bonn 2001.
 G. Siegmund: Technik der Netze. 5. Aufl., 1296 S., Berlin und Offenbach: VDE Verlag, 2003.
 H. König: Protocol Engineering – Prinzip, Beschreibung und Entwicklung von Kommunikationsprotokollen. B. G. Teubner, Stuttgart / Leipzig / Wiesbaden, 2003.

Weblinks 

 IANA-Liste der Protokolle mit den dazugehörigen Nummern
 banalyzer.de
 Liste mit Protokollen mit OSI-Modell in der Fernwirktechnik