Transportprotokolle TCP/UDP


By admin - Posted on 14 April 2009

Allgemein TCP/UDP
Best Effort Delivery Ungesicherte Zustellung von IP-Diagrammen
UDP UDP ist genau wie IP ein verbindungsloses Protokoll,
dass keinerlei Garantien dafür übernimmt das die in Form
von  Datagrammen übertragenen Informationen beim Empfänger
ankommen.
Einsatzgebiete
  • Die Anwendung benötigt Broadcast oder Multicast
  • DNS, TFTP, NFS, SNMP
Checksum
Prüfsumme
Die Prüsumme ist optional und umfasst den Pseudo-Kopf,
den UDP-Kopf und die Nutzdaten.
Der Pseudo-Kopf wiederum umfasst einige Felder des IP-Kopfes (Absender,
Empfänger, Protokoll ,UDP-Länge)
Kurze Erinnerung : Die Prüfsumme des IP-Kopfes bezieht sich nur
auf den Kopf selbst, nicht auf die Daten.
Bei fehlerhafter Prüfsumme wird das Packet verworfen, d.h. es
wird keine Fehlermeldung generiert.
ARP Flooding Muss ein UDP-Paket fragmentiert werden und dem Sender
ist die Ethernet-Adresse des Empfängers
nicht mehr bekannt so wird ein ARP-Anfrage gestartet. Dies könnte
nun für jedes Fragment erfolgen und somit
ein ARP-Flooding nach sich ziehen. Abhilfe : Pro Ziel nur eine Anfrage
in der Sekunde (RFC 1122)
TCP TCP arbeitet verbindungsorientiert und bietet den Anwendungen
jeweils einen zuverlässigen, innerlich aber nicht strukturierten
Bytestrom über den sie mit einer anderen Anwendung kommunizieren
können.
Einsatzgebiete
  • Telnet, FTP, Secure Shell, SMTP
  • Überall wo zuverlässige Datenübermittlung notwendig
    ist.
ISN
Initial sequenze number
Dies ist die erste Sequenznummer die der Sender beim
Verbindungsaufbau willkürlich festlegt.
Da TCP Duplexbetrieb ermöglicht muss jede Seite ihre eigene Sequenznummer
verwalten. 32-Bit lang.
Acknowledgement Number
Bestätigungsnummer
Wird immer gesendet, ist aber nur bei gesetztem ACK-Flag
gültig.
Sie gibt die Sequenznummer desjenigen Bytes an das als nächstes
erwartet wird.
Damit wird automatisch der Empfang aller Bytes mit kleinerer Sequenznummer
bestätigt. 32-Bit lang
Window
Fenstergrösse
Mit der Fenstergrösse informiert der Empfänger
den Sender wieviele Bytes er noch akzeptieren kann.
16-Bit = max. 65535 Bytes
Checksum
Prüfsumme
Identisch mit UDP. Bei TCP ist sie jedoch obligatorisch.
Im Pseudokopf wird hier natürlich die Länge des TCP-Segments
anstatt des UDP-Datagramms verwendet.
MSL
Maximum Segment Lifetime
Maximale Lebensdauer eines Segmentes im Netz (gängige
Werte sind 30, 60 und 120 sec).
Ist eine TCP-Verbindung im Zustand TIME-WAIT verbleibt sie dort für
die doppelte MSL.
Auch ist der Name 2MSL Wait State gebräuchlich.
MSS
Maximum Segment Size
Segment maximaler Groesse. Ist eine Option des TCP-Kopfes
die allerdings nur im SYN-Segment gesetzt sein darf.
Die MSS bezieht sich nur auf das Datenfeld, nicht aber auf den TCP-Kopf.
Ohne Angabe wird ein Vorzugswert von 536 Bytes genommen (576 minus
IP- und TCP-Kopf).
Delayed ACK Nach Erhalt eines Segments wird nicht sofort ein ACK
gesendet, sondern gewartet ob Daten anstehen die zusammen mit dem
ACK gesendet werden können. Das gemeinsame Übertragen nennt
man auch Piggybacking.
Laut RFC 112 dard die Verzögerung nicht grösser als 1/2
Sekunde sein. Praktisch wird ein Timer mit 200ms genutzt.
Urgent Data Hier wird das URG-Flag gesetzt. Durch Addition dieses
Wertes zur Sequenznummer des ersten Bytes des Segments erhält
man die Sequenznummer des letzten Bytes der Vorrangdaten.
Timeout and Retransmission Für jedes gesendete Segment verwaltet TCP einen
Timer. Erfolgt nach einer gewissen Zeit keine Quittierung so wird
das Segment erneut gesendet.
Nagle Algorithmus Sofern es für eine Verbindung noch unbestätigte
Segmente gibt, puffert der Sender sämtliche Nutzerdaten, bis
entweder alle noch ausstehenden Bestätigungen eingetroffen sind
oder genug Daten gesammelt wurden, um ein Paket der Maximalgröße
(MSS) versenden zu können. Diese Regel gilt unabhängig davon,
ob der Nutzer das unverzügliche Senden durch eine Push-Operation
angefordert hat oder nicht. Self-clocking.
Stop-and-Wait-Protokoll Jedes gesendete Paket muss erst bestätigt werden,
bevor das nächste übertragen werden darf.
Bsp.: TFTP
Sliding-Window-Protokoll Ein zusammenhängender Teil des Bytestroms wird
von einem Fenster überdeckt. Dieses gleitet mit fortlaufender
Kommunikation durch den Bytestrom. Sender und Empfänger verwalten
jeweils ein Fenster.
Durch den duplexbetrieb von TCP ergeben sich 4 Fenster für jede
Verbindung.
SWS
Silly Window Syndrome
Jede Quittung bietet nur ein sehr kleines Fenster an,
obwohl genug Empfangspuffer vorhanden ist und
jedes Segment nur sehr wenig Daten enthält
Retransmission-Timer Timer zur Sendewiederholung bei ausbleibender Quittung
(200 ms)
RTT
Round-Trip Time
Zeit zwischen Sendung und Quittung eines ausgesendeten
Bytes mit bestimmter Sequenznummer
SRTT
Smoothed Round-Trip Time
Schätzwert der mittleren RTT
RTO
Retransmission TimeOut
Initialwert des Retransmission-Timers
Persist Timer Geht die Anzeige einer neuen Fenstergröße verloren,
kann dies einen Deadlock zur Folge haben: Der Sender wartet
auf die Erlaubnis zum Senden (d.h. das Öffnen des Fensters,
das für ihn immer noch die Länge 0 hat), und der Empfänger
erwartet von der Gegenseite neue Daten (weil er ihr ja bereits ein
Fenster offeriert hat, das mehr als 0 Bytes umfaßt).

