You could use multicasting, but there are two problems with that.
First is that most ISPs block multicast traffic (you send a byte, multiple recipients receive that same byte). Because the entire path between you (the uploader) and them (the downloaders) needs to be multicast enabled, you undoubtly run into a few points (ISPs) along that path that don't have multicasting enabled.
The second problem is that multicasting is UDP based. It stands for User Datagram Protocol, but you could freely exchange that with "Unreliable Datagram Protocol" because UDP packets are not guaranteed to arrive at recipient. So a few recipient could end up swiss cheese - a file with lots of missing bytes. You could correct that by re-requesting a certain part of the file, but the cycle can continue over and over - thus eliminating what you were supposed to gain (speed).
With the advent of HUGE, some of these obstacles could be eliminated. If User 1 is downloading file XYZ and User 2 is requesting the same file, through HUGE you could tell User 2 to ask User 1 (who should already have portions of that file at that point). However, this would mean that User 1 must be able to upload a file it is currently downloading AND is sharing files... |