Das TCP Protokoll

Dezember 2016

Die TCP Protokoll Eigenschaften

TCP (bedeutet Transmission Control Protocol, zu deutsch: Protokoll zur Übertragungskontrolle) ist ein der wichtigsten Protokolle in der Transportschicht des Modell TCP/IP. Erlaubt auf Höhe der Applikationen, die Verwaltung der Daten von (und zu) der unteren Schicht im Modell (d.h. das Protokoll IP). Die ans IP Protokoll gelieferte Daten, werden in IP Datagramme verkapselt und versieht das Protokollfeld mit einer 6 (besagt dass das Protokoll oberhalb TCP ist…). TCP ist ein Verbindungsorientiertes Protokoll, d.h. versieht zwei kommunizierende Maschine mit der Möglichkeit den Stand der übertragung zu überwachen.
Die wichtigsten Merkmale vom TCP Protokoll sind :

  • TCP kann von IP stammende Datagramme bereinigen
  • TCP kann den Datenstrom überwachen und Stauungen vermeiden
  • TCP kann Daten in Segmente unterschiedlichster Länge formatieren bevor sie dem IP Protokoll "übergeben" werden
  • TCP kann Daten multiplexen, d.h. Daten aus verschiedenen Quellen ( z.B. Applikationen) gleichzeitig auf der selben Leitung vermitteln
  • TCP kann schliesslich Kommunikationen auf höffliche Art und Weise einleiten und schliessen

Ziel von TCP

Dank TCP Protokoll, können Applikationen sicher miteinander kommunizieren (mit dem Verfahren der Empfangsbetätigungen des Protokoll TCP), gelöst von den unteren Schichten. Dies bedeutet dass Router (auf der Internet Schicht liegend) haben lediglich zur Aufgabe die Datenübertragung in Datagramenform, und sich nicht um die Datenkontrolle kümmern, da diese von der Transportschicht erledigt wird (insbesondere vom TCP Protokoll).

Während der Kommunikation durch das TCP Protokoll, werden zwei Rechner mitenander verbunden. Die Sendemaschine (der Antragsteller) heisst Client, und die Empfangsmaschine heisst Server. Wir stehen hier dann vor einer Client-Server Umgebung.
Die Maschinen in einer solchen Umgebung sitzen im Modus connected, d.h. sie kommunizieren in beiden Richtungen

Zum Zwecke eines besseren Kommunikationsablauf samt all seine mithängenden Kontrollinstanzen, werden die Daten verkapselt, d.h. man gibt deren Datenpaket einen Header zu, der das synchronisieren der Übertragung und den Empfang sichert.

Eine sonstige Besonderheit von TCP ist die Möglichkeit zum Regeln des Datendurchsatzes dank seine Fähigkeit Meldungen variabler Grösse zu senden; diese messages werden segments genannt.

Das Multiplexing

TCP kann eine wesentlich höhere Tätigkeit durchführen : das Multiplexen / Demultiplexen, d.h. von diversen Applikationen stammende Daten gleichzeitig auf der einen und selben Leitung zu legen oder mit anderen Worten eine Reihe von Informationen parallel strömen lassen.

Diese Operationen werden realisiert durch das Konzept der Ports (oder sockets), d.h. an einer Applikationsart zugewiesen Nummer, die zusammen mit einer IP Adresse, auf eindeutiger Weise die auf einem vorgegebenen Rechner laufende Applikation ausmachen.

Das Datenformat unter TCP

Ein TCP Segment wird gebildet durch :

URG ACK PSH RST SYN FIN
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Quellport Zielport
Sequenznummer
Quittierungsnummer
Daten-Offset / Verschiebung
Daten
reserviert
Window / Fenster
Prüfsumme
Urgent Pointer / Dringlichkeitsfaktor
Optionen Füllvektor
Daten

