Это очень широкий вопрос.
Нет, это не в основном и не обязательно CUBIC.
Ретрансмиссия во-первых указана в «базовом» документе RFC 793 (1981) TCP, раздел 3.7 «Передача данных», пункт «Тайм-аут повторной передачи».
С тех пор было много (действительно много [*]) усовершенствований. Очень заметным является «медленный старт», последний из которых задан RFC 5681, но корни возвращаются к 1997 RFC 2001, «медленный старт TCP, предотвращение перегрузок, быстрый повтор и быстрый алгоритм восстановления».
В этом домене нет «одного размера подходит всем», всегда есть компромисс. Плюс «умные» алгоритмы будут иметь больше возможностей (программное обеспечение + использование ЦП), поэтому они могут использоваться или не использоваться или просто доступны в зависимости от приложения (думаю, встроенные устройства). И так как эти вещи в реализации (т. Е. Не видели в обмене данными между хостом), вы никогда не сможете точно знать, какое использование хоста, которое. Вы увидите размер окна TCP и масштаб в сегментах, например, но вы не будете знать, каким алгоритмом он управляется.
Что касается Linux, предполагается, что по умолчанию - PRR с момента 3.2. До этого был CUBIC и предыдущий BIC.
Хотя, значение по умолчанию не означает, что оно доступно только одному. раздел: «расширенный контроль перегрузки TCP» На моем DEBiAN запас 4.4.0 ядра, это КУБИЧЕСКОЕ::
[email protected]:~$ cat /proc/sys/net/ipv4/tcp_congestion_control
cubic
Хотя Рено доступен слишком
[email protected]:~$ cat /proc/sys/net/ipv4/tcp_allowed_congestion_control
cubic reno
... и есть десяток доступная в конфигурации ядра.
*: https://en.wikipedia.org/wiki/TCP_congestion-avoidance_algorithm
Это * очень * широкий вопрос (см мой ответ). ** Возможно, вы захотите быть более конкретным **. Возможно, ваш вопрос будет отмечен как «слишком широкий» или «вне темы» (потому что он не связан напрямую с программой) и приостановлен. – jbm