|
| |
sponsered by
 |
|
| Letztes Update: 22.08.2005 11:42:41 |
|
| |
| * Link führt ins Internet |
|
| |
Protokolle der Transportschicht
|
|
Transmission Control Protocol (TCP)
Das Transmission Control Protocol, kurz TCP, ist das verbindungsorientierte Transportprotokoll oberhalb von IP und ist als solches der Schicht 4 (Transportschicht, transport layer) des ISO/OSI-Modells zuzuordnen. Es ist als Military Standard (MIL-STD) 1778 spezifiziert und baut direkt auf dem Internet-Protokoll (IP) auf.
Funktionen von TCP
. Auf- und Abbau von Rechner-zu-Rechner-Verbindungen zwischen adressierten Anwendungen
. Rechner-zu-Rechner-Fehlererkennung und -behebung durch Prüfsummen
. Rechner-zu-Rechner-Flusskontrolle
. Sequencing
. Datenstrom Transfer
. Datenflusssteuerung
. Diese von einem TCP
TCP stellt einen verbindungsorientierten sequenziellen Vollduplex-Datenübertragungsdienst zur Verfügung. Da TCP verlorene, duplizierte oder in falscher Reihenfolge auftretende Daten entdeckt und korrigiert, wird TCP im Gegensatz zu IP auch als zuverlässiger Dienst bezeichnet.
Durch ein Programm der Anwendungsschicht wird TCP zum Herstellen einer Verbindung beauftragt.
TCP erhält die Daten vom Anwenderprogramm als Datenstrom übertragen, teilt diese in maximal 64 Kbyte grosse Segmente ein und vergibt an jedes Segment einen eigenen Header.
Diese von einem TCP Transport Protocol Port zu einem anderen beförderten, maximal 64 Kbyte grossen Segmente sind dabei nicht mit den Datenpaketen (Datagrammen) der Internetschicht zu verwechseln. Von den Benutzerprozessen der über der Transportschicht angesiedelten Anwendungsschicht wird die Segmentstruktur der Daten als kontinuierlichen Datenstrom von Oktetten (Byte) wahrgenommen.
Daran anschliessend werden die Segmente an das Internet Protocol (IP) übergeben, das für die Erstellung der einzelnen Datagramme (Fragmentierung) und deren Versand zuständig ist.
Nach Ankunft der Datagramme beim Empfänger und nach dem Entfernen der Header werden diese wieder an TCP übergeben, das für die Aufarbeitung der Segmente, die Fehlerprüfung und die Übergabe in der richtigen Reihenfolge (Sequencing) als kontinuierlicher Datenstrom an ein Programm der Anwendungsschicht verantwortlich ist.
TCP-3-Way-Handshake
Der Verbindungsaufbau mit dem 3-Way-Handshake lässt sich an einem Verbindungsdiagramm aufzeigen. Ausgangspunkt ist ein ruhender Service (Closed-Modus). Er stellt den Anfangswert einer Verbindung dar. Die Verbindung wird befehlsgesteuert in den Listen-Modus gesetzt. Dies ist der Zustand, bei dem zum anderen TCP-System eine Verbindung aufgebaut werden kann.

