If I have a torrent w/o any trackers in it, and I just started a bittorent client so I have no peers yet...how do I know who to first connect with in the DHT? It seems like I would have to know at least ONE node in the DHT to get started....
8 Answers
The mainline DHT bootstrap nodes are router.utorrent.com
and a CNAME to it, router.bittorrent.com
. Port 6881
.

- 112,946
- 110
- 377
- 526

- 124,830
- 17
- 198
- 235
-
12Thanks! This might be the only place on the web where the full addrs are given in plain text. – Matt Joiner Mar 09 '12 at 14:27
-
2If you look at the DNS those resolve to the same location with router.bittorent.com being a CNAME to router.utorrent.com. They are the same node. – anthonyryan1 Oct 02 '13 at 14:50
When a BitTorrent client connects to DHT, there is an initial place that it goes to find peers. With the original BitTorrent client, there was a url to bitorrent.com that would help get things started. I tried looking up the reference but I couldn't find it. Once you've established connections with other clients, then you can do an announce
on the DHT network to find peers for the torrent you're looking for.
Here's a link to the BitTorrent specs that discuss DHT.
A trackerless torrent dictionary does not have an "announce" key. Instead, a trackerless torrent has a "nodes" key. This key should be set to the K closest nodes in the torrent generating client's routing table. Alternatively, the key could be set to a known good node such as one operated by the person generating the torrent. Please do not automatically add "router.bittorrent.com" to torrent files or automatically add this node to clients routing tables.

- 16,203
- 9
- 45
- 62
-
4You `announce` on the DHT network? I thought you did a `get_peers()` or even the abstract `get()` to find peers? – gsk Aug 03 '12 at 03:04
the graph at the bottom of this DHT monitoring project site shows
- dht.transmissionbt.com
- router.utorrent.com
- router.bittorrent.com
as bootstrapping peers

- 455
- 5
- 7
-
3BitTorrent has published the source code so now you can run your own DHT bootstrap machine: https://github.com/bittorrent/bootstrap-dht – Encombe Nov 08 '14 at 15:42
-
2@stk that link is broken (first miss-configured ssl, then page missing). – ctrl-alt-delor Aug 24 '19 at 12:31
-
@ctrl-alt-delor well, this answer is more than _7 years_ old, it happens... anyway, in cases like this, try digging it up at the Wayback Machine: https://web.archive.org/web/20120508202413/https://dsn.tm.uni-karlsruhe.de/english/2936.php – stk Aug 26 '19 at 18:17
-
That is why links are bad. (links are also good, but in this case they can be bad), it can be good to add an image or a quote as well as a link. – ctrl-alt-delor Aug 26 '19 at 18:28
-
1Uhm, no. Links _by themselves_ are bad. You have to put the relevant information in the answer itself, which I clearly did. Those bullets _are the quote_. The link is just a reference to the source. – stk Aug 27 '19 at 19:55
In BiTTorrent, you have three main options:
- Torrent File: some torrent files can embed
nodes
for you to link into the DHT with (in fact, it's recommended when making a torrent file) - Hardcoding: Some torrent clients hard code a few bootstrap nodes (like the ones mentioned by stk). These are usually run by companies and organizations with long-running servers.
- PEX / Peer Conversations: You can usually ask for DHT nodes from the people you are downloading other torrents from (if your clients understand eachothers language. ie some versions are incompatible).

- 558
- 5
- 12
Transmission
uses a hardcoded bootstrap node for dht if there is no other way to get peers:
bootstrap_from_name( "dht.transmissionbt.com", 6881, bootstrap_af(session) );
I guess each torrent client uses their own bootstrap node.

- 7,160
- 7
- 35
- 40
For the record, Deluge also uses hardcoded boostrap nodes:
dht_bootstraps = set(
lt_bootstraps.split(',')
+ [
'router.bittorrent.com:6881',
'router.utorrent.com:6881',
'router.bitcomet.com:6881',
'dht.transmissionbt.com:6881',
'dht.aelitis.com:6881',
]
)

- 12,698
- 8
- 66
- 57
A client can learn about other DHT-capable peers through it's interactions with them. A peer's support for DHT is advertised in it's Handshake. Once a client discovers at least one good, well-connected DHT peer, it can navigate the DHT to find more and closer DHT peers. It will remember these peers, called nodes in DHT-speak, between restarts of the software and maintain/update the list continuously while it is running. In the worse case where a client knows of no good DHT-capable peers, it will require you to download a tracker-based torrent so it can hopefully contact a few good DHT-capable peers it learns about through the tracker.
Update: For it's initial list of DHT peers, as @Seppo points out, a torrent client can use one or more hard-coded DNS names to find the addresses for well-known peers, and it may also include a hard-coded list of peers as a final fallback as well. One limitation of DNS, however, it no port information is provided so a default port of 6881 is generally assumed whereas other means support peers operating on different ports.

- 1,289
- 13
- 26
Here are the primary nodes I've come across.
dht.transmissionbt.com 6881
router.bittorrent.com 6881
router.bitcomet.com 6881
dht.aelitis.com 6881
bootstrap.jami.net 4222

- 1,248
- 1
- 16
- 34