Я просто пытаюсь понять, как работает функция ретрансляции в случае TCP на моем Linux-компьютере, но в Интернете вы можете найти действительно другую информацию, большая часть которой устарела или неверна, поэтому я решил задать вопрос здесь.
Когда дело доходит до RTO, в ядре Linux (файл include / net / tcp.h) у вас есть два варианта:
#define TCP_RTO_MAX ((unsigned)(120*HZ))
#define TCP_RTO_MIN ((unsigned)(HZ/5))
Таким образом, есть возможность установить минимальное и максимальное время для повторной передачи пакета. Оба вышеуказанных параметра зависят от HZ
, который можно указать в исходном коде ядра или настроить через CONFIG_HZ
, по крайней мере, в случае adm64:
$ egrep HZ /boot/config-4.1.0-2-amd64
...
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
Таким образом, минимальное RTO должно быть около 50 мс (250/5). Но когда вы проверите следующий вывод wirehark, вы увидите совсем другое:
Одна секунда. Есть ли опция, которая также может повлиять на время RTO?