Heute beginnen wir mit TCP. Bereits im Kapitel über die Schichtenarchitektur haben wir einen wichtigen Punkt angesprochen: Auf der Netzwerkschicht und darunter geht es hauptsächlich um Host-zu-Host-Verbindungen. Das bedeutet, dass Ihr Computer wissen muss, wo sich ein anderer Computer befindet, um eine Verbindung herzustellen. Die Kommunikation in einem Netzwerk ist jedoch häufiger eine Interprozesskommunikation als eine Kommunikation zwischen Rechnern. Daher führt das TCP-Protokoll das Konzept des Ports ein. Ein Port kann nur von einem Prozess belegt werden, wodurch die direkte Kommunikation zwischen Anwendungsprozessen ermöglicht wird, die auf verschiedenen Hosts laufen.
Die Aufgabe der Transportschicht besteht darin, die direkte Kommunikation zwischen Anwendungsprozessen auf verschiedenen Hosts zu ermöglichen. Daher wird sie auch als Ende-zu-Ende-Protokoll bezeichnet. Die Transportschicht verbirgt die Kerndetails des Netzwerks und ermöglicht es dem Anwendungsprozess, einen logischen Ende-zu-Ende-Kommunikationskanal zwischen den beiden Komponenten der Transportschicht wahrzunehmen.
TCP steht für Transmission Control Protocol und ist ein verbindungsorientiertes Protokoll. Das bedeutet, dass vor dem Datenaustausch zwischen zwei Anwendungen ein Handshake durchgeführt werden muss. Der Handshake ist ein logischer Verbindungsprozess, der eine zuverlässige Übertragung und einen geordneten Empfang von Daten gewährleistet. Dabei wird eine Verbindung zwischen Quell- und Zielrechner hergestellt, indem eine Reihe von Kontrollpaketen ausgetauscht und Parameter sowie Regeln für die erfolgreiche Datenübertragung vereinbart werden.
Was ist TCP? (Mylinking'sNetzwerk-AbhöreUndNetzwerkpaketbrokerkonnte sowohl TCP- als auch UDP-Pakete verarbeiten)
TCP (Transmission Control Protocol) ist ein verbindungsorientiertes, zuverlässiges, auf Byte-Streams basierendes Transportprotokoll.
VerbindungsorientiertVerbindungsorientiert bedeutet, dass die TCP-Kommunikation eine Eins-zu-Eins-Kommunikation ist, also eine Punkt-zu-Punkt-Ende-zu-Ende-Kommunikation, im Gegensatz zu UDP, das Nachrichten an mehrere Hosts gleichzeitig senden kann, sodass eine Eins-zu-Viele-Kommunikation nicht möglich ist.
ZuverlässigDie Zuverlässigkeit von TCP gewährleistet, dass Pakete unabhängig von Änderungen in der Netzwerkverbindung zuverlässig an den Empfänger zugestellt werden, was das Protokollpaketformat von TCP komplexer macht als das von UDP.
Byte-Stream-basiertDie Byte-Stream-basierte Natur von TCP ermöglicht die Übertragung von Nachrichten beliebiger Größe und garantiert die Nachrichtenreihenfolge: Selbst wenn die vorherige Nachricht nicht vollständig empfangen wurde und selbst wenn die nachfolgenden Bytes empfangen wurden, leitet TCP sie nicht zur Verarbeitung an die Anwendungsschicht weiter und verwirft automatisch doppelte Pakete.
Sobald Host A und Host B eine Verbindung hergestellt haben, benötigt die Anwendung lediglich die virtuelle Kommunikationsleitung zum Senden und Empfangen von Daten, wodurch die Datenübertragung sichergestellt wird. Das TCP-Protokoll ist für die Steuerung von Aufgaben wie Verbindungsaufbau, -abbau und -haltung zuständig. Hierbei ist zu beachten, dass die virtuelle Leitung lediglich den Verbindungsaufbau bezeichnet. Die TCP-Protokollverbindung signalisiert lediglich, dass die beiden Seiten mit der Datenübertragung beginnen können und die Zuverlässigkeit der Daten gewährleistet ist. Routing und Transport werden von den Netzwerkgeräten gesteuert; das TCP-Protokoll selbst ist für diese Details nicht zuständig.
Eine TCP-Verbindung ist ein Vollduplex-Dienst, was bedeutet, dass Host A und Host B Daten in beide Richtungen über eine TCP-Verbindung übertragen können. Das heißt, Daten können bidirektional zwischen Host A und Host B ausgetauscht werden.
TCP speichert Daten temporär im Sendepuffer der Verbindung. Dieser Sendepuffer ist einer der Caches, die während des Drei-Wege-Handshakes eingerichtet werden. Anschließend sendet TCP die Daten aus dem Sendecache zum passenden Zeitpunkt an den Empfangscache des Zielhosts. In der Praxis verfügt jeder Peer über einen Sendecache und einen Empfangscache, wie hier dargestellt:
Der Sendepuffer ist ein vom TCP-System auf Senderseite verwalteter Speicherbereich, der zur temporären Speicherung der zu sendenden Daten dient. Beim Drei-Wege-Handschlag zum Verbindungsaufbau wird der Sendepuffer eingerichtet und zur Datenspeicherung verwendet. Er wird dynamisch an die Netzwerkauslastung und das Feedback des Empfängers angepasst.
Ein Empfangspuffer ist ein Speicherbereich, der von der TCP-Implementierung auf der Empfangsseite verwaltet wird und zur temporären Speicherung empfangener Daten dient. TCP speichert die empfangenen Daten im Empfangscache und wartet darauf, dass die übergeordnete Anwendung sie liest.
Beachten Sie, dass die Größe des Sende- und Empfangscaches begrenzt ist. Wenn der Cache voll ist, kann TCP Strategien wie Staukontrolle, Flusskontrolle usw. anwenden, um eine zuverlässige Datenübertragung und Netzwerkstabilität zu gewährleisten.
In Computernetzwerken erfolgt die Datenübertragung zwischen Hosts mittels Segmenten. Was ist also ein Paketsegment?
TCP erstellt ein TCP-Segment (oder Paketsegment), indem es den eingehenden Datenstrom in Teile aufteilt und jedem Teil TCP-Header hinzufügt. Jedes Segment kann nur für eine begrenzte Zeit übertragen werden und darf die maximale Segmentgröße (MSS) nicht überschreiten. Auf dem Weg zur Datenverbindung durchläuft ein Paketsegment die Sicherungsschicht (Link Layer). Die Sicherungsschicht verfügt über eine maximale Übertragungseinheit (MTU), die die maximale Paketgröße angibt, die die Sicherungsschicht passieren kann. Die maximale Übertragungseinheit ist üblicherweise mit der Kommunikationsschnittstelle verknüpft.
Worin besteht also der Unterschied zwischen MSS und MTU?
In Computernetzwerken ist die hierarchische Architektur von großer Bedeutung, da sie die Unterschiede zwischen den verschiedenen Ebenen berücksichtigt. Jede Schicht hat eine eigene Bezeichnung: In der Transportschicht werden die Daten als Segment bezeichnet, in der Netzwerkschicht als IP-Paket. Die maximale Übertragungseinheit (MTU) kann daher als die maximale Größe eines IP-Pakets verstanden werden, das von der Netzwerkschicht übertragen werden kann, während die maximale Segmentgröße (MSS) ein Konzept der Transportschicht ist, das die maximale Datenmenge angibt, die ein TCP-Paket gleichzeitig übertragen kann.
Beachten Sie, dass bei einer maximalen Segmentgröße (MSS) größer als die maximale Übertragungseinheit (MTU) die IP-Fragmentierung auf der Netzwerkschicht erfolgt und TCP die größeren Datenmengen nicht in Segmente aufteilt, die der MTU-Größe entsprechen. Es wird einen Abschnitt auf der Netzwerkschicht geben, der der IP-Schicht gewidmet ist.
TCP-Paketsegmentstruktur
Lassen Sie uns das Format und den Inhalt von TCP-Headern genauer betrachten.
SequenznummerBeim Verbindungsaufbau einer TCP-Verbindung wird eine vom Computer beim Verbindungsaufbau generierte Zufallszahl als Anfangswert verwendet. Diese Sequenznummer wird dem Empfänger über das SYN-Paket übermittelt. Während der Datenübertragung erhöht der Sender die Sequenznummer entsprechend der gesendeten Datenmenge. Der Empfänger prüft die Reihenfolge der Daten anhand der empfangenen Sequenznummer. Sollten die Daten in falscher Reihenfolge vorliegen, ordnet der Empfänger sie neu an, um die korrekte Reihenfolge sicherzustellen.
BestätigungsnummerDies ist eine Sequenznummer, die in TCP zur Bestätigung des Datenempfangs verwendet wird. Sie gibt die Sequenznummer der nächsten Daten an, die der Sender erwartet. In einer TCP-Verbindung ermittelt der Empfänger anhand der Sequenznummer des empfangenen Datenpaketsegments, welche Daten erfolgreich empfangen wurden. Sobald der Empfänger die Daten erfolgreich empfangen hat, sendet er ein ACK-Paket an den Sender, das die Bestätigungsnummer enthält. Nach Empfang des ACK-Pakets kann der Sender bestätigen, dass die Daten vor dem Senden der Bestätigungsnummer erfolgreich empfangen wurden.
Die Steuerbits eines TCP-Segments umfassen Folgendes:
ACK-BitWenn dieses Bit auf 1 gesetzt ist, bedeutet dies, dass das Bestätigungsantwortfeld gültig ist. TCP schreibt vor, dass dieses Bit auf 1 gesetzt sein muss, außer bei SYN-Paketen, wenn die Verbindung initial hergestellt wird.
RST-BitWenn dieses Bit auf 1 gesetzt ist, bedeutet dies, dass eine Ausnahme in der TCP-Verbindung vorliegt und die Verbindung zwangsweise getrennt werden muss.
SYN-BitWenn dieses Bit auf 1 gesetzt ist, bedeutet dies, dass die Verbindung hergestellt und der Anfangswert der Sequenznummer im Sequenznummernfeld festgelegt wird.
FIN-BitWenn dieses Bit auf 1 gesetzt ist, bedeutet dies, dass zukünftig keine weiteren Daten gesendet werden und die Verbindung aufrechterhalten werden soll.
Die verschiedenen Funktionen und Eigenschaften von TCP spiegeln sich in der Struktur der TCP-Paketsegmente wider.
Was ist UDP? (Mylinking'sNetzwerk-AbhöreUndNetzwerkpaketbrokerkonnte sowohl TCP- als auch UDP-Pakete verarbeiten)
Das User Datagram Protocol (UDP) ist ein verbindungsloses Kommunikationsprotokoll. Im Vergleich zu TCP bietet UDP keine komplexen Kontrollmechanismen. Das UDP-Protokoll ermöglicht es Anwendungen, gekapselte IP-Pakete direkt zu senden, ohne eine Verbindung herzustellen. Wenn der Entwickler UDP anstelle von TCP verwendet, kommuniziert die Anwendung direkt mit dem IP-Netzwerk.
Der vollständige Name des UDP-Protokolls lautet User Datagram Protocol, und sein Header ist nur acht Byte (64 Bit) lang, was ihn sehr kompakt macht. Das Format des UDP-Headers ist wie folgt:
Ziel- und QuellporteIhr Hauptzweck besteht darin, anzugeben, an welchen Prozess UDP Pakete senden soll.
PaketgrößeDas Feld „Paketgröße“ enthält die Größe des UDP-Headers plus die Größe der Daten.
Prüfsumme: Entwickelt, um eine zuverlässige Zustellung von UDP-Headern und -Daten zu gewährleisten. Die Rolle der Prüfsumme besteht darin, zu erkennen, ob während der Übertragung eines UDP-Pakets ein Fehler oder eine Beschädigung aufgetreten ist, um die Integrität der Daten zu gewährleisten.
Unterschiede zwischen TCP und UDP in MylinkingNetzwerk-AbhöreUndNetzwerkpaketbrokerkonnte sowohl TCP- als auch UDP-Pakete verarbeiten
TCP und UDP unterscheiden sich in folgenden Aspekten:
VerbindungTCP ist ein verbindungsorientiertes Transportprotokoll, das den Aufbau einer Verbindung vor der Datenübertragung erfordert. UDP hingegen benötigt keine Verbindung und kann Daten sofort übertragen.
DienstobjektTCP ist ein Zwei-Punkt-Kommunikationsprotokoll, d. h. eine Verbindung hat nur zwei Endpunkte, die miteinander kommunizieren. UDP hingegen unterstützt interaktive Eins-zu-Eins-, Eins-zu-Viele- und Viele-zu-Viele-Kommunikation und kann somit gleichzeitig mit mehreren Hosts kommunizieren.
ZuverlässigkeitTCP gewährleistet die zuverlässige Datenübertragung und stellt sicher, dass die Daten fehlerfrei, verlustfrei und nicht dupliziert sind und bedarfsgerecht ankommen. UDP hingegen bemüht sich nach besten Kräften um eine zuverlässige Zustellung, kann diese aber nicht garantieren. Bei der Übertragung von UDP kann es zu Datenverlusten und anderen Problemen kommen.
Staukontrolle, DurchflusskontrolleTCP verfügt über Mechanismen zur Stau- und Flusskontrolle, die die Datenübertragungsrate an die Netzwerkbedingungen anpassen, um die Sicherheit und Stabilität der Datenübertragung zu gewährleisten. UDP hingegen besitzt keine solchen Mechanismen; selbst bei starker Netzwerkauslastung wird die UDP-Senderate nicht angepasst.
KopfzeileTCP hat eine lange Headerlänge von typischerweise 20 Byte, die sich bei Verwendung von Optionsfeldern erhöht. UDP hingegen hat einen festen Header von nur 8 Byte, wodurch der Header-Overhead bei UDP geringer ist.

Anwendungsszenarien für TCP und UDP:
TCP und UDP sind zwei verschiedene Transportprotokolle, und es gibt einige Unterschiede in ihren Anwendungsszenarien.
Da TCP ein verbindungsorientiertes Protokoll ist, wird es hauptsächlich in Szenarien eingesetzt, in denen eine zuverlässige Datenübertragung erforderlich ist. Einige gängige Anwendungsfälle sind:
FTP-DateiübertragungTCP kann sicherstellen, dass Dateien während der Übertragung nicht verloren gehen oder beschädigt werden.
HTTP/HTTPSTCP gewährleistet die Integrität und Korrektheit von Webinhalten.
Da UDP ein verbindungsloses Protokoll ist, bietet es keine Zuverlässigkeitsgarantie, zeichnet sich aber durch Effizienz und Echtzeitfähigkeit aus. UDP eignet sich für folgende Anwendungsfälle:
Datenverkehr mit geringem Paketaufkommen, wie z. B. DNS (Domain Name System)DNS-Anfragen sind üblicherweise kurze Pakete, und UDP kann sie schneller abwickeln.
Multimedia-Kommunikation wie Video und AudioFür Multimedia-Übertragungen mit hohen Echtzeitanforderungen kann UDP eine geringere Latenz bieten, um sicherzustellen, dass Daten zeitnah übertragen werden können.
RundfunkkommunikationUDP unterstützt Eins-zu-Viele- und Viele-zu-Viele-Kommunikation und kann zur Übertragung von Broadcast-Nachrichten verwendet werden.
Zusammenfassung
Heute haben wir TCP kennengelernt. TCP ist ein verbindungsorientiertes, zuverlässiges, bytestreambasiertes Transportprotokoll. Es gewährleistet die zuverlässige Übertragung und den geordneten Empfang von Daten durch Verbindungsaufbau, Handshake und Bestätigung. Das TCP-Protokoll nutzt Ports zur Kommunikation zwischen Prozessen und bietet direkte Kommunikationsdienste für Anwendungsprozesse, die auf verschiedenen Hosts laufen. TCP-Verbindungen sind Vollduplex und ermöglichen so die gleichzeitige bidirektionale Datenübertragung. UDP hingegen ist ein verbindungsloses Kommunikationsprotokoll, das keine Zuverlässigkeitsgarantien bietet und sich für Szenarien mit hohen Echtzeitanforderungen eignet. TCP und UDP unterscheiden sich hinsichtlich Verbindungsmodus, Dienstobjekt, Zuverlässigkeit, Staukontrolle, Flusskontrolle und anderen Aspekten, und auch ihre Anwendungsszenarien sind unterschiedlich.
Veröffentlichungsdatum: 03.12.2024