Um einen solchen Deadlock zu vermeiden, nutzt der Sender den Persist-Timer,
der ihn in bestimmten, u.U. schrittweise nach einer Backoff-Strategie
wachsenden Abständen dazu veranlaßt, von sich aus die
aktuelle Fenstergröße beim Empfänger zu erfragen,
z.B. aller 60 Sekunden.

Keepalive-Timer Optional. Er sorgt für das Aussenden eines Testpakets,
wenn innerhalb eines bestimmten Intervalls weder Daten noch Bestätigungen
empfangen wurden und auch keine Daten zu senden sind.  Defaultwert
=> 2 Std.
Congestion Collapse Bsp. Durch Überlauf der Puffer an einem Router
kann es zu Verlusten von Paketen kommen. Das Problem verschärft
sich automatisch, wenn es auf Grund nicht oder nicht rechtzeitig eintreffender
Quittungen zu Sendewiederholungen kommt. Dies schaukelt sich hoch
bis das Netz nicht mehr benutzbar ist.
Congestion Window (cwnd) Fenster für Slow-Start und Congestion Avoidance.
Gemessen in Bytes.
Slow-Start und Congestion Avoidance Der Slow-Start hat die Aufgabe, den Datenfluß
einer TCP-Verbindung sowohl unmittelbar nach dem Start als auch nach
Paketverlusten in Gang zu bringen und einen stabilen Zustand zu erreichen.
Congestion Avoidance : Bei jedem Timeout ist cwnd zu halbieren,
sofern dadurch ein bestimmtes Minimum (oft 1-2 x MSS) nicht unterschritten
wird.
Fast Retransmit und Fast Recovery Treffen mehrere duplizierte Qutittungen (duplicate
ACK) ein dann wird Fast Retransmit ausgelöst und das fehlende
Segment sofort wiederholt, vor Ablauf des Retransmissiontimers. Fast
Recovery besagt nun das zu Congestion Avoidanceübergegangen
wird anstatt Slow-Start, welches nach Retransmit normal wäre.
Dadurch wird ein abruptes reduzieren des Datenflusses verhindert
SACK
Selective Acknowlegements
Ist Option. Der Empfänger darf auch den Erhalt von isolierten,
d.h. nicht lückenlos aufeinander folgenden Segmenten bestätigen.
Sack ist eine Option die lediglich bei einem SYN-Segment angegeben
werden darf.
Die Ränder eines isolierten Datenblocks werden durch zwei vorzeichenlosen
32-Bit Integern beschrieben.
Durch die TCP-Kopflänge ist die Beschreibung auf drei Blöcke
limitiert.
Window Scale Ist Option. Die Option Window Scale vergrößert
das effektiv nutzbare Fenster durch eine Skalierung unter Verwendung
von Zweierpotenzen, deren Exponent im Feld Shift Count angegeben wird
und im Bereich von 0 bis 14 liegt. Null bedeutet "keine Skalierung".
Die neue maximale Fenstergröße in Bytes errechnet sich
wie folgt:
65535 * 214 = 65535 * 16384 = 1.073.725.440
TCP-intern wird die Fenstergröße jetzt als 32-Bit-Zahl
verwaltet. Den Kopf muß man dazu allerdings nicht ändern.
Die Option darf nur in einem Segment mit SYN-Flag angegeben werden,
d.h., der Skalierungsfaktor ist nach dem Verbindungsaufbau nicht
mehr veränderbar. Hin- und Rückrichtung können verschiedene
Faktoren verwenden.
Timestamps Ist Option. Die Option Timestamps gestattet, jedem
Segment zwei Zeitstempel aufzuprägen. Das Feld Timestamp Echo
Reply ist nur bei gesetztem ACK-Flag gültig. Eine Synchronisation
der Uhren beider Seiten ist nicht erforderlich. Timestamps ermöglichen
es dem Empfänger auch, bei der wiederholten Verwendung derselben
Sequenznummer innerhalb der MSL aktuelle und alte Pakete (also jene,
die die Bytes mit den Sequenznummern N+232 bzw. N enthalten) voneinander
unterscheiden zu können.