Как быстро скачать файл весом 4гб?
Передавать в заголовке Range, чтобы качать нужную часть. Но какой толк, если ты одну часть и так качаешь на максимальной скорости.
Отрываем немного водопроводный кран... и черпаем хоть одной хоть сразу десятью кружками в ведро - скорость наполнения ведра будет одинаковой... Точнее при большом количестве кружек часть прольётся...

Так и тут - общее время на скачку будет определяться размером файла деленному на самую меньшую скорость между отправителем и получателем. 

Единственное что можно сделать для сокращение времени при ситуациях обрывов связи и повторов закачки - использовать механизмы докачки (это если отдающая сторона умеет). 

Тогда общая канва будет выглядеть следующим образом:

- получаем размер файла
- готовим список фрагментов исходя из размера и прочих предположений
- качаем файл фрагментами (Range)
- если скачка удалась - метим фрагмент полученным, а неудавшуюся - повторяем
- когда все фрагменты получены - собираем их в файл
profit 

p.s. по вкусу вышеописанное можно пускать в несколько потоков - иногда лимитер отдачи может лимитировать по конкретному соединению, а не сессии и суммарная скорость может подрасти.