Мы знаем, что способ (базовый) TCP работает, начиная с фазы медленного старта с последующим линейным увеличением окна перегрузки (CWD). CWD настраивается в соответствии с состоянием сети. Поэтому, как только мы установим соединение, потребуется некоторое время, чтобы соединение достигло стабильного CWD, в зависимости от состояния сети.
Таким образом, по этой логике TCP-соединение будет пытаться заполнить все доступные ч / б ссылки. Таким образом, если имеется несколько TCP-соединений, каждое из них настроит свой CWD таким образом, чтобы минимальная перегрузка.
Итак, предположим, у меня есть канал 100 Мбит / с (топология приведена ниже). У меня есть приложение, которое отправляет UDP-трафик. У меня есть другое приложение iperf
которое может инициировать параллельные соединения TCP по той же ссылке.
[h1] ---- 100 Mbps ---- [h2]
h1 (UDP + iperf client)
h2 (UDP + iperf server)
Я делаю эксперимент следующим образом
- 1 UDP + 1 TCP
- 1 UDP + 2 TCP
- 1 UDP + 4 TCP
- 1 UDP + 8 TCP и т.д.
Мой вывод говорит, что пропускная способность 1 TCP-соединения ниже, чем пропускная способность 8 TCP-соединений вместе взятых (Exp 1 против Exp 4). Следует иметь в виду, что индивидуальная пропускная способность 8 соединений значительно ниже (что очевидно).
Итак, мой вопрос: почему одно TCP-соединение не может использовать полное ч / б, которое 8 TCP может сделать вместе?