Die Anwendungsschicht gibt die Daten inklusive Protokoll und Zieladresse an die Transport-Schicht. Diese ist – wie es der Name vermuten lässt – für den Transport zuständig. Die Daten müssen – egal wie viele und mit welchem Protokoll – exakt an der Zieladresse ankommen.
Adresse
Hostname/IP-Adresse und Port
z.B. www.gymkirchenfeld.ch:80
, ftp.kinet.ch:21
oder 86.118.137.202:587
Die Transport-Schicht stellt eine Ende-zu-Ende-Verbindung zwischen zwei Geräten im Netz dar. Sie kümmert sich um die Zerlegung der Nachrichten in kleinere Segmente (bei Ethernet maximal 1500 Bytes). Diese Segmente werden nummeriert und zur Zustellung an die Internet-Schicht weitergegeben. Da das IP-Protokoll der Internet-Schicht sich um den Reiseweg der Pakete kümmert (Routing) und dabei versucht Netzwerklasten auszugleichen, kann es passieren, dass die Segmente einer Nachricht unterschiedliche Wege nehmen und nicht in der korrekten Reihenfolge beim Empfänger ankommen. Dies ist eine weitere Kernaufgabe der Transport-Schicht: Die Segmente werden bei der Ankunft geordnet und die daraus gewonnene Nachricht wird an die Anwendungsschicht weitergegeben.
Der prominenteste Vertreter der Transport-Schicht ist das Transmission Control Protocol:
# Transmission Control Protocol (TCP)
TCP (Transmission Control Protocol) wird verwendet, um einen zuverlässigen Kommunikationskanal (ähnlich einer Telefonverbindung) zwischen zwei Computern herzustellen. Mit zuverlässig ist gemeint, dass die Daten vollständig und in der richtigen Reihenfolge übertragen werden.
Wie bei einer Telefonverbindung muss auch immer ein Computer der «Anrufer» sein, also derjenige, der die Verbindung aufbaut. Dieser Computer wird oft als Client bezeichnet. Der Computer, der auf einen «Anruf» wartet, wird Server genannt.
# Adressierung
Die Adressen der beiden Computer, zwischen welchen die TCP-Verbindung besteht, sind durch die IP-Adresse gegeben. Da es möglich sein sollte, zwischen zwei Computer gleichzeitig mehrere Verbindungen zu haben, wird zusätzlich das Konzept der Porte eingeführt. Man kann sich vorstellen, dass auf jedem Computer virtuelle Anschlüsse zu Verfügung gestellt werden. Eine Anwendung kann sich einen solchen Anschluss reservieren und ihn anschliessend zu einem Anschluss auf einem anderen Computer verbinden lassen.
Für die Adressierung von Ports sind 2 Bytes vorgesehen. Es können pro Computer also die Ports 0 bis 65535 angesprochen werden. Die Ports 0 bis 1023 sind von der IANA[1] standardisiert. Einige wichtige Ports sind:
Port | Protokoll (Anwendungsschicht) | Beschreibung |
---|---|---|
22 | SSH | Secure Shell |
23 | Telnet | Terminalemulation |
25 | SMTP | E-Mail-Versand |
53 | DNS | Auflösung von Host- und Domainnamen |
80 | HTTP | Webserver |
110 | POP3 | E-Mail-Server |
443 | HTTPS | Sicherer Webserver |
# Datenpakete
TCP-Datenpakete werden Segmente genannt. Ein TCP-Segment besteht aus einem Header, gefolgt von den Nutzdaten.
Der TCP-Header umfasst normalerweise 20 Byte:
Daten | Länge |
---|---|
Quell-Port | 2 Byte |
Ziel-Port | 2 Byte |
Sequenznummer | 4 Byte |
Quittierungsnummer | 4 Byte |
Diverse Informationen | 4 Byte |
Total | 20 Byte |
- Der Quell- und Ziel-Port geben die Portnummer auf der Client- bzw. Serverseite an.
- Mit der Sequenznummer wird die Reihenfolge der Pakete angegeben
- Mit der Quittierungsnummer werden empfangene Pakete quittiert. Dazu sendet der Empfänger ein Paket mit der höchsten empfangenen Sequenznummer als Quittierung zurück.
# Funktionsweise
Die TCP-Schicht stellt als Schnittstelle zur Anwendungsschicht sogenannte Sockets zur Verfügung. Einen Socket kann man sich als eine Art Telefongerät vorstellen: Eine Anwendung mit einem Socket kann…
- …eine Verbindung zu einem anderen Socket (auch auf einem entfernten Computer) herstellen („wählen“)
- …Daten senden und empfangen, wenn die Verbindung aufgebaut worden ist («sprechen»)
Die Adresse jedes Sockets («Telefonnummer») besteht dabei aus IP-Adresse und Port-Nummer. Die Sockets bieten Anwendungen eine einfache Möglichkeit, mit anderen Anwendungen über die IP-Adresse und den Port zu kommunizieren, ohne dass die Anwendung sich um die tiefer liegenden Netzwerkkonzepte kümmern muss.
Wenn eine Anwendung Daten über einen TCP-Socket sendet, so werden diese zuerst in einen Puffer geschrieben. Danach werden die Daten in Segmente aufgeteilt. Die Segmente werden nummeriert, damit der Empfänger sie in der richtigen Reihenfolge zusammensetzen kann. Schliesslich werden die TCP-Segmente an die Internetschicht übergeben und versendet.
Die Daten bleiben jedoch solange gespeichert, bis sie vom Empfänger quittiert werden. So wird eine verlustfreie bzw. vollständige Übertragung sichergestellt.
# User Datagram Protocol (UDP)
UDP (User Datagram Protocol) ist ein minimales, verbindungsloses und nicht-zuverlässiges Netzwerkprotokoll. Seine Aufgabe ist es, DAte so rasch wie möglich zu übertragen.
# Adressierung
Wie bei TCP setzt sich die Adresse aus IP-Adresse und Port-Nummer zusammen. So können zwischen zwei Computern mehrere UDP-Verbindungen – aber auch TCP- und UDP-Verbindungen gleichzeitig – verwendet werden.
# Datenpakete
Datenpakete bezeichnet man als UDP-Datagramme. Diese bestehen aus dem UDP-Header und den UDP-Daten.
Der UDP-Header setzt sich zusammen aus:
Daten | Länge |
---|---|
Quell-Port | 2 Byte |
Ziel-Port | 2 Byte |
Länge | 2 Byte |
Prüfsumme | 4 Byte |
Total | 10 Byte |
Quell- und Ziel-Port wie bei TCP. Im Längenfeld wird die Länge des Datagramms angegeben. Zur Erkennung von fehlerhaften Paketen gibt es eine 16 Bit grosse Prüfsumme.
Die maximale Grösse der UDP-Daten übernimmt UDP von der darunterliegenden Schicht.
# Funktionsweise
Das UDP-Protokoll ist ein nicht-zuverlässiger Übertragungsdienst, d.h. die UDP-Datagramme werden nicht quittiert (Es gibt keine Felder im Header für Sequenzen- und Quittierungsnummern). Dadurch weiss der Sender nicht, ob seine Daten angekommen sind. Es wird jedoch eine Prüfsumme berechnet und die Daten werden mit dem UDP-Header an die Internetschicht weitergegeben. Diese stellt den IP-Header voran und schickt das IP-Datagramm dann an den Empfänger. Der Empfänger kann Fehler erkennen und die fehlerhaften Datagramme löschen.
Durch den verbindungslosen, nicht-zuverlässigen Dienst, eignet sich UDP vor allem dort, wo es auf Geschwindigkeit und wenig Verzögerung ankommt, kleine Aussetzer (Fehler) aber weniger eine Rolle spielen. Dies sind Streaming-Dienste wie Voice-over-IP oder Live-Übertragungen. Zudem eignet sich UDP für Multicast- und Broadcast-Dienste.
IANA: Internet Assigned Numbers Authority ↩︎