DCN - Übertragungssteuerungsprotokoll
Das Transmission Control Protocol (TCP) ist eines der wichtigsten Protokolle der Internet Protocols Suite. Es ist das am weitesten verbreitete Protokoll für die Datenübertragung in Kommunikationsnetzen wie dem Internet.
Eigenschaften
TCP ist ein zuverlässiges Protokoll. Das heißt, der Empfänger sendet immer entweder eine positive oder eine negative Bestätigung über das Datenpaket an den Absender, so dass der Absender immer eine klare Ahnung hat, ob das Datenpaket das Ziel erreicht hat oder es erneut senden muss.
TCP stellt sicher, dass die Daten das beabsichtigte Ziel in derselben Reihenfolge erreichen, in der sie gesendet wurden.
TCP ist verbindungsorientiert. TCP erfordert, dass die Verbindung zwischen zwei Remote-Punkten hergestellt wird, bevor tatsächliche Daten gesendet werden.
TCP bietet einen Mechanismus zur Fehlerprüfung und Wiederherstellung.
TCP bietet End-to-End-Kommunikation.
TCP bietet Flusskontrolle und Servicequalität.
TCP arbeitet im Client / Server-Punkt-zu-Punkt-Modus.
TCP bietet einen Vollduplex-Server, dh es kann sowohl Empfänger- als auch Absenderrollen übernehmen.
Header
Die Länge des TCP-Headers beträgt mindestens 20 Byte und höchstens 60 Byte.
Source Port (16-bits) - Es identifiziert den Quellport des Anwendungsprozesses auf dem sendenden Gerät.
Destination Port (16-bits) - Es identifiziert den Zielport des Anwendungsprozesses auf dem empfangenden Gerät.
Sequence Number (32-bits) - Sequenznummer der Datenbytes eines Segments in einer Sitzung.
Acknowledgement Number (32-bits) - Wenn das ACK-Flag gesetzt ist, enthält diese Nummer die nächste Sequenznummer des erwarteten Datenbytes und dient als Bestätigung der zuvor empfangenen Daten.
Data Offset (4-bits) - Dieses Feld impliziert sowohl die Größe des TCP-Headers (32-Bit-Wörter) als auch den Versatz der Daten im aktuellen Paket im gesamten TCP-Segment.
Reserved (3-bits) - Reserviert für zukünftige Verwendung und alle sind standardmäßig auf Null gesetzt.
Flags (1-bit each)
NS - Das Nonce-Summenbit wird vom Signalisierungsprozess für die explizite Überlastungsbenachrichtigung verwendet.
CWR - Wenn ein Host ein Paket mit gesetztem ECE-Bit empfängt, setzt er Congestion Windows Reduced, um zu bestätigen, dass ECE empfangen wurde.
ECE -Es hat zwei Bedeutungen:
Wenn das SYN-Bit auf 0 gesetzt ist, bedeutet ECE, dass für das IP-Paket das CE-Bit (Überlastungserfahrung) gesetzt ist.
Wenn das SYN-Bit auf 1 gesetzt ist, bedeutet ECE, dass das Gerät ECT-fähig ist.
URG - Es zeigt an, dass das Feld Dringender Zeiger wichtige Daten enthält und verarbeitet werden sollte.
ACK- Es zeigt an, dass das Bestätigungsfeld eine Bedeutung hat. Wenn ACK auf 0 gelöscht wird, zeigt dies an, dass das Paket keine Bestätigung enthält.
PSH - Wenn diese Option aktiviert ist, wird die empfangende Station aufgefordert, Daten (sobald sie eingehen) an die empfangende Anwendung zu senden, ohne sie zu puffern.
RST - Das Reset-Flag hat folgende Funktionen:
Es wird verwendet, um eine eingehende Verbindung abzulehnen.
Es wird verwendet, um ein Segment abzulehnen.
Es wird verwendet, um eine Verbindung neu zu starten.
SYN - Mit diesem Flag wird eine Verbindung zwischen Hosts hergestellt.
FIN- Mit diesem Flag wird eine Verbindung freigegeben und danach werden keine Daten mehr ausgetauscht. Da Pakete mit SYN- und FIN-Flags Sequenznummern haben, werden sie in der richtigen Reihenfolge verarbeitet.
Windows Size - Dieses Feld dient zur Flusskontrolle zwischen zwei Stationen und gibt die Puffermenge (in Byte) an, die der Empfänger einem Segment zugewiesen hat, dh wie viele Daten der Empfänger erwartet.
Checksum - Dieses Feld enthält die Prüfsumme der Header-, Daten- und Pseudo-Header.
Urgent Pointer - Es zeigt auf das dringende Datenbyte, wenn das URG-Flag auf 1 gesetzt ist.
Options - Es ermöglicht zusätzliche Optionen, die nicht durch den regulären Header abgedeckt sind. Das Optionsfeld wird immer in 32-Bit-Wörtern beschrieben. Wenn dieses Feld Daten mit weniger als 32 Bit enthält, werden die verbleibenden Bits durch Auffüllen abgedeckt, um die 32-Bit-Grenze zu erreichen.
Adressierung
Die TCP-Kommunikation zwischen zwei Remote-Hosts erfolgt über Portnummern (TSAPs). Die Ports können zwischen 0 und 65535 liegen und sind unterteilt in:
- Systemports (0 - 1023)
- Benutzerports (1024 - 49151)
- Private / dynamische Ports (49152 - 65535)
Verbindungsmanagement
Die TCP-Kommunikation funktioniert im Server / Client-Modell. Der Client initiiert die Verbindung und der Server akzeptiert sie entweder oder lehnt sie ab. Drei-Wege-Handshake wird für das Verbindungsmanagement verwendet.
Einrichtung
Der Client initiiert die Verbindung und sendet das Segment mit einer Sequenznummer. Der Server bestätigt es mit seiner eigenen Sequenznummer und der Bestätigung des Client-Segments, die um eins höher ist als die Sequenznummer des Clients. Der Client sendet nach Erhalt der ACK seines Segments eine Bestätigung der Serverantwort.
Freisetzung
Jeder Server und Client kann ein TCP-Segment mit dem auf 1 gesetzten FIN-Flag senden. Wenn das empfangende Ende es mit ACKnowledging FIN antwortet, wird diese Richtung der TCP-Kommunikation geschlossen und die Verbindung freigegeben.
Bandbreitenmanagement
TCP verwendet das Konzept der Fenstergröße, um den Anforderungen des Bandbreitenmanagements gerecht zu werden. Die Fenstergröße teilt dem Absender am entfernten Ende mit, wie viele Datenbytesegmente der Empfänger an diesem Ende empfangen kann. TCP verwendet die langsame Startphase unter Verwendung der Fenstergröße 1 und erhöht die Fenstergröße nach jeder erfolgreichen Kommunikation exponentiell.
Der Client verwendet beispielsweise Windows Größe 2 und sendet 2 Datenbytes. Wenn die Bestätigung dieses empfangenen Segments die Fenstergröße auf 4 verdoppelt und das nächste gesendete Segment 4 Datenbytes lang ist. Wenn die Bestätigung des 4-Byte-Datensegments empfangen wird, setzt der Client die Fenstergröße auf 8 usw.
Wenn eine Bestätigung fehlt, dh Daten im Transitnetz verloren gehen oder NACK empfangen wurde, wird die Fenstergröße auf die Hälfte reduziert und die langsame Startphase beginnt erneut.
Fehlerkontrolle & und Flusskontrolle
TCP verwendet Portnummern, um zu wissen, welchen Anwendungsprozess es für die Übergabe des Datensegments benötigt. Gleichzeitig werden Sequenznummern verwendet, um sich mit dem Remote-Host zu synchronisieren. Alle Datensegmente werden mit Sequenznummern gesendet und empfangen. Der Absender weiß, welches letzte Datensegment vom Empfänger empfangen wurde, wenn er ACK erhält. Der Empfänger kennt das letzte vom Absender gesendete Segment unter Bezugnahme auf die Sequenznummer des kürzlich empfangenen Pakets.
Wenn die Sequenznummer eines kürzlich empfangenen Segments nicht mit der vom Empfänger erwarteten Sequenznummer übereinstimmt, wird sie verworfen und NACK zurückgesendet. Wenn zwei Segmente mit derselben Sequenznummer ankommen, wird der TCP-Zeitstempelwert verglichen, um eine Entscheidung zu treffen.
Multiplexing
Die Technik zum Kombinieren von zwei oder mehr Datenströmen in einer Sitzung wird als Multiplexing bezeichnet. Wenn ein TCP-Client eine Verbindung mit dem Server initialisiert, bezieht er sich immer auf eine genau definierte Portnummer, die den Anwendungsprozess angibt. Der Client selbst verwendet eine zufällig generierte Portnummer aus privaten Portnummernpools.
Mit TCP-Multiplexing kann ein Client in einer einzigen Sitzung mit einer Reihe verschiedener Anwendungsprozessverfahren kommunizieren. Beispielsweise fordert ein Client eine Webseite an, die wiederum verschiedene Datentypen (HTTP, SMTP, FTP usw.) enthält. Das Zeitlimit für TCP-Sitzungen wird erhöht und die Sitzung wird länger geöffnet gehalten, damit der Drei-Wege-Handshake-Overhead möglich ist Gemieden werden.
Dadurch kann das Client-System mehrere Verbindungen über eine einzige virtuelle Verbindung empfangen. Diese virtuellen Verbindungen sind für Server nicht geeignet, wenn das Zeitlimit zu lang ist.
Überlastungskontrolle
Wenn große Datenmengen in ein System eingespeist werden, das diese nicht verarbeiten kann, tritt eine Überlastung auf. TCP steuert die Überlastung mithilfe des Fenstermechanismus. TCP legt eine Fenstergröße fest, die dem anderen Ende mitteilt, wie viel Datensegment gesendet werden soll. TCP kann drei Algorithmen zur Überlastungskontrolle verwenden:
Additive Zunahme, multiplikative Abnahme
Langsamer Start
Timeout-Reaktion
Timer-Management
TCP verwendet verschiedene Arten von Timern, um verschiedene Aufgaben zu steuern und zu verwalten:
Keep-Alive-Timer:
Dieser Timer wird verwendet, um die Integrität und Gültigkeit einer Verbindung zu überprüfen.
Nach Ablauf der Keep-Alive-Zeit sendet der Host einen Test, um zu überprüfen, ob die Verbindung noch besteht.
Timer für die erneute Übertragung:
Dieser Timer verwaltet eine zustandsbehaftete Sitzung der gesendeten Daten.
Wenn die Bestätigung der gesendeten Daten nicht innerhalb der Neuübertragungszeit empfangen wird, wird das Datensegment erneut gesendet.
Persist Timer:
Die TCP-Sitzung kann von jedem Host durch Senden der Fenstergröße 0 angehalten werden.
Um die Sitzung fortzusetzen, muss ein Host die Fenstergröße mit einem größeren Wert senden.
Wenn dieses Segment niemals das andere Ende erreicht, können beide Enden unendlich lange aufeinander warten.
Wenn der Persist-Timer abläuft, sendet der Host seine Fenstergröße erneut, um das andere Ende zu informieren.
Persist Timer hilft, Deadlocks in der Kommunikation zu vermeiden.
Zeitgesteuertes Warten:
Nach dem Freigeben einer Verbindung wartet einer der Hosts auf eine Wartezeit, um die Verbindung vollständig zu beenden.
Dies dient dazu, sicherzustellen, dass das andere Ende die Bestätigung seiner Verbindungsbeendigungsanforderung erhalten hat.
Das Zeitlimit kann maximal 240 Sekunden (4 Minuten) betragen.
Crash Recovery
TCP ist ein sehr zuverlässiges Protokoll. Es liefert eine Sequenznummer für jedes im Segment gesendete Byte. Es stellt den Rückkopplungsmechanismus bereit, dh wenn ein Host ein Paket empfängt, ist es an ACK gebunden, dass das Paket die nächste erwartete Sequenznummer hat (wenn es nicht das letzte Segment ist).
Wenn ein TCP-Server auf halbem Weg die Kommunikation zum Absturz bringt und seinen Prozess neu startet, sendet er TPDU-Broadcasts an alle seine Hosts. Die Hosts können dann das letzte nie unbestätigte Datensegment senden und weitermachen.