Создаете несколько потоков и в каждом задаете через параметр заголовка
Range участок скачиваемых данных.
В C# это делается так
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.contoso.com");
myHttpWebRequest.AddRange(50,150);
Также необходимо знать, поддерживает ли удаленный Web сервер данный заголовок.