TCP/IP - Haussprache des Internet

netplanet Werbung

Das Netzwerkprotokoll TCP/IP ist die "Haussprache" und das zentrale Übertragungsprotokoll des Internet. Genau genommen ist TCP/IP ein Überbegriff für eine ganze Protokollfamilie, die auf das so genannte "Internet Protocol" aufbaut und das letztendlich dafür verantwortlich ist, zu übertragende Dateien paketweise im Internet zu übertragen.

Die Geschichte des Internet-Protokolls

Die ersten Überlegungen für ein neues Protokoll im damaligen ARPANet (siehe hierzu auch Das Internet wird erwachsen) kamen Mitte der siebziger Jahre des 20. Jahrhundert auf. Das damals im ARPANet eingesetzte Network Transfer Protocol (NTP, nicht zu verwechseln mit dem Network Time Protocol) war schwerfällig und unterstützte lediglich einen Adressraum von 256 unterschiedlichen Adressen. Die Festlegung auf das heute verwendete Internet-Protokoll war dabei keineswegs von vorneherein klar, denn die erste Zeit der Entwicklungen war geprägt von Diskussionen, ob das zukünftige Protokoll weiterhin dem DoD-Schichtenmodell oder eher dem OSI-Schichtenmodell entsprechen sollte (siehe hierzu auch Das Internet wird erwachsen).

Nach langwierigen und schwierigen Diskussionen setzten sich die "Internet-Leute" mit dem DoD-Schichtenmodell durch, so dass danach die ersten Entwicklungen beginnen konnten. Das Ergebnis war Ende der siebziger Jahre das Interne Protocol (IP), das in der Fachsprache mit IPv4 abgekürzt wird und die Version 4 kennzeichnet. Tatsächlich ist es so, dass IPv4 die vierte Version der IP-Implementierung ist, obwohl erst IPv4 der fertige Standard war; die ersten drei Versionen waren lediglich Entwicklungsschritte, die niemals eingesetzt wurden.

Der offizielle Startschuss für TCP/IP kam am 1. Januar 1983. An diesem für das Internet geschichtsträchtige Samstag wurde das gesamte ARPANet, das immer noch aus nur einigen hundert Großrechnern gebildet wurde, auf TCP/IP umgestellt und gleichzeitig der US-militärische Teil des ARPANet in das getrennte MILNet ausgelagert. Ab diesem 1. Januar 1983 beginnt der Siegeszug des Internet-Protokolls quer durch die gesamte Netzwerkwelt.

Paketvermittelnde Datenübertragung

Viele Netzwerkprotokolle arbeiten mit der so genannten paketvermittelnden Datenübertragung, also dem Ansatz, eine zu übertragende Information in einzelnen Datagrammen aufzusplitten und diese einzeln zu übertragen. Auf diese Weise lassen sich Übertragungswege effizienter nutzen, da nicht für jeden Übertragungskanal ein exklusiver Weg geschaltet sein muss (siehe hierzu auch Arten von Netzwerken).

Für das Internet bedeutet die paketvermittelnde Datenübertragung, dass jegliche Information in einzelnen IP-Datagrammen übertragen werden, die maximal eine Größe von 64 Kilobyte haben können. Wird also eine größere Datei übertragen, passiert dies in vielen einzelnen Datagrammen, jede mit Absender- und Zielinformationen versehen und durchnummeriert. Die Modellierung in Schichten hat dabei den entscheidenden Vorteil, dass Netzwerkgeräte nur die äußeren Schichten analysieren müssen, um ihre Aufgabe zu erfüllen. Ein Switch beispielsweise, der weitgehend nur auf der Netzzugangsschicht arbeitet, wird sich nur um diese Ebene eines Datagrammes kümmern; ein Router die ersten beiden bis zur Internet-Schicht usw. Die Abgrenzung auf die jeweils relevanten Daten und Schichten, ohne den gesamten Inhalt eines Datagrammes analysieren zu müssen, spart Rechenzeit auf den Netzwerkgeräten ein und wirkt sich unmittelbar auf die Verarbeitungsgeschwindigkeit der Gerätschaften aus.

Grundlagen zur TCP/IP-Protokollfamilie

