0

I think this is a simple question, but I could not find a clear explanation for this. When I download a file from a browser, torrent, download a game on steam, or just transfer files from disk to disk, the speed gradually increases, reaches the limit, and then gradually decreases towards the end.

These are just packets, why at the very first moment in time they cannot be sent at the maximum speed of the channel bandwidth.

1
  • 1
    why speed gradually increases and why TCP can't be sent at the maximum speed of channel bandwidth - TCP congestion control. why it gradually decreases towards the end - this is actually strange. Answer is probably the same, due to tail losses. The topic is really broad to put it in one answer. You could browse TCP questions here - there is probably a more or less simple explanation somewhere.
    – Effie
    Commented Dec 27, 2022 at 12:24

1 Answer 1

2

Most download applications use TCP as transport-layer protocol. TCP uses a congestion algorithm that detects the available bandwidth and cooperatively shapes the traffic throughput accordingly.

There are quite a few variants for the algorithm around - an overview: https://en.wikipedia.org/wiki/TCP_congestion_control

Why detect bandwidth and not send full speed you ask? Well, imagine a server with a 10 Gbit/s uplink. You start downloading and the server sends at 10 Gbit each second, regardless of what you can accept - doesn't make sense, does it?

Theoretically, you could send your local link speed along with the request to make the server send at that speed. But then again, the path bandwidth isn't only defined by the links at its end but by the whole path, ie. by its slowest hop. Your Internet uplink could be just 50 Mbit/s and there could be concurrent traffic eating into that. Potentially, any hop on the way could be limiting the available bandwidth.

Moreover, network load changes all the time and the rate you got over the last minute might not be upholdable for the entire transfer (or vice versa). That's why TCP monitors segment loss permanently and adjusts the amount of requested data all the time.

As to gradual decrease at the end: you're not providing any details. I could imagine you're using a download manager that creates multiple connections for the bulk of data. Nearing the end of the transmission, the connections are retired one by one and the ramping up within each connection happens slower than the retirement.

3
  • Thanks for the clarification, but explain - when transferring data between disks within the same device, why is the same effect observed there? in the same place as far as I understand other protocols? Or do all protocols have a similar bandwidth control system?
    – RoyalGoose
    Commented Dec 27, 2022 at 14:26
  • Within the same device, the bandwidth is potentially infinite and TCP (if even used) would crank it really up. Disk-to-disk copies via DOS have no such an effect in my experience, but hosts and their hardware are off topic here.
    – Zac67
    Commented Dec 27, 2022 at 15:32
  • ... and then, don't forget, that built-in monitors to show thoughput (as in Windows' own task manager or performance monitor), or the outputs of show interface ... or show interface summary on a Cisco device, may show values averaged averaged over the last data collection interval(s), which may further flatten the curves. Commented Dec 27, 2022 at 20:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.