Transportprotokolle TCP/UDP
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 |
|
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 |
|
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, |
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. |
- Login to post comments