TCP/IP ist an sich nicht ein Übertragungsprotokoll, sondern die Bezeichnung für eine Familie von Übertragungsprotokollen, die als Basis das Internet Protocol (IP) haben. Das wird deutlicher, wenn man sich in diesem Zusammenhang das DoD-Schichtenmodell (siehe hierzu auch Schichtenmodelle) und die Schichtenzuordnung einige Protokolle aus der TCP/IP-Protokollfamilie näher anschaut:

Anwendungsschicht z.B. FTP, HTTP, SMTP, POP3, DNSS
Transportschicht z.B. TCP, UDP, GRE
Vermittlungsschicht z.B. ICMP, IP
Netzzugangsschicht z.B. PPP, PPPoE, Ethernet, Token Ring, FDDI

Diese Zuordnung spielt eine herausragende Rolle in der Datenübertragung, denn jede Schicht kommt bei der Übertragung zum Tragen, in dem die Daten mit dem jeweiligen Protokoll eingekapselt und dann an die nächste Schicht übergeben werden. Dem Protokoll, das die Daten einer darüberliegenden Schicht einkapselt, ist es dabei weitgehend egal, was der Inhalt (in der Fachsprache spricht man hier von der Payload, der "Nutzlast") des einzukapselnden Paketes ist. Der Aufbau eines solchen IP-Datagramms (in der Fachsprache wird nicht von "Paketen", sondern von "Datagrammen" gesprochen) sieht dann folgendermaßen aus:

Schematischer Aufbau eines TCP/IP-DatagrammsGenerell ist eine Protokollebene nach dem Muster "Kopf - Nutzlast" aufgebaut. Der Kopf enthält Protokollinformationen wie beispielsweise die Adresse des Absenders und des Empfängers, Informationen über Priorisierungen und auch Nummerierungen der einzelnen Datagramme (hierzu weiter unten näheres).

Nach dem Kopf folgt die Nutzlast, die eigentlich zu übertragende Information, die mit der eigentlichen Protokollebene nichts zu tun haben muss. Im Beispiel links ist ein Ethernet-Datagramm abgebildet, welches als Nutzlast ein IP-Datagramm trägt, das wiederum als Nutzlast ein TCP-Datagramm und das schließlich ein HTTP-Datagramm. Zu Prüfzwecken ist jede Protokollebene mit einer Prüfsumme gesichert, um ein fehlerhaftes Datagramm erkennen zu können. Es wird hier also deutlich, dass eine zu übertragende Information beim Absender das DoD-Schichtenmodell "herunterläuft", dann übertragen wird und beim Empfänger wieder "hochläuft".

Die strikte Trennung zwischen IP und dem darunter liegenden Übertragungsmedium und die gute Flexibilität des Internet-Protokolls an sich sind übrigens eine der Hauptgründe für den Siegeszug von TCP/IP in der elektronischen Datenverarbeitung.

Aufbau

Vermittlungsschicht - Das Internet Protocol (IP)

Das Internet-Protokoll stellt die Kernkomponente von TCP/IP dar und ist das logische Übertragungsprotokoll, auf dem dann höhere Übertragungsprotokolle aufsetzen und das selbst auf dem eigentlichen Übertragungsmedium aufsetzt. IP sorgt für das Versenden von Datagrammen innerhalb von IP-Netzen, das mit dem so genannten Routing (siehe hierzu auch Übertragung im Netz - Routing) realisiert wird. Vereinfacht gesehen enthält ein IP-Datagramm deshalb nur die IP-Adresse des Absenders und des Empfängers, sowie weitere übertragungspezifische Parameter.

Zu den Grundsäulen von IP gehört des Weiteren das Schema der IP-Adressierung (siehe hierzu IP-Adressierung) und das System der Netzwerkbildung durch Segmentierung dieses Adressraumes, dem so genannten Subnetting (siehe hierzu IP-Subnetting). Man spricht von "IP-Netzwerken", wenn man es mit einem Netzwerk zu tun hat, dass mit IP-Adressen ausgestattet ist und als Übertragungsprotokoll das Internet Protocol einsetzt. Wenn dieses IP-Netzwerk dann mit dem Internet verbunden ist, sieht man dieses IP-Netzwerk faktisch oft auch schon als das Internet an; das Internet besteht also letztendlich aus nichts anderem als aus einer sehr großen Vernetzung von einzelnen IP-Netzwerken mit einem gemeinsam genutzten Raum von IP-Adressen.

