Das TCP/IP Schichtenmodell Protokolle Bei der TCP/IP Protokollfamilie handelt sich nicht nur um ein Protokoll, sondern um eine Gruppe von Netzwerk- und Transportprotokollen. Da die Protokollfamilie Hardwareunabhängig ist, kann TCP/IP auf verschiedensten Netzwerktypen eingesetzt werden. Bevor wir verstehen können, was überhaupt TCP/IP ist und auf diese Technologie eingehen, müssen wir herausfinden, was überhaupt ein Protokoll ist. Protokolle sind Regeln, die den Nachrichtenaustausch zwischen zwei Kommunikationspartner regeln. Die Verletzung eines der vereinbarten Regeln kann die Kommunikation erschweren oder sie sogar zum Absturz führen. Ein Beispiel für ein zwischen Menschen geregeltes Protokoll "im täglichem Leben" finden wir im Funkverkehr. Die Kommunikationspartner bestätigen den Empfang einer Nachricht mit "Roger", die Veränderung der Sprechrichtung mit "Over" und das Beenden der Verbindung mit "Over and Out". So ähnlich ist auch die Kommunikation in der Computerwelt, wenn man einen Datenaustausch zwischen zwei Computern erledigen will, die im Netzwerk miteinander verbunden sind, müssen die Regeln der Kommunikation ganz klar sein. Damit Rechner miteinander kommunizieren können, müssen bestimmte Regeln bezüglich ihrer Sprache vereinbart werden, die es Ihnen ermöglichen, mit einander in Kontakt zu treten. Die so festgelegten Sprachen heissen, wie schon oben erklärt, Protokolle. Der Datenverkehr muss von mehreren Protokollen erledigt werden und nicht nur von einem. In der Regel kommt eine Reihe von verschiedenen Protokollen mit verschiedenen Teilaufgaben zum Einsatz. Diese Protokolle sind dann jeweils unterschiedlichen Aufgaben untergeordnet und sind in Form von Protokollschichten aufgebaut. Ein Protokoll ist z.B. für die Adressierung des jeweiligen Zielrechners zuständig. Ein anderer ist zum Beispiel für eine reibungslose Übertragung verantwortlich. Weitere Protokolle regeln z.B. den Dateitransfer, den Austausch von Internetseiten, etc. Heutzutage kennt jedes Betriebssystem die für eine Datenübertragung notwendigen Protokolle. Alle Betriebssysteme, unabhängig davon welches es ist, verstehen diese Protokolle und können miteinander Kommunizieren. So kann man problemlos ein Netzwerk einrichten, auch wenn auf einem Rechner Linux und auf einem anderen Windows installiert ist. TCP/IP Schichtenmodell Die Darstellung in dieser Grafik zeigt, dass eine Datenübertragung per TCP/IP auf einem vierschaligen Modell darstellbar ist. Die Anordnung besteht darin, dass jeweils eine Schicht die Dienste der darunter liegenden Schichte in anspruch nehmen kann. Von jeder Schicht aus werden Kontrollinformationen bei Übertragungen aller Art an die nächste Schicht in Form eines Protokollkopfes übergeben. Somit ist eine korrekte Zustellung der Daten möglich. Ohne IP funktioniert kein TCP und ohne TCP funktioniert kein HTTP! In der oberen Tabelle sehen wir 4 Schichten für 4 Funktionen. Die in vier Schichten eingeteilten Protokolle bauen demnach aufeinander auf: • • • • Applikations- bzw. Anwendungsschicht Transportschicht Vermittlungsschicht Netzwerkschicht Erklärungen zu den Schichten Netzwerkschicht (network layer): Auf der untersten Ebene existiert die Netzwerkschicht. Sie enthält Protokolle, die dafür zuständig sind, den Rechner in ein bestimmtes Netzwerk einzubinden. So wird der physische Zugang zum Netz verwirklicht. Also ist hier festgelegt, dass zur Übermittlung von IP-Paketen ein Host über ein bestimmtes Protokoll ans Netz angeschlossen sein muss. Das TCP/IP-Schichtenmodell sagt allerdings nicht viel darüber aus, wie das genau geschieht. Vermittlungsschicht (internet layer): Ist für den Zugang zum Netzwerk gesorgt, kann nun der Informationsaustausch in der Vermittlungsschicht durchgeführt werden. Die Vermittlungsschicht umfasst nur ein Protokoll namens IP (Internet Protocol). Dieses Protokoll ist für die Adressierung im Netzwerk des einzelnen Rechners zuständig, insbesondere aber auch für die Wegsuche (Packet Routing) zum Zielrechner über das Netzwerk und die Vermeidung von Überbelastungen des Netzes. Die einzelnen Datenpakete werden in das Netz eingespeist und es wird dafür gesorgt, dass diese beim Zielrechner ankommen. Es spielt aber keine Rolle, ob die Pakete in der abgeschickten Reihenfolge am Zielort ankommen. Dafür, diese Pakete wieder in die richtige Ordnung zu bringen, ist ein anderes Protokoll zuständig. Das Internet Control Message Protocol (ICMP) dient zum Austausch von Kontrollmeldungen zwischen Rechner. Das IP Protokoll Einsatzgebiete: Das Internet Protokoll (IP) ist ein wichtiger Teil, der eine durchaus komplexe Aufgabe bei der Übertragung von Daten übernimmt. Dieses Protokoll hat ganz bestimmte Aufgaben, die es erledigen kann: • • • Adressierung Routing Fragmentierung Adressierung: Damit alle Teilnehmer eines Netzwerks miteinander störungsfrei kommunizieren können, müssen alle Rechner mit einer speziellen Adresse versehen werden. Das Internet Protokoll kann diese Informationen nach bestimmten Gegebenheiten auf bestimmte Weise umsetzen und realisiert auch zeitgleich diese Vergabe. (Mit dem Vorgang der Adressierung werden wir uns in einer Späteren Lektion noch beschäftigen.) Routing: Nachdem jeder Rechner eine bestimmte IP-Adresse bekommen hat, setzt nun die andere Teilaufgabe des Internet Protokolls ein. Damit die Daten ordnungsgemäß von einem zum anderen Punkt gelangen können, muss der Weg berechnet werden. Dieses Routing legt fest, wie und durch welche Zwischenrechner (Router) die Daten zum Zielrechner gelangen können. (Wir werden später noch Routingverfahren kennenlernen.) Fragmentierung: Fragmentierung ist auch ein wesentliches Bestandteil der Übertragung von Daten. Diese Fragmentierung muss aus einem bestimmten Grund durchgeführt werden: Je nachdem welches Netz welche Netzwerktechnologie benutzt, variiert die die maximale Größe der Datenpakete. Es ist äußerst sinnvoll, die maximale Größe auszunutzen. Es wirkt sich zeitsparend aus. Da jedoch ein Router mehrere Netzwerke miteinander verbinden kann und jedes Netzwerk eine andere Netzwerktechnologie einsetzen kann, muss die Möglichkeit bestehen, Datenfragmente umzufragmentieren, damit sie im einem anderen Netzwerk auch angenommen werden können. Betrachten wir die Fragmentierung genauer. Wenn die Daten an den Empfänger gesendet werden, ist in keiner Weise sichergestellt, dass die Datenpakete auch in der richtigen Reihenfolge ankommen werden. Aus diesem Grund wird jedes Paket mit einer eindeutigen Nummer versehen. Der Empfänger-Rechner muss daraufhin die Daten in der richtigen Reihenfolge wieder zusammensetzen. Diese als Reassemblierung bekannte Funktion übernimmt das TCP. Transportschicht (transport layer): Die Transportschicht ermöglicht die Kommunikation zwischen Quelle und Ziel. Auf dieser Ebene sind Protokolle wie UDP oder TCP (Transmission Control Protocol) definiert. TCP ist ein zuverlässiges, verbindungorientiertes Protokoll, über das ein Bytestrom von einem Rechner im Internet fehlerfrei einem anderen Rechner zugestellt wird. Es zerlegt den eingehenden Bytestrom in einzelne IP-Pakete und leitet diese an die Vermittlungsschicht weiter. Am Ziel werden die IPPakete vom empfangenden TCP-Prozess wieder zum Ausgabestrom zusammengesetzt und an die richtige Applikationsschicht weitergeleitet. TCP verwaltet auch die Flusskontrolle, um sicherzustellen, dass ein langsamer Empfänger nicht von einem schnellen Sender mit Nachrichten überschwemmt wird. UDP (User Datagram Protocol) ist eine unsichere Übertragung, die nicht garantieren kann, dass die versendeten Daten lückenlos beim Empfänger ankommen. Dieses Protokoll wird vorwiegend dann eingesetzt, wenn es darauf ankommt, dass die Pakete schnell zugestellt werden und es nicht so wichtig ist, ob es kleine Ungenauigkeiten bei der Zustellung gibt (z.B. Bei Film- oder Sprachübertragung). Das TCP-Protokoll Zerlegung und Flusskontrolle: Daten werden gepuffert (also zwischengespeichert). Ein Datensegment wird erst gesendet, wenn: • genügend Daten im Puffer vorhanden sind, um ein Segment zu füllen • die gepufferten Daten ein gewisses "Alter" erreicht haben • der Anwendungsprozess es explizit durch eine PSH-Flag verlangt. (Bei dieser Flag handelt es sich um ein Bit, welches auf Null oder Eins gesetzt werden kann. Je nach dem, wird das Segment sofort geschickt – auch wenn es noch nicht voll ist.) • Der Sender die Nachricht des Empfängers erhalten hat, dass das vorangehende Datenpaket angekommen ist. (Kommt diese Quittung nicht, wird das Segment noch einmal verschickt.) Vermeidung von Fehlern: Da der Anwendungsprozess die korrekte Reihenfolge der Daten innerhalb eines Paketes nicht wiederherstellen kann, ist es wichtig, dass das Protokoll sicherstellt, dass die Daten korrekt am Zielort ankommen. Dies geschieht durch folgende Massnahmen: • Die gesendeten Bytes müssen bestätigt werden. • Jedes gesendete Byte wird mittels einer Sequenznummer gezählt. • Die Quittungen enthalten die Sequenznummer des als nächstes erwarteten Bytes. TCP-Segment Damit die oben beschriebenen Abläufe durchgeführt werden können, reicht es nicht, nur die Nutzerdaten zu versenden. Jedes TCP-Segment hat einen fixen Kopfteil (Header), der protokollrelevante Daten z.B. • • • • • die Sequenznummer, Sender und Empfänger-Port, Quittungsnummer, Angabe wie gross der Header ist und wo die Nutzerdaten beginnen, Flags (SYN, ACK, PSH, …) enthält. Dann gibt es auch noch ein variabler Kopfteil, welcher optionale Daten und Füllbits enthält. (Füllbits werden eingesetzt, wenn das Segment nicht die geforderte Länge hat.) Neben dem Header werden natürlich auch die Nutzerdaten mitgesendet. Vor dem TCP Header befinden sich noch zwei weitere Header, welche vom IT-Protokoll, bzw. von der Netzwerkschicht stammen. TCP-Verbindungsaufbau Der Verbindungsaufbau, bzw. die Beendung der Verbindung geschieht mittels des 3-Wege Handshakes: Applikationsschicht (application layer): In der Verarbeitungsschicht befinden sich alle höherschichtigen Protokolle. Durch die bis hier behandelten Schichten haben wir dafür gesorgt, dass die Daten Ordnungsgemäß übertragen werden. Aber wir haben nicht dafür gesorgt, zu erkennen, um welche Art von Daten es sich handelt. Dies erledigen Protokolle aus der Applikationsschicht. Das sind z. B.: • TELNET (virtuelles Terminal): • FTP (File Transfer Protocol): • SMTP (Simple Mail Transfer Protocol): • DNS (Domain Name Service): • HTTP (HypterText Transfer Protocol): Ziele der TCP/IP Entwicklung waren: TCP/IP entstand mit dem Internet seit 1983. Die Ziele dieser Entwicklung der Übertragung waren: • Unabhängigkeit von der verwendeten Netzwerk-Technologie. • Unabhängigkeit von der Architektur der Hostrechner. • Universelle Verbindungsmöglichkeiten im gesamten Netzwerk. • Keine zentrale Verwaltung, kein zentraler Knoten, dadurch höhere Ausfallsicherheit • Applikationsunabhängig, es kann also für verschiedenste Zwecke genutzt werden • Standardisierte Anwendungsprotokolle. Quellen: • Andrew S. Tanenbaum: Computrnetzwerke. Pearson, 2003 • Skripte von Prof. Dr. Ulrich Nitsche • TCP/IP Protokollfamilie, dimk.de/tcp-ip, 1. 9.2012