Several independent torrent clients, most notably µTorrent and Azureus, have created “peer exchange” protocols that allow for clientless torrent downloads. By means of the now-standard DHT trackerless peer-exchange format, these clients (and others) communicate with one-another and ask for info about new peers to download from.
Long story short, they let you download torrents with dead/no trackers, and without communicating with a central server. Everyone knows the importance of trackers of course, they provide torrent clients a list of known peers to download from – leechers and seeders alike, as well as track the status of a torrent at any given time. The problem is, they disappear mighty fast.
µTorrent also has another trackerless implementation called “PeerExchange” that does just about the same thing. But why stick to peers? Bittorrent is a centralized protocol. Attempting to convert the bittorrent protocol into a decentralized network isn’t going about things the right way… So here’s an idea: instead of just exchanging peers, why not exchange trackers too?
Say Client A is using µTorrent and is downloading File 1, and has one tracker, and currently has a bunch of peers in its list, one of which is Client B. Client B, also using µTorrent, is connected to a bunch of other peers and two trackers. Using DHT or PeerExchange, Client A can get a partial list of peers from Client B to connect to. Using certain algorithms, Client A communicates with each of these peers in turn and gets a mostly-complete list of peers to download from – at least, that’s the way it’s supposed to work.
But truth be told, DHT/PeerExchange aren’t that great. A torrent (with DHT enabled) without trackers but thousands of peers won’t download anywhere near as fast as a torrent with a tracker that has the same amount of clients registered with it (or even less). So why not exchange tracker lists?
In the example above, when Client A communicates with Client B, it’ll request a list of trackers, not peers. Client B, if it understands the request, will return the tracker(s) it’s using, and Client A will add them to its list. Rinse & Repeat.
This results in smaller overhead, faster downloads, and more static conditions. Peer IP addresses change constantly, trackers don’t. As trackers expire and new ones are introduced, Client A will always have a up-to-date list, and it’ll share it alike. Trading peers is a decentralized way of doing things and has its own advantages, but so long as bittorrent relies on trackers for the original torrent, it’s still a centralized network anyhow.
Just an idea – but one that we’d definitely be interested in seeing. Especially for torrents in the gigabytes, it can take days or weeks to complete a download (especially on lower-end DSL). Having a static tracker instead of dynamic peers is a much more reliable solution.
I think you are a bit confused. While peer exchange can be done via DHT, in some (most?) clients, it is done with other peers via normal means (usually bittorrent protocol extension). DHT for bittorrent is actually giving you more than than your idea, since it allows .torrent delivery with no trackers.
From http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients :
DHT permits use of trackerless torrents (with supporting clients) to resume normal torrents when their tracker is down.
I thought DHT was an add-on, but I guess its now a part of the bittorrent protocol. But at any rate, that’s neither here nor there. The whole point is, we need trackers, not peers. DHT allows for trackerless data exchange between two or more peers – a decentralized network.
But the whole point is, trackerless torrents are a LOT slower than those with trackers. So long as data is being exchanged between peers, why not exchange tracker info too?
Also thought I’d add, private communities disable DHT and peer exchange so they can control who downloads their files. So there are reasons to not use these.
i was 25% done on a demonoid torrent when they disappeared, it kept going on dht for a while but then stopped. is there a way to resurrect this and other demonoid torrents that are still available on sites like mininova. mininova says there is one seed and one peer on another demonoid torrent but when i open it in azureus i get the tracker error and 0 seeds and 0 peers, is there something else that i can do? so if torrent 1 had 3 peers A B and C and C opens DHT torrent 2 with no tracker, then he’s only going to start downloading if A is connected to X and X is downloading torrent 2? is that how exchanging peers works? does DHT work across torrents? how can you connect to any peers if the tracker is down or dead?
DHT only works for torrents with the same hash.
If two torrents have the same hash, it means they have the same exact files and file names. The hash looks like this:
The only way you can exchange peers is with DHT or PeX (the new standard in µTorrent and Azureus) and it works regardless of whether trackers online or not – just so long as it’s not labeled as a “private” torrent (meaning DHT is disabled), the other peers are using a DHT- or PeX-compatible client, and their torrent has the same hash as yours.
Oh, also if you copy and paste the hash into http://isohunt.com/ you can find all copies of the torrent currently in action.