TCP-3-Way-Handshake Schema
Befindet sich das System im Listen-Modus, wartet es auf ankommende Syn-Zeichen, um nach dem Eintreffen mit einem weiteren Syn-Zeichen zu antworten und in den "Syn Received"-Modus zu gehen. Wurde ein Syn-Zeichen gesendet, wechselt die Verbindung in den "Syn Send"-Modus. In diesem Modus bleibt das TCP-System, bis es vom Partnersystem als Antwort ein Syn-Zeichen erhält.
Wird auf dieses Syn-Zeichen positiv geantwortet, so gelangt das TCP-System in den "Syn Received"-Modus. Nach der positiven Quittierung des Syn-Zeichens (ACK auf SYN) gelangen Sender und Empfänger in den Established-Modus: Daten können nun zwischen den Rechnern übertragen werden. Nachdem alle Daten übertragen worden sind, nehmen die beteiligten Rechner einen weiteren 3-Way-Handshake vor. Dabei werden Segmente mit dem Bit "No more data from sender" ausgetauscht, um die Verbindung zu schließen.
TCP betrachtet die übertragenen Daten als ununterbrochenen Datenstrom und nicht als eine Reihe unabhängiger Pakete. Das Protokoll ist auch dafür verantwortlich, dass die von IP empfangenen Daten an die richtige Anwendung zugestellt werden. Die Anwendungen werden durch eine 16-Bit lange Portnummer identifiziert.
TCP-Header im Detail
Der TCP-Header verfügt über 12 Parameter und hat bei Nutzung des Feldes Options eine Länge von 32 Bytes, ansonsten 20 Bytes.
| Name | Größe (Bits) | Beschreibung |
| Source Port | 16 | Enthält die Portnummer der Quelldaten. |
| Destination Port | 16 | Bestimmt den Ziel-Port der Daten. Dieser bleibt für die Dauer der Verbindung gleich. |
| Sequence Number | 32 | Gibt beim Verbindungsaufbau eine Zufallszahl als "Initial Sequence Number" (ISN) an. Das erste Segment erhält so den Wert ISN+1. |
| Acknowledge Number | 32 | Bestätigungsnummer für Empfangsquittungen an den Sender. |
| Data Offset | 4 | Gibt die Anzahl der 32-Bit-Worte im TCP-Header an. Der Eintrag in diesem Feld ist für die Berechnung des Datenteils relevant. |
| Reserved | 6 | Für zukünftige Anwendungen reserviert; muss immer auf Null gesetzt werden. |
| Control Flags | 6 | Enthält eine Reihe von so genannten Ein-Bit-Indikatoren, die zum Aufbau, zur Beendigung und zur Aufrechterhaltung von Verbindungen dienen. |
| Windows Size | 16 | Dient zur Flusskontrolle zwischen Sender und Empfänger. Die Flusskontrolle basiert auf der fortlaufenden Nummerierung der übertragenen Datenpakete. |
| Checksum | 16 | Enthält eine Prüfsumme, die aus dem TCP-Header und einem 96-Bit-Pseudo-Header gebildet wird. |
| Urgent Pointer | 16 | Gibt an, dass die TCP-Segmente Informationen mit großer Dringlichkeit transportieren. Solche Segmente werden durch das URG-Flag gekennzeichnet. |
| Options | 96 | Definiert Diensteoptionen, Optionenart und Optionenlänge. Die aktuellen Optionendaten bestimmen die Länge des Feldes. |
| Padding | - | Enthält eine variable Bit-Zahl, die sicherstellt, dass der TCP-Header bei Benutzung des Options-Feldes immer im 32-Bit-Format endet. |
Alle weiteren Informationen, die zum Senden und Empfangen nötig sind, enthält der gekapselte IP-Header.
TCP Sliding Window
Das Sliding Window Protocol ist eine Methode zur Datenflusskontrolle, bei der ein Empfänger dem Sender die Übertragung von mehreren Segmenten auf einmal ermöglicht. Dies erlaubt eine schnellere Datenübertragung und senkt das Datenvolumen, da der Sender nicht nach jedem Segment auf eine Bestätigung warten muss.
Um also eine höhere Effizienz zu erreichen, wird nicht ein Segment nach dem anderen gesendet, sondern es werden gleich alle Segmente innerhalb eines sogenannten Fensters (Window) gesendet. Auf der Empfängerseite existiert analog dazu ebenfalls ein Fenster, in dem die Pakete aufgenommen und wieder zu einem Strom zusammengesetzt werden.

