Internet-Protokolle, Teil 1: TCP/IP, der Grundstein für Anwendungsprotokolle

Architektur/Methoden  –  20 Kommentare

Ob Internet oder Machine to Machine (M2M), ob Peer to Peer oder Client/Server, Anwendungsprotokolle verbinden die Knoten eines digitalen Netzes. Für Entwickler ist es wichtig, Unterschiede zwischen Internet-Protokollen wie HTTP, SMTP und FTP zu kennen.

Neue Entwicklungen im Internet wie Web APIs und Software as a Service führen vorhandene Protokolle an ihre Grenzen, weshalb in nächster Zeit einige neue zu erwarten sind. Das SPDY-Protokoll von Google und der nicht unumstrittene Entwurf des HTTP/2-Standards zeigen eine klare Tendenz, welche Funktionen derzeit gebraucht werden.

Ein Vergleich von Anwendungsprotokollen sowie eine Klassifizierung und Betrachtung immer wiederkehrender Funktionen lohnen sich und erleichtern dem Anwender die Entscheidung, welches der vielen Protokolle zur Bewältigung einer Aufgabe geeignet ist. Wenn es doch notwendig sein sollte, ein eigenes Protokoll zu entwickeln, kann ein Überblick außerdem helfen, den Aufwand besser einschätzen zu können.

Vielschichtige Verbindungen

1973 begann eine kleine Forschergruppe am MIT im Auftrag der US-Luftwaffe, Internetzwerk-Protokolle für das ARPA-Netz zu entwickeln. Sie schuf ein Protokoll, das unter dem Namen Transmission Control Program (TCP) 1974 formell in RFC 675 dokumentiert wurde. Es diente als Grundlage für Interprozesskommunikation in Netzwerken und gilt als Vorgänger der heute verwendeten TCP/IP-Protokollsuite.

Über die Artikelserie Internet-Protokolle

Vernetzte Anwendungen sind heute selbstverständlich. Der Transport von Daten durch das Internet wird von Protokollen organisiert, die sich in den letzten zwei Jahrzehnten nicht oder nur wenig verändert haben. Diese Artikelserie beschreibt die Technik der Internet-Protokolle aus Sicht des Anwendungsentwicklers. Möglichkeiten und Grenzen existierender Standards und zukünftiger Lösungen stehen dabei im Vordergrund. Der erste Teil beschreibt Grundbegriffe der TCP/IP-Protokollsuite. Im zweiten Teil werden häufig verwendete Anwendungsprotokolle beschrieben und verglichen. Der dritte und letzte Teil widmet sich den "Next Generation"-Protokollen, die leistungsfähigere Verbindungen im Internet ermöglichen sollen.

Das Transmission Control Program nahm die Daten der Prozesse über Sockets entgegen, verpackte sie in Pakete und organisierte deren Transport durch das Netzwerk. Auf der Seite des Empfängers wurden die Daten der Anwendung bereitgestellt, für die sie bestimmt waren.

Jon Postel, einer der wichtigsten Pioniere des Internet und TCP/IP, stellte jedoch 1977 den monolitischen Aufbau von TCP in Frage. Er veröffentlichte im Zuge dessen eine Reihe von Kommentaren über den Stand von TCP (Internet Engineering Note Nummer 2, oder IEN 2):

"We are screwing up in our design of internet protocols by violating the principle of layering. Specifically we are trying to use TCP to do two things: serve as a host level end to end protocol, and to serve as an internet packaging and routing protocol. These two things should be provided in a layered and modular way. I suggest that a new distinct internetwork protocol is needed, and that TCP be used strictly as a host level end to end protocol." – Jon Postel, IEN 2, 1977

Postel legte damit den Grundstein für die Aufteilung in TCP als Transportschicht und IP als Netzwerkschicht. Die genaue Definition der beiden Protokolle wurde 1981 in RFC 793 (TCP) und RFC 791 (IP) veröffentlicht. Die in Abbildung 1 dargestellten Schichten zeigen den modularen Aufbau der modernen TCP/IP-Protokollsuite.

Jede Schicht hat eine andere Aufgabe [1]:

  1. Die Verbindungsschicht besteht aus dem Gerätetreiber für die Netzwerkkarte und den für dessen Verwendung notwendigen Teilen des Betriebssystems. Zusammen behandeln sie alle Details der physikalischen Verbindung zum Netzwerk.
  2. Die Netzwerkschicht sorgt dafür, Datenpakete über das Netzwerk zu bewegen. Neben dem IP (Internet Protocol) bilden ICMP (Internet Control Message Protocol) und das IGMP (Internet Group Management Protocol) die Netzwerkschicht der TCP/IP-Protokollsuite.
  3. Die Transportschicht organisiert den Datenfluss zwischen Anwendungen im Netzwerk. Neben TCP enthält sie das User Datagram Protocol (UDP), das sich von TCP erheblich unterscheidet.
  4. Die Anwendungsschicht stellt die für eine Anwendung notwendigen Funktionen zur Verfügung. Durch die Vielzahl unterschiedlicher Aufgaben, die Programme im Netz erfüllen, ist die Anzahl der verwendeten Protokolle in dieser Schicht deutlich größer. Das richtige auszuwählen, kann zeitraubend sein. Oft ist die getroffene Entscheidung am Ende ein Kompromiss zwischen den tatsächlichen Anforderungen der Anwendung und den Möglichkeiten des gewählten Protokolls.
Die TCP/IP-Protokollsuite lässt sich in Schichten unterteilen (Abb. 1)