Czy można uzyskać aktualny limit czasu retransmisji gniazda java?

Załóżmy, że po przeciwnych stronach planety są dwa hosty połączone za pomocą gniazda java (ping zwykle trwa 450 ms), które nieprzerwanie przesyła dane.

Rozumiem, że retransmisją zarządza stos tcp platformy bazowej (np. System operacyjny Windows).

Chcę, aby stos OS / TCP nadawcy rozpoczął retransmisję pakietów, dla których nie otrzymano potwierdzenia w ciągu powiedzmy 3 sekund

Jak to zrobić? Czy można zapytać, jakie są aktualnie skonfigurowane ustawienia licznika czasu retransmisji TCP dla danego gniazda?

0
pranahata 20 grudzień 2019, 05:06
1
Nie, nie jest to możliwe i generalnie nie jest możliwe zarządzanie retransmisją z dowolnego znanego mi interfejsu API TCP.
 – 
user207421
20 grudzień 2019, 06:36

1 odpowiedź

Nie jest możliwe dostosowanie limitu czasu retransmisji z poziomu Java. Rzeczywiście, myślę, że nie jest to możliwe z dowolnego programu przestrzeni użytkownika napisanego w jakimkolwiek języku programowania.

Limity czasu retransmisji są określane przez algorytm(y) sterowania przepływem TCP. Limity czasu są adaptacyjne; tj. algorytm dostosowuje je w górę iw dół zgodnie z warunkami sieci. W rzeczywistości w ciągu ostatnich 50 lat wypróbowano wiele wersji algorytmu sterowania przepływem TCP. Podsumowanie Kontroli przeciążenia TCP znajduje się w Wikipedii.

W zależności od systemu operacyjnego (i uprawnień administratora) można sprawić, aby system operacyjny używał różnych algorytmów sterowania przepływem. Oto kilka linków:

Ale najważniejsze jest to, że nie możesz (i nie powinieneś) dostrajać tego z aplikacji Java.

2
Stephen C 20 grudzień 2019, 05:57