====== Differences ====== This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
development:dht_protocol:apis [2014/01/30 13:07] jpfox created |
development:dht_protocol:apis [2014/01/30 13:30] (current) jpfox |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== General notes ===== | ===== General notes ===== | ||
- | - Libtorrent’s DHT security extension is enforced, requiring the Node ID to be restricted by the external IP. | + | - [[http://www.libtorrent.org/dht_sec.html|Libtorrent’s DHT security extension]] is enforced, requiring the Node ID to be restricted by the external IP. |
- Default’s libtorrent’s parameters are used: search_branching (alpha) = 5, bucket_size (k) = 8 and agressive_lookup = true. | - Default’s libtorrent’s parameters are used: search_branching (alpha) = 5, bucket_size (k) = 8 and agressive_lookup = true. | ||
- | - Stored resources meant for persistence in DHT network (like profile, avatar etc) are refreshed every hour. Previous studies have shown (Paper: Profiling a million user dht) that, under some assumptions and configurations, long-term data persistence may be achieved by refreshing every couple of hours. | + | - Stored resources meant for persistence in DHT network (like profile, avatar etc) are refreshed every hour. Previous studies have shown ([[http://dl.acm.org/citation.cfm?id=1298325|Paper: Profiling a million user dht]]) that, under some assumptions and configurations, long-term data persistence may be achieved by refreshing every couple of hours. |
- Persisted resources are also saved to disk and restored when twister daemon restarts. | - Persisted resources are also saved to disk and restored when twister daemon restarts. | ||
Line 21: | Line 21: | ||
<code javascript> | <code javascript> | ||
- | query = {"t":"aa", "z":"q", "q":"findNode", "x": {"id":"abcdefghij0123456789", "target":"mnopqrstuvwxyz123456"}} | + | query = {"t":"aa", "z":"q", "q":"findNode", "x": { |
+ | "id":"abcdefghij0123456789", "target":"mnopqrstuvwxyz123456"}} | ||
response = {"t":"aa", "z":"r", "r": {"id":"0123456789abcdefghij", "nodes": "def456..."}} | response = {"t":"aa", "z":"r", "r": {"id":"0123456789abcdefghij", "nodes": "def456..."}} | ||
Line 31: | Line 32: | ||
<code javascript> | <code javascript> | ||
- | query = {"t":"aa", "z":"q", "q":"announce_peer", "x": {"id":"abcdefghij0123456789", "implied_port": 1, "info_hash":"mnopqrstuvwxyz123456", "port": 6881, "token": "aoeusnth"}} | + | query = {"t":"aa", "z":"q", "q":"announce_peer", "x": { |
+ | "id":"abcdefghij0123456789", "implied_port": 1, "info_hash":"mnopqrstuvwxyz123456", | ||
+ | "port": 6881, "token": "aoeusnth"}} | ||
response = {"t":"aa", "z":"r", "r": {"id":"mnopqrstuvwxyz123456"}} | response = {"t":"aa", "z":"r", "r": {"id":"mnopqrstuvwxyz123456"}} | ||
Line 46: | Line 49: | ||
"id":"abcdefghij0123456789", "sig_p":"34fdd3wdw", "sig_user":"nobody", "token": "aoeusnth", "p": { | "id":"abcdefghij0123456789", "sig_p":"34fdd3wdw", "sig_user":"nobody", "token": "aoeusnth", "p": { | ||
"v" : "arbitrary-value", "seq" : "10", "time" : "13131321321", height : "1000", "target": { | "v" : "arbitrary-value", "seq" : "10", "time" : "13131321321", height : "1000", "target": { | ||
- | "n":"name", "r":"resource", "t":"m" }}} | + | "n":"name", "r":"resource", "t":"m" }}}} |
- | } | + | |
response = {"t":"aa", "z":"r", "r": {"id":"mnopqrstuvwxyz123456"}} | response = {"t":"aa", "z":"r", "r": {"id":"mnopqrstuvwxyz123456"}} | ||
</code> | </code> | ||
+ | |||
+ | See [[development:dht_protocol:structures#general structure]] for content detail. | ||
Note: target_id is the hash of bencoded ''"target"'' field. | Note: target_id is the hash of bencoded ''"target"'' field. | ||
Line 65: | Line 69: | ||
{"p":"data2", "sig_p":"fg40958ejfdg", "sig_user":"twister" ] }} | {"p":"data2", "sig_p":"fg40958ejfdg", "sig_user":"twister" ] }} | ||
</code> | </code> | ||
+ | |||
+ | See [[development:dht_protocol:structures#general structure]] for content detail. | ||
Note: target_id is the hash of bencoded ''"target"'' field. | Note: target_id is the hash of bencoded ''"target"'' field. | ||