Одно преимущество нескольких одновременных подключений может дать вам (с учетом тех же предостережений, о которых упоминали голубь и Брайан), - вы сможете лучше преодолеть проблему слишком маленького окна приема TCP.
Принцип, к которому это относится, - произведение задержки полосы пропускания . (Более подробное объяснение здесь ).
Краткое резюме: в средах с высокой задержкой и высокой пропускной способностью надежная связь, такая как TCP, часто ограничена количеством данных в полете в любой момент времени. Одновременно можно использовать несколько соединений, поскольку продукт задержки полосы пропускания применяется к каждому соединению отдельно.
Более подробно, учтите следующее: у вас есть сквозная полоса пропускания 10 ^ 8 бит в секунду (10 мегабит в секунду) и задержка туда-обратно в 100 мс (0,1 секунды). Следовательно, может быть до 10 ^ 7 бит (10 мегабит = ~ 1,25 мегабайт) данных, отправленных до того, как подтверждение первого бита данных будет возвращено отправителю.
Это будет варьироваться в зависимости от стека TCP вашей ОС, но нередко значение размера окна приема TCP составляет 64 КБ. Очевидно, что это слишком мало, чтобы позволить вам в полной мере использовать сквозную пропускную способность; после отправки 64 КБ (512 КБ) данных ваш процесс отправки будет ожидать обновления окна от получателя, указывающего, что некоторые данные были использованы, прежде чем отправлять больше данных в провод.
Наличие нескольких открытых сеансов TCP позволяет обойти это благодаря тому, что каждый сеанс TCP будет иметь свои собственные буферы отправки / получения.
Конечно, в Интернете трудно определить истинную доступную сквозную пропускную способность из-за размера окна TCP, конкуренции и т. Д. Если вы сможете предоставить некоторые примеры данных, мы можем помочь больше.
Другой вариант, на который вы должны обратить внимание, - это установить большее окно приема при создании сокета, либо глобально, используя настройки ОС, либо для каждого сокета, используя параметры сокета.