Bedeutung der einzelnen Felder :

  • Quellport (16 bits): Port der auf der Quellmaschine liegenden Applikation
  • ZielPport (16 bits): Port der auf der Zielmaschine liegenden Applikation
  • Sequenznummer (32 bits): Wenn Flag SYN auf 0 geht, ist die Zuordnungnummer die Nummer des ersten Wort im vorliegenden Segment
    Wenn SYN auf 1 geht, ist die Sequenznummer gleich der ursprünglichen Sequenznummer zwecks Synchronisierung (ISN)
  • Nummer der Empfangsbestätigung (32 bits): Die Nummer der Empfangsbestätigung auch genannt Quittierungsnummer : ist die Nummer des nächsterwarteten Segment und nicht die vom zuletzt empfangenen.
  • Datenverschiebunng (4 bits): zeigt auf den den Datenanfang im Paket. Die Verschiebung ist hier von höchster Wichtigkeit da das Optionenfeld variabler Länge ist.
  • reserviert (6 bits): unbenutztes Feld. Eventuell für zukünftige Verwendungen
  • Flaggen (flags) (6x1 bit): Flags sind zusätzliche Informationen :
    • URG : eine 1 zeigt auf eine Dringlichkeit
    • ACK : eine 1 zeigt auf eine Empfangsbestätigung
    • PSH (PUSH): wenn 1, ist das Paket nach dem PUSH verfahren aufgebaut
    • RST: eine 1 heisst Verbindung ist neu aufgebaut
    • SYN : Die Flag TCP SYN deutet auf eine Verbindungsanfrage
    • FIN: 1 bedeutet eine Unterbrechung der Verbindung
  • Fenster (16 bits): das Feld deutet auf die vom Sender g$erwünschten Byteanzahl ohne Bestätigung
  • Kontrollsumme (Checksum oder CRC): Die Kontrollsumme wird aus den Datenfelder des Header gewonnen und sichert die Header Integrität
  • Urgent Pointer / Dringlichkeitsfaktor (16 bits): Zeigt auf die Sequenznummer bei der die Dringlichkeitsstufe ansetzt
  • Optionen (unterschiedliche Grösse): Diverse Optionen
  • Füllvektor: wird mit Nullen gefüllt auf ein 32 bits Vielfaches

Transferzuverlässigkeit

Das TCP Protokoll erlaubt ein hohes Mass an Zuversicht bei der Übermittlung von Daten obwohl das IP Protokoll das es benutzt keinerlei Sicherheitkontrolle für seine Datagramme vorsieht.

In Wirklichkeit besitzt das TCP Protokoll ein System von Empfangsbestätigungen mit dem Server sowie Client ihre Daten sicher empfangen können
Bei der Segmentübertragung, wird eine Ordnungsnummer (auch Sequenznummer genannt) angehängt. Nach dem Empfang des Datensegment, sendet die Empfangsmaschine ein Datesegment dessen ACK Flag auf 1 steht (Meldung für eine Empfangsbestätigung) begleitet mit einer Empfangsbestätigungsnummer gleich der vorrigen Sequenznummer.

Zusätzlich wird beim den Empfang des Segment, ein Zähler von der Sender-Stelle gesetzt und das Segment wird nachdem der Zähler abgelaufen ist, zurückgesendet, weil davon ausgegangen wird dass das Segment unterwegs verloren ging.

Wenn jedoch das nicht verloren geht und doch ankommt, erfährt der Empfänger anhand der Sequenznummer dass es sich um ein Doppel handelt, und wird das zeitlich letztangekommene aufheben.

Verbindungsaufbau

Vorangenommen, das Kommunikationsprozess, das mittels einer Datenübertragung und einer Empfangsbestätigung abläuft, basiert auf eine Ordnungsnummer - auch allgemein Sequenznummer genannt -, so müssen Sender sowie Empfänger (Client und Server) die AnfangsSequenznummer der gegenüberliegenden Stelle auch wissen.

Das Zustande kommen der Verbindung zweier Applikationen geschiet oft wie folgt :

  • Die TCP Ports müssen offen sein
  • Die Server-Applikation bleibt passiv, d.h. die Applikation horcht auf eine Verbindung.
  • Die Client-Applikation setzt einen Antrag an die horchende Server-Applikation ab. Die Client-Applikation heisst dann "aktiv offen"

Beide Maschinen werden dann Sequenz-Synchron gestellt durch ein Prozess oft genannt three ways handshake (zu deutsch :Drei Zeiten Händedruck oder neu deutsch Drei Wege Handshake) das auch beim Verbindungsabbau angewendet wird.

