Отрываем немного водопроводный кран... и черпаем хоть одной хоть сразу десятью кружками в ведро - скорость наполнения ведра будет одинаковой... Точнее при большом количестве кружек часть прольётся...
Так и тут - общее время на скачку будет определяться размером файла деленному на самую меньшую скорость между отправителем и получателем.
Единственное что можно сделать для сокращение времени при ситуациях обрывов связи и повторов закачки - использовать механизмы докачки (это если отдающая сторона умеет).
Тогда общая канва будет выглядеть следующим образом:
- получаем размер файла
- готовим список фрагментов исходя из размера и прочих предположений
- качаем файл фрагментами (Range)
- если скачка удалась - метим фрагмент полученным, а неудавшуюся - повторяем
- когда все фрагменты получены - собираем их в файл
profit
p.s. по вкусу вышеописанное можно пускать в несколько потоков - иногда лимитер отдачи может лимитировать по конкретному соединению, а не сессии и суммарная скорость может подрасти.