Several components come into play when transferring files across the Internet. These components include routers, firewalls, wifi-channels, network adapters attached to the device, and finally, upload/download speeds provided by your Internet Service Provider. Additionally, the number of simultaneous users on the system and the configuration of network routers also play an essential role.
Let's talk about these components separately.
The goal is troubleshooting a slow network transfer is to determine where the bottleneck is. Imagine the flow of network traffic through several pipes. Each element in the pipe represents a different network component, as shown in the image below.
In the above example, three users (UserA, UserB, and UserC) attempt to download the same file from a source server. The smallest pipe dictates the actual network speed. In the above example, UserA experiences the fastest download speed, whereas UserB experiences the slowest.
UserA happens to be on the same network where the source file is located, and therefore, even the smallest pipe is very big, giving a lightning-fast experience.
UserB, on the other hand, connects to their local network using a 2.5GHz wifi, representing the small pipe. In this case, the wifi channel becomes the bottleneck reducing the overall transfer speed.
Network routers, particularly the ones on the higher end, tend to use features that can reduce overall network speed. One such feature is packet-level inspection. When turned on, the firewall will inspect every TCP/IP packet going through the device to ensure none have any malicious content. This type of packet-level inspection is very costly in network throughput and can significantly reduce the overall speed.
Additionally, some of the routers can be configured to use a feature called QoS, which tend to favor one preferred service over every other. When QoS is turned on, network speed for non-preferred services will reduce.