Dieser einführende Kommunikationsdialog läuft, wie nach seiner Benennung, in drei Etappen ab :

  • Im ersten Takt sendet der Client ein Segment dessen SYN Flag auf 1 steht (Synchron-segment) mit einer Sequenznummer N, genannt Client Initialisierung-Sequenznummer.
  • In zweiten Takt erhält der Server (die Empfangsmachine) das Initialisierungssegment vom Client, sendet eine Quittierung, d.h. ein Segment mit ACK und SYN auf 1 gesetzt - es geht immer noch um die Synchronisierung !. Das Segment enhält die Sequenznummer dieser Maschine (der Server) d.h. die Client-Initialisierung-Sequenznummer. Das wichtigste Feld in diesem Segment ist das Quittierungsfeld mit der um 1 inkrementierte Client-Initialisierung-Sequenznummer.
  • Zum Schluss überträgt der Client dem Server eine Quittierung in Form von einem Segment dessen Flags ACK auf 1 und SYN auf 0 sind - es dient nichr mehr der Synchronisierung !. Seine Sequenznummer wird inkrementiert und die Quittierungsnummer ist dann die um 1 inkrementierte Server-Initialisierung-Sequenznummer.

three ways handshake - poignée de mains en trois temps

Gleich nach dieser Dreifachaustausch-Sequenz laufen beide Maschinen synchron und die Übertragung kann beginnen !

In der Piratenwelt, existiert eine Technik, das IP-Spoofing, die Zustimmungsbeziehung, zwecks nicht würdigen Absichten, verfälscht

Das Sliding-Window oder Schiebefensterverfahren

In zahlreichen Fällen wird es notwendig die Anzahl der Quittierungen zu verringert um das Netz zu entlasten. Dabei wird die Anzahl der Sequenzen auf einen festen Wert gehalten; danach wird unverzüglich eine Quittierung erwartet. Diese Zahl wird in das TCP/IP Header-Feld Window / Fenster gespeichert.

Man nennt in der Tat diese Methode "Sliding-Window" oder "Schiebefensterverfahren", weil dabei sozusagen eine Quittierungslose Sequenzenspanne festgelegt, die mit jeder neuen Quittierung verschoben wird.

Im übrigen ist die Fenstergrösse nicht fest. Tatsächlich kann der Server zusätzliche Quittierungen erzeugen, dann die für ihn als richtig erscheinende Fenstergrösse in das Fensterfeld eintragen. Auf diese Weise wird bei jeder Quittierung mit einem Antrag zur Fensterausdehnung, der Client veranlasst die rechte Fensterkante zu verschieben.

Dagegen, im Falle einer Verringerung, wird der Client, nicht die rechte Fensterkante wieder nach links verschieben, sondern abwarten dass die linke Fenster fortbewegt wird mit jeder Quittierung.

Verbindungsabbau

Der Client kann selbst, mit dem Server gleichbefugt, ein Ende der Verbindung beantragen.
Der Verbindungsabbau läuft folgendermassen ab :

  • Eine der Maschinen sendet ein Segment mit Flag FIN auf 1, die Applikation geht in die passive End-Wartestellung in dem sie die laufenden Segmente zu Ende abfertigt und ignoriert die nächsten.
  • Nach Empfang dieses Segment, sendet die angesprochene Maschine eine Quittierung mit Flag FIN auf 1, schiebt die laufenden Segmente auf den Weg, setzt die Applikation in Kenntnis das ein Segment FIN ankam, anschliessend erwidert sie mit einem Segment FIN an die Gegenmaschine, und die Verbindung wird so abgeschlossen.

Literaturnachweis

Zusätzliche Informationen über das TCP Protokoll erhalten sie am ehesten über die RFC 793 mit ausführlichen Angaben über das Protokoll :


Lesen Sie auch :


TCP protocol
TCP protocol
Protocolo TCP
Protocolo TCP
Le protocole TCP
Le protocole TCP
Il  protocollo TCP
Il protocollo TCP
O protocolo TCP
O protocolo TCP
Das Dokument mit dem Titel « Das TCP Protokoll » aus CCM (de.ccm.net) wird zur Verfügung gestellt unter den Bedingungen der Creative Commons Lizenz. Sie dürfen das Dokument verwenden, verändern sowie Vervielfältigungen dieser Seite erstellen, unter den Bedingungen, die in der vorgenannten Lizenz erwähnt sind und unter der gleichzeitigen Bedingung, dass Sie im Rahmen Ihrer Verwendung, Veränderung oder Vervielfältigung nach außen hin klar und deutlich auf den Urheber (= de.ccm.net) des Dokuments hinweisen.