Zu beachten ist, dass IP selbst keine Übertragungssteuerung vornimmt, also beispielsweise nicht sicherstellen kann, ob alle versendeten Datagramme auch beim Empfänger angekommen und quittiert worden sind oder ob überhaupt die versendeten Datagramme zueinander gehören. Das stellen höhere Übertragungsprotokolle sicher, die auf IP aufsetzen, allen voran TCP; IP ist lediglich die vermittelnde Schicht.

Die Vermittlungsschicht ist jedoch nicht immer nur IP!

Ein häufiges Missverständnis ist die Annahme, dass im Internet in der Vermittlungsschicht immer nur IP vorkommen darf. Denn das muss keineswegs so sein. Bestes Beispiel hierfür ist das Internet Control Message Protocol (ICMP), das als Zusatz zu IP eingesetzt wird und zu Diagnose- und Analysezwecke genutzt wird. Mit ICMP arbeiten so Werkzeuge wie beispielsweise "ping" oder "traceroute" (siehe hierzu auch Tools zur Netzanalyse), die bei Aufruf speziell formatierte IP-Datagramme versenden, mit denen dann Laufzeit- oder Wegverfolgungsprüfungen möglich sind.

Transportschicht

Die Transportschicht dient zur Übertragungssteuerung, also für technische Möglichkeiten, einen Datenstrom zu kontrollieren. So eine Übertragungskontrolle ist beispielsweise erforderlich, um eine Datenübertragung weitgehend autonom auf verschiedenste Bandbreiten anzupassen oder um eine Segmentierung von Daten, also die Aufspaltung von zu übertragenden Daten in kleine Datagramme und das Zusammensetzen beim Empfänger, sicherzustellen. Letzteres ist nichts anderes wie die Basis der paketvermittelnden Datenübertragung.

Unterschieden wird bei der paketvermittelnden Datenübertragung zwischen der verbindungsorientierten und der verbindungslosen Datenübertragung:

Exkurs: Verbindungsorientierter und verbindungsloser Nachrichtenaustausch

Verbindungsorientierter und verbindungsloser Nachrichtenaustausch lässt sich am einfachsten durch den Vergleich von Telefon und einer Brieftaube symbolisieren: Ein Telefonanruf steht für einen verbindungsorientierten Nachrichtenaustausch und bringt alle drei Zustände mit, die in einer erfolgreichen, verbindungsorientierten Datenübertragung gegeben sein müssen:

  1. Verbindungsaufbau
  2. Nachrichtenaustausch
  3. Verbindungsabbau.

Verbindungsloser Nachrichtenaustausch verzichtet auf die Phasen des Verbindungsauf- und abbaus und überträgt die zu übertragende Nachricht unmittelbar, auch auf die Gefahr hin, dass der Empfänger möglicherweise nicht bereit für den Empfang ist und den Empfang im Erfolgsfalle auch nicht quittieren kann. Vergleichbar ist das mit einer Nachricht, die mit einer Brieftaube versendet wird: Die Brieftaube startet mit der Nachricht (oder auch ohne), lässt sich nicht zurückrufen und fliegt immer nur den Heimatschlag an. Erreicht sie diesen nicht und ist dem Empfänger nicht bekannt, dass sie mit einer Nachricht gestartet wurde, wird der Empfänger auch nie die Nachricht oder einen Hinweis über einen Nachrichtenversand erhalten.

Als Transportschichtprotokolle werden im Internet am häufigsten das verbindungsorientierte Transmission Control Protocol (TCP) und das verbindungslose User Datagram Protocol (UDP) eingesetzt:

Transmission Control Protocol (TCP)

TCP sorgt in IP-Netzwerken genau für den Mechanismus, den viele Menschen mit dem Internet identifizieren: Vom Absender versendete Datagramme werden beim Empfänger geprüft und deren Empfang gegenüber dem Absender quittiert. Fehlende Datagramme werden anhand durchlaufender Sequenznummern der einzelnen Datagramme erkannt und nochmals beim Absender angefordert. Mit diesem grundlegenden Mechanismus, der weitgehend autonom im Hintergrund stattfindet, wird erst die hohe Flexibilität und Übertragungsstabilität von TCP/IP - und damit auch die hohe Flexibilität des Internet an sich - möglich, da durch die Empfangskontrolle eine vollständige Übertragung von Daten gewährleistet werden kann.

