I just noticed today when I was downloading a file via the browser downloader, I get ~200kbps. Also, I can’t ‘pause’ the download.
But when I switched to a downloader app (think IDM), the speed became 1MBps. I can resume the download now if I pause it.
But… Why? O_O
Comments
The file is kneecapped so that you’ll download the adware/spyware they advertise.
It’s kind of like a pseudo-torrent. Instead of downloading the entire file byte by byte 1, 2, 3, 4, 5, 6 etc., it downloads it in chunks at the same time over separate connections, so you’ll be downloading 1-5 while also downloading, 6-10, 11-15, 16-20, and so on.
Or… think of it like filling a bucket with 5 or 6 (or 10, or 100 idk) hoses instead of 1. The bucket is your PC and the water is whatever you’re downloading.
Depending on how the file is hosted on the server, a program may be able to request to start downloading it from any point in the file. This isn’t true for all websites, so it won’t always work.
But for files that fall into this category, a program can ask to start downloading the first half of the file and second half of the file in parallel, rather than just downloading the file from start to finish. Or it may start downloading four segments at once. Or more. Having multiple parallel connections is generally faster than just one.
This ability to start from any point also allows you to resume an interrupted download—if you get interrupted 37% of the way through the file, no problem. Just ask the server “can you start sending me the data from 37%?”
Default downloading just grabs the file from the start to finish. Why don’t browsers have these advanced features by default? Honestly I don’t know, maybe because as mentioned not all sites support this type of downloading, maybe because they decided it’s just not the browser’s job. Maybe there are some browsers that support these features.
Download managers may open more than one connection if the server allows resuming from anywhere in the file. For example, it may download 0 to 49 % and 50 to 100 % in parallel.
This works around limits of TCP flow control and throttling from the server. The maximum speed per connection is influenced by the latency or distance between the client and the server. The server will only dispatch a certain amount of data before receiving a confirmation of reception, which is delayed by the distance. The speed ramps up slowly, once per round trip if there was no packet loss. With a great distance, there may not be enough time for it to rise.
A download manager may also set a bigger receive window, which is the amount the client is willing to accept before replying. This may increase the speed of each connection, if the server doesn’t limit it to a smaller amount.
Whether a download may be resumed is chosen by the server. Sometimes they don’t allow this to avoid getting hammered by download managers.