Jak długo fragmentowane fragmenty TCP są przechowywane na serwerze TCP

10

Załóżmy, że dany fragment TCP jest podzielony na dwa datagramy IP i że pierwszy datagram dociera do serwera TCP, ale drugi datagram nigdy nie dociera.

Po pewnym czasie serwer TCP wysyła komunikat podtrzymujący i określa, że ​​klient żyje. Co serwer TCP robi z tym pierwszym datagramem? Czy czeka na przybycie drugiego datagramu, czy odrzuca pierwszy datagram?

Randomblue
źródło

Odpowiedzi:

8

Po upływie limitu czasu ponownego składania fragmentu fragment jest upuszczany; drugi koniec będzie musiał ponownie przesłać.

Ten limit czasu można ogólnie skonfigurować. W systemie Linux domyślnie jest to 30 sekund i jest kontrolowany przez /proc/sys/net/ipv4/ipfrag_time.

Michael Hampton
źródło
Czy upłynął limit czasu ponownego składania fragmentu w odniesieniu do pierwszego odebranego fragmentu, czy też zegar jest resetowany dla każdego nowego przybywającego fragmentu?
Randomblue,
2
Myślę, że będziesz musiał przeczytać kod źródłowy, aby ostatecznie na to odpowiedzieć.
Michael Hampton
2

Nie ma ostatecznej odpowiedzi na to pytanie;

Jeśli zobaczysz ten artykuł na temat retransmisji adaptacyjnej, zobaczysz, że TCP używa RTT jako czynnika w obliczaniu odpowiednich opóźnień.

To jest bardziej szczegółowy artykuł. Zasadniczo nie ma specjalnej wartości limitu czasu tylko dla fragmentacji.

Ten artykuł Cisco wskazuje jednak, że wirtualna zapora IOS XR ma domyślny limit 10 sekund na fragmenty, z własnym konfigurowalnym zegarem. Łączę to, aby powiedzieć, że systemy operacyjne i urządzenia będą zachowywać się inaczej, a jeśli przekazujesz połączenie przez takie urządzenie, na przykład, może to negatywnie zakłócać twoje połączenie.

Najlepiej byłoby połączyć dwie maszyny o tej samej konfiguracji ze zwrotnicą i rozpocząć stamtąd testowanie, jeśli chcesz przetestować efekty opóźnienia fragmentacji.

jwbensley
źródło
Dzięki. Czy uważasz, że limit czasu fragmentu w artykule Cisco jest obliczany w odniesieniu do pierwszego otrzymanego fragmentu lub ostatniego otrzymanego fragmentu?
Randomblue
Ostatni otrzymany fragment ma większy sens niż pierwszy, ale nie wiem, według własnego uznania w tym przykładzie Cisco.
jwbensley