DHT 协议
摘自 BitTorrentDev
BitTorrent 使用一个"分布式sloppy哈希表" (DHT)来为"trackerless"流存储peer联系信息。有效地使每个peer都成了一个tracker,这个协议基于Kademila网络并且在UDP上实现。
请注意本文档中使用的术语,以免混乱。"peer"是在一个TCP端口上监听的一个客户端/服务器,它实现了BitTorrent协议。"节点"是在一个 UDP端口上监听的一个客户端/服务器,它实现了分布式哈希表协议。DHT由节点组成,它存储了peer的位置。BitTorrent客户端包含一个 DHT节点,这个节点是用来联系DHT中其他节点以得到peer的位置,从而通过BitTorrent协议下载。
内容
· 1 概述
· 2 路由表
· 3 BitTorrent协议扩展
· 4 Torrent文件扩展
· 5 KRPC协议
o 5.1 Contact Encoding
o 5.2 Queries
o 5.3 Responses
o 5.4 Errors
§ 5.4.1错误包例子
· 6 DHT请求
o 6.1 ping
§ 6.1.1包例子
o 6.2 find_node
§ 6.2.1包例子
o 6.3 get_peers
§ 6.3.1包例子
o 6.4 announce_peer
§ 6.4.1包例子
· 7脚注
概述
每个节点有一个全局唯一的标识符,称为"节点ID"。节点ID是从一个160位空间随机选择的,
摘自 BitTorrentDev
BitTorrent 使用一个"分布式sloppy哈希表" (DHT)来为"trackerless"流存储peer联系信息。有效地使每个peer都成了一个tracker,这个协议基于Kademila网络并且在UDP上实现。
请注意本文档中使用的术语,以免混乱。"peer"是在一个TCP端口上监听的一个客户端/服务器,它实现了BitTorrent协议。"节点"是在一个 UDP端口上监听的一个客户端/服务器,它实现了分布式哈希表协议。DHT由节点组成,它存储了peer的位置。BitTorrent客户端包含一个 DHT节点,这个节点是用来联系DHT中其他节点以得到peer的位置,从而通过BitTorrent协议下载。
内容
· 1 概述
· 2 路由表
· 3 BitTorrent协议扩展
· 4 Torrent文件扩展
· 5 KRPC协议
o 5.1 Contact Encoding
o 5.2 Queries
o 5.3 Responses
o 5.4 Errors
§ 5.4.1错误包例子
· 6 DHT请求
o 6.1 ping
§ 6.1.1包例子
o 6.2 find_node
§ 6.2.1包例子
o 6.3 get_peers
§ 6.3.1包例子
o 6.4 announce_peer
§ 6.4.1包例子
· 7脚注
概述
每个节点有一个全局唯一的标识符,称为"节点ID"。节点ID是从一个160位空间随机选择的,