| Especially since, while you have direct control over what you send to other people, you have no control over what they send you. Assuming that your downloading job isn't so incredibly fast that it saturates your upstream bandwidth just with SYNs, then this is how it goes. You send off a request for some webpage, the remote webserver sends a response back -- and then that response sits in a router at your ISP, waiting to be sent to you behind about a second's worth of download material from your other connection (which was running for a long time before your webpage fetch, and achieved quite a large window size, which means that it loads up tons of data into the connection to achieve the most efficient transfer).
The only way to accomplish "fairness" on downstream here, is by packet mangling techniques that delay the outgoing ACKs on your big heavy download, giving the remote server the impression that you're not receiving as quickly, and eventually causing it to quit sending as quickly... but then you realize that it takes quite a bit of complicated packet inspection to tell the difference between a big, heavy download and a series of small request/response pairs, and that the whole process also makes your connection less efficient.
In other words, ask an easier question ;)
|