Sliding Window Schema
Trifft nun die Bestätigung für das erste Segment im Fenster beim Sender ein, so wird das Fenster um ein Segment weitergeschoben (Sliding), und das nächste Segment wird gesendet. Alle Segmente links vom Fenster sind somit bereits bestätigt, alle im Fenster sind gesendet aber noch nicht bestätigt, und Segmente rechts davon sind noch nicht gesendet. Das erste Segment im Fenster ist also das letzte noch nicht bestätigte Paket. Die Größe des Fensters richtet sich nach dem TCP-Puffer des Empfangsrechners, kann aber vom Administrator eines Servers manuell geändert werden.
User Datagramm Protocol (UDP)
Das User Datagram Protocol (UDP) bietet höheren Protokollen einen definierten Dienst zum transaktionsorientierten Versand von Datenpaketen. UDP verfügt nur über minimale Protokollmechanismen zur Datenübertragung. Es setzt unmittelbar auf dem Internet Protocol auf. Da es im Gegensatz zu TCP keine Ende-zu-Ende-Kontrolle garantiert, sind weder die Ablieferung eines Datenpakets beim Empfänger, das Erkennen von Duplikaten oder die reihenfolgerichtige Übermittlung gewährleistet.
Es gibt dennoch eine Reihe von guten Gründen, die dafür sprechen, UDP als Datentransportdienst zu wählen. Wenn nur geringe Datenmengen zu übertragen sind kann es passieren, dass der Verwaltungsaufwand für die Herstellung einer Verbindung und das Sicherstellen einer korrekten Übertragung größer wären als der Aufwand für eine erneute Übertragung der gesamten Daten.
UDP-Header im Detail
| Name | Größe ( Bits) | Beschreibung |
| Source Port | 16 | Enthält die optionale Adresse des Sende-Ports. Bei Antworten auf Datenpakete kann durch die Portadresse der jeweilige Prozess unmittelbar wieder angesprochen werden. Wird vom Sender kein Sende-Port definiert, so wird dieses Feld mit dem Wert "0"übertragen. |
| Destination Port | 16 | Enthält die Adresse des Empfänger-Ports. |
| Length | 16 | Definiert die Gesamtlänge des Datenpakets, inklusive Header und Nutzdaten. |
| Checksum | 16 | Enthält eine optionale Prüfsumme. Der Wert "0" weist darauf hin, dass keine Berechnung erfolgt ist. Die Prüfsumme wird aus dem UDP-Header und einem 96-Bit-Pseudo-Header errechnet. |
| Hinweis: Alle weiteren Informationen, die zum Senden und Empfangen nötig sind, enthält der gekapselte IP-Header. |
Ports und Sockets
Das IP-Datenpaket wird mithilfe der IP-Adresse zum richtigen Empfänger geroutet und muss dort an den richtigen Anwendungsprozess übergeben werden. Mit dem Erreichen des Zielrechners wird zunächst anhand der im IP-Header ausgewiesenen Protokollnummer überprüft, an welches Transportprotokoll die Daten zu übergeben sind.
Die Protokollnummer 6 steht für TCP, 17 für UDP. Das Transportprotokoll muss die Daten dann an den richtigen Anwendungsprozess weiterleiten.
Dieser wird anhand der Portnummer, welche im TCP Segment Header steht, identifiziert. Die Kombination aus Portnummer und IP-Adresse bezeichnet man als Socket, wobei ein kommunizierender Prozess über ein Socket-Paar eindeutig definiert wird.
Funktionen von Sockets
. In der TCP/IP Terminologie ist ein Socket ein aus der IP-Adresse eines Rechner und der für einen bestimmten Dienst charakteristischen Portnummer gebildeter Tupel der Form:
. Sockets werden von einem TCP/IP unterstützenden Betriebssystem beim Aufbau der Verbindung realisiert und können von den Programmen wie beim Zugriff auf Dateien benutzt werden.
. Sockets können geöffnet und geschlossen werden.
. Von Sockets können Daten gelesen oder geschrieben werden.
Die Portnummern umfassen 16 Bit, so dass von einem Rechner maximal 65 535 unterschiedliche Ports realisiert sein können.
Um die Funktion von Portnummern besser zu verstehen, können Sie sich zum Vergleich das System von Telefongesellschaften bzw. einer Telefonanlage vorstellen:
Die Portnummern entsprechen hierbei den Rufnummern der einzelnen Nebenstellenanlagen (Durchwahl), während die Netzadresse der Ortswahl und die Hostadresse der Rufnummer der Zentrale entspricht.
Für bestimmte, häufig benutze Anwendungsprozesse sind feste Portnummern reserviert worden. So sind folgende Portnummern, wie folgt festgelegt worden:
. Port 80 - HTTP (WWW)
. Port 20 u. 21 - FTP
. Port 23 - Telnet
. Port 22 - SSH
. Port 25 - SMTP
. Port 53 - DNS
. Port 70 - Gopher
. Port 119 - NNTP
. Port 110 - POP3 (Post Office Protokoll)
. Port 443 - SSL
Man unterscheidet im übrigen zwischen unterschiedlichen Port-Typen:
. Well-known ports: Bei diesem Typ handelt es sich um reservierte und standardisierte Port-Nummern zwischen 1 und 1023. Dies vereinfacht den Aufbau einer Verbindung, weil sowohl Absender und Empfänger bereits wissen, dass Daten für einen bestimmten Prozess an einen bestimmten Port gesendet werden müssen. So nutzen beispielsweise alle Systeme für Telnet den Port 23.
. Dynamically allocated ports: Diese dynamisch zugewiesenen Ports werden nicht vorab vergeben, sondern erst, wenn ein Prozess einen Port benötigt.
Die Liste der aktuell vergebenen Portnummern wird von der IANA verwaltet.
|
|
|
|
|
|
|
|