TCP vs. UDP: Grundlagen der Transportschicht
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 6,53 KB
Operation der Transportschicht
Die wichtigsten Merkmale der Transportschicht sind hier zusammengefasst:
- Fehlermanagement und Multiplexing: Die Fähigkeit, über eine einzige Netzwerkkarte viele verschiedene Datenströme von verschiedenen Anwendungen gleichzeitig zu senden.
- Tracking von Anwendungen: Jedes TCP/UDP-Paket wird einer Nummer zugewiesen, die einem Programm entspricht. Wenn Daten eintreffen, wird diese Nummer geprüft, um die Daten der entsprechenden Anwendung zuzustellen.
- Segmentierung: TCP/UDP nehmen Rohdaten entgegen und teilen sie in Stücke, sogenannte Segmente, auf. Jedes Stück ist Teil einer Reihe von Segmenten. Wenn die Daten den Empfänger erreichen, wird sichergestellt, dass alle Segmente angekommen sind.
- Flusssteuerung (Speed-Control): Wenn TCP Daten an einen langsamen Empfänger sendet, kann es den Datenstrom an die Geschwindigkeit des Zielgeräts anpassen. Wenn die Maschine schnell genug ist, kann die Übertragung beschleunigt werden.
Fazit: Ich kann zwischen Geschwindigkeit (UDP) und Zuverlässigkeit (TCP) wählen.
Unterschiede zwischen TCP- und UDP-Headern
Einige wichtige Unterschiede zwischen den Headern von TCP und UDP sind:
- Der UDP-Header ist viel kleiner (8 Byte für UDP gegenüber 20 Byte für TCP).
- Der TCP-Header enthält eine Segmentnummer, der UDP-Header hingegen nicht.
- Das TCP-Feld verfügt über eine Prüfsumme, mit der Überprüfungen vorgenommen werden können.
- TCP verwendet Bits, um festzulegen, was mit einem Paket geschehen soll.
- TCP hat ein Feld für die Fenstergröße (Window Size). Dies bezeichnet die maximale Anzahl an Frames, die gespeichert werden können, bevor eine Bestätigung gesendet werden muss. Wenn das Fenster 128 beträgt, können bis zu 128 Blöcke empfangen werden, bevor eine einzige Bestätigung für alle 128 gesendet wird.
Beispiel eines vollständigen Sendevorgangs
- Ein Browser möchte eine Verbindung zu http://www.google.es aufbauen.
- Der Browser kennt den Ziel-Port, an den die Daten gesendet werden müssen, nämlich Port 80.
- Diese Nachricht gelangt zur TCP-Schicht, die eine Meldung nach folgendem Schema aufbaut: Absender: 192.168.0.150:48767, Empfänger: www.google, Port: 80, Befehl: GET.
- Diese Nachricht gelangt zum Link Layer, wird dort fragmentiert und an die physikalische Schicht übergeben.
- Die physikalische Schicht sendet die notwendigen Signale aus.
- Die Nachricht erreicht Google.
- Die physikalische Schicht eines Google-Servers rekonstruiert die Bits. Die Rahmen (Frames) erreichen den Link Layer.
- Die Nachricht steigt zur Transportschicht des Google-Servers auf.
- Die Transportschicht prüft, ob der Ziel-Port geöffnet ist. Wenn ja, wird die Nachricht an das Programm übergeben, das diesen Port geöffnet hat.
- Das Programm antwortet.
Adressierung auf Port-Ebene
Ähnlich wie bei IP-Adressen umfasst die Transportschicht die Adressierung für Programme (Absender- und Empfängeradresse). Diese Adressen nennen wir Ports. Mit dem Befehl netstat -a lassen sich die offenen Ports und somit potenzielle Sicherheitslücken eines Geräts finden.
Kategorisierung der Port-Nummern
Die Portzuordnung für Programme erfolgt nach folgendem Schema:
- Well-known Ports (0 bis 1023): Diese sind für Standard-Anwendungen im Internet registriert.
- Registered Ports (1024 bis 49.151): Diese werden für spezifische Anwendungen verwendet, die kein Internetstandard sind.
- Dynamische Ports (49.152 bis 65.535): Diese werden vom Betriebssystem nach dem Zufallsprinzip an Programme vergeben, die temporär einen Port benötigen.
TCP-Verbindungsaufbau und Nummerierung
Dieser Mechanismus wird als TCP Three-Way-Handshake bezeichnet und umfasst drei Schritte:
- Synchronisationsanfrage (SYN)
- Verhandlung (Negotiation)
- Bestätigung (ACK)
Bezüglich der Nummerierung gibt es einen fundamentalen Unterschied zwischen TCP und UDP: TCP inkludiert in jedem Transportsegment eine Sequenznummer. Der Empfänger nutzt diese Zahl, um die Daten in die richtige Reihenfolge zu bringen und eine vollständige Datei zu rekonstruieren.
Vergleich der Header-Inhalte
Sowohl TCP als auch UDP enthalten stets:
- Quell-Port und Ziel-Port
- Quell-IP und Ziel-IP
TCP umfasst jedoch zusätzliche Felder, die UDP fehlen, wie die Sequenznummer und eine erweiterte Prüfsumme.
Detaillierte Merkmale von TCP
- Der Login-Prozess erfolgt über den Three-Way-Handshake (SYN? -> SYN, ACK! -> ACK).
- Es gibt einen definierten Prozess zum Verbindungsabbruch (Senden von FIN).
- Jedes gesendete Segment wird bestätigt.
- Es gibt Kontrollmechanismen für Staus (Congestion Control), falls Sender oder Empfänger zu schnell/langsam sind.
- Es werden Timer verwendet; wenn Daten nicht rechtzeitig eintreffen, verfällt die Erwartung oder es erfolgt ein Resend.
- Um die Leitung nicht zu überlasten, werden Datenblöcke gesammelt bestätigt, statt jedes Segment einzeln zu quittieren.
- Der Empfänger speichert Segmente in einem Puffer. Wenn der Puffer (das Fenster) voll ist, werden die Daten bestätigt.
- Am Ende der Verbindung ordnet TCP alle Segmente, die eventuell in falscher Reihenfolge angekommen sind.
- Fehlende Segmente werden erkannt und neu angefordert.
- Duplizierte Segmente werden verworfen.
Merkmale und Funktionsweise von UDP
UDP ist ein Transportprotokoll, das auf maximale Performance im Internet ausgelegt ist. Dabei wird bewusst auf die Zuverlässigkeit verzichtet, die TCP bietet.
UDP-Port-Nummerierung
UDP arbeitet mit denselben Mechanismen wie TCP. Jede Anwendung verfügt über eine UDP-Port-Nummer. Wer eine Verbindung aufbauen will, muss Datagramme an die Ziel-IP und den Ziel-Port senden. Der Quell-Port des Absenders wird zufällig vergeben. Das Öffnen von Ports funktioniert bei UDP genau wie bei TCP: Der Router prüft eingehende Anfragen; wenn der Ziel-UDP-Port in der Liste der zugelassenen Ports steht, lässt der Router die Daten in das Heimnetzwerk passieren.