Wie lange werden fragmentierte TCP-Fragmente auf dem TCP-Server gespeichert?


10

Angenommen, ein bestimmtes TCP-Fragment ist in zwei IP-Datagramme fragmentiert und das erste Datagramm kommt auf dem TCP-Server an, das zweite Datagramm jedoch nie.

Nach einer bestimmten Zeit sendet der TCP-Server ein Keepalive und stellt fest, dass der Client am Leben ist. Was macht der TCP-Server dann mit diesem ersten Datagramm? Wartet man auf das Eintreffen des zweiten Datagramms oder verwirft es das erste Datagramm?

Antworten:


8

Nach Ablauf des Zeitlimits für den erneuten Zusammenbau des Fragments wird das Fragment gelöscht. Das andere Ende müsste erneut übertragen werden.

Dieses Zeitlimit ist im Allgemeinen konfigurierbar. Unter Linux sind es standardmäßig 30 Sekunden und werden über gesteuert /proc/sys/net/ipv4/ipfrag_time.


Ist das Zeitlimit für das erneute Zusammensetzen des Fragments in Bezug auf das erste empfangene Fragment oder wird der Timer für jedes neu ankommende Fragment zurückgesetzt?
Randomblue

2
Ich denke, Sie müssten den Quellcode lesen, um dies definitiv zu beantworten.
Michael Hampton

2

Es gibt keine endgültige Antwort auf diese Frage;

Wenn Sie diesen Artikel über adaptive Neuübertragung sehen, werden Sie feststellen, dass TCP RTT als Faktor für die Berechnung geeigneter Verzögerungen verwendet.

Dies ist ein ausführlicherer Artikel. Im Wesentlichen gibt es keinen speziellen Timeout-Wert nur für die Fragmentierung.

In diesem Cisco-Artikel wird jedoch darauf hingewiesen, dass eine virtuelle IOS XR-Firewall ein Standardzeitlimit von 10 Sekunden für Fragmente mit einem eigenen konfigurierbaren Timer aufweist. Ich verknüpfe dies damit, dass Betriebssysteme und Geräte sich unterschiedlich verhalten. Wenn Sie beispielsweise eine Verbindung über ein solches Gerät weiterleiten, kann dies Ihre Verbindung beeinträchtigen.

Es ist am besten, zwei Computer derselben Konfiguration mit einem Crossover zu verbinden und von dort aus mit dem Testen zu beginnen, wenn Sie die Auswirkungen der Fragmentierungsverzögerung testen möchten.


Vielen Dank. Denken Sie, dass das Fragment-Timeout im Cisco-Artikel in Bezug auf das erste empfangene Fragment oder das zuletzt empfangene Fragment berechnet wird?
Randomblue

Das zuletzt empfangene Fragment ist sinnvoller als das erste, aber ich weiß nicht, es liegt in diesem Beispiel im Ermessen von Cisco.
Jwbensley
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.