Da verbindungsorientierte Datenübertragung virtuelle Kommunikationskanäle, also quasi "virtuelle Leitungen", abbilden kann, ist TCP für viele höhere Netzwerkprotokolle das Standardprotokoll. Vor allem aus diesem Grund ist auch TCP der Namensgeber für die "TCP/IP"-Protokollfamilie.

User Datagram Protocol (UDP)

UDP ist im IP-Bereich der am häufigsten eingesetzte, verbindungslose Pendant zum verbindungsorientierten TCP. UDP wird dort als Transportschichtenprotokoll eingesetzt, wo die zu übertragenden Daten grundsätzlich immer in einem Datagramm übermittelt werden, beispielsweise DNS-Abfragen (siehe hierzu auch Domain Name System), oder eine Quittierungsfunktion für übertragene Datagramme nicht notwendig ist. Dies ist beispielsweise häufig bei Streaming-Diensten der Fall, bei denen TCP erheblich höheren Übertragungsaufwand bedeuten würden und zudem bei zu übertragenden Videobildern das Fehlen einzelner Datagramme bis zu einem gewissen Grade nicht sehr schädlich sind. Ähnlich verhält es sich bei Voice-over-IP-Anwendungen (siehe hierzu auch Telefonie im Internet). Solch spezialisierte Anwendungen sorgen in der Regel in ihren eigenen, höher liegenden Protokollen für eine eigene Transportsteuerung und Übertragungssicherung, die dann maßgeschneidert auf die eigenen Übertragungsmodalitäten zugeschnitten ist.

IP-Adressen, Portnummern und Endpunkte

Wie wir nun schon wissen, funktioniert die Kommunikation im Internet nach dem obigen Schichtenmodell und damit mit einem Satz untereinander aufbauender Übertragungsprotokolle. Damit ist zwar beschrieben, wie kommuniziert werden kann (also die Kommunikationswege aussehen) aber noch nicht wer mit wem kommunizieren kann, da noch keine Kommunikationspunkte definiert sind. Die beste Straße und die besten Verkehrsregeln nützen wenig, wenn Häuser und Wohnungen an den Straßen nicht adressiert werden können.

Kommunikationswege enden an Kommunikationspunkten, die in der englischen Fachsprache als "Sockets" bezeichnet werden, in der deutschen Sprache auch oft schlicht als Endpunkte. Solche Endpunkte bestehen grundsätzlich aus einer IP-Adresse, die einen Rechner im Internet eindeutig bezeichnet und einem Kommunikationsanschluss an diesem Rechner, der schlicht und einfach in englischer Sprache als Port bezeichnet wird.

Bei diesen beiden Parametern für einen Socket sehen wir sehr schön die Trennung auf die einzelnen Schichten - die IP-Adresse ist der Endpunkt für das Internet Protocol, also für die Vermittlungsschicht und der Port ist der Endpunkt für TCP oder UDP, also für die Transportschicht.

IP-Adressierung

Jeder Rechner im Internet benötigt eine IP-Adresse, die ihn eindeutig im Netz adressiert und ihn zu einem so genannten Host macht. Wird von diesem Host eine Datenübertragung gestartet, so ist seine IP-Adresse die Absenderadresse in allen von ihm gesendeten IP-Paketen, entsprechendes gilt für die IP-Adresse des Empfängers.

Weiterführende Informationen zu diesem sehr wichtigen Thema finden Sie in den umfangreichen Artikeln IP-Adressierung und IP-Subnetting.

Port-Nummern

Ports finden sich als Endpunkte in den Transportschichtprotokollen TCP und UDP und sind als Zahlen definiert, die von 0 bis 65.535 reichen, da die Port-Information in 16 Bit kodiert ist und 16 Bit insgesamt 65.536 Zustände darstellen kann.

Um bei der Nutzung von Port-Nummern eine hohe Systematik zu haben, ist der Nummernraum in drei Bereiche aufgeteilt, der sowohl für TCP-, als auch für den UDP-Port-Nummernraum gilt:

Portbereich Erläuterung
0 - 1.023 Well-known Ports ("Gut bekannte Ports")
Dieser Portbereich enthält feste Zuordnungen zu einzelnen Internet- und Unix-Dienste, beispielsweise der TCP-Port 80 für HTTP oder TCP-Port 25 für SMTP. Zwar können diese Dienste auch auf anderen Ports erreichbar sein, diese feste Zuordnung definiert jedoch einen festen Standard. Verwaltet werden diese Zuordnungen von der IANA, die im Auftrag der Standardentwickler zugeordnet werden.
1.024 - 49.151 Registered Ports ("Registrierte Ports")
Dieser Bereich beinhaltet Ports, die üblicherweise für bestimmte Dienste genutzt werden, jedoch nicht fest wie in obiger Weise zugeordnet sind. Beispielsweise ist es im Internet üblich, dass Webproxies mit dem TCP-Port 8080 konfiguriert werden.
49.152 - 65.535 Dynamic Ports ("Dynamische Ports")
Dieser Bereich ist nicht reglementiert, sondern wird für die dynamische Vergabe von Ports genutzt. Wenn ein Client beispielsweise eine HTTP-Anfrage an einen Webserver auf TCP-Port 80 übermittelt, öffnet er daraufhin bei sich einen TCP-Port in diesem dynamischen Portbereich und übergibt diese Information mit an den Webserver, damit dieser seine Rückantwort an diesen Port übermittelt.

Wenn wir diese Definitionen von IP-Adresse, Portnummern und Endpunkte in der anfänglich bereits angesprochenen Analogie abbilden wollten, könnten wir dies folgendermaßen:

Die Straßen und Gehwege einer Stadt verbinden alle Häuser miteinander, sie sind also die Netzwerkverbindungen. Damit die Übertragung einheitlich funktioniert, gelten auf diesen Straßen und Gehwegen einheitliche Verkehrsregeln. Ein Haus an einer Straße stellt einen Host dar, genau bezeichnet mit dem Straßennamen und seiner Hausnummer. Eine Wohnung wiederum ist eine Einheit innerhalb eines Hauses, bezeichnet durch den Namen auf dem Klingelschild. Die Kombination Straßenname/Hausnummer/Wohnungsbesitzer stellt in unserer Analogie einen Kommunikationsendpunkt dar, denn dahinter ist tatsächlich dann der Kommunikationspartner erreichbar.

TCP/IP in der Netzwerkwelt

Zwar ist TCP/IP im Internet seit 1983 der Protokollstandard, jedoch lange Jahre eben nur im Internet - lokale Netzwerke in Unternehmen und anderen Institutionen arbeiteten lange Jahre mit anderen, meist herstellerabhängigen und weitgehend untereinander inkompatiblen Netzwerkstrukturen und -protokollen (siehe hierzu auch Lokale kabelgebundene Netzwerke). Weit verbreitet waren beispielsweise die Netzwerkprotokolle NetBEUI (Microsoft Windows), IPX/SPX (Novell NetWare), APPC (IBM) oder Apple Talk (Apple Computer). Da unternehmensweite Netzwerke früher erheblich stärker eine Monokultur mit ihren genutzten Betriebssystemen pflegten und es nur wenig Netzwerkkommunikation nach außen gab, konnte sich diese Vielfalt und Inkompatibilität bis weit in die neunziger Jahre des 20. Jahrhundert stabil halten.

TCP/IP erwies sich nach und nach - und insbesondere durch das Aufkommen des Internet - als das flexiblere Protokoll. Das eingesetzte IPv4 erwies sich zwar nicht immer als das technisch wirklich bessere Übertragungsprotokoll, allerdings sprachen es immer mehr Netzwerke von Hause aus. Zusammen mit Ethernet, dessen zentraler Vorteil ebenfalls die außerordentliche Flexibilität gegenüber vorhandenen Netzwerkstrukturen ist, bildet TCP/IP heute eine überlegende Vorherrschaft in den meisten Unternehmensnetzwerken und praktisch eine Marktführerschaft im Heimvernetzungen.

Weiterführende Links

http://www.rvs.uni-bielefeld.de/~heiko/tcpip/
Einführung in TCP/IP von Heiko Holtkamp

WERBUNG
Zum Beginn dieser Seite