要实现 DHT 节点,您可能需要阅读 DHT 规范:
http://www.bittorrent.org/beps/bep_0005.html
它描述了消息格式。如果您不熟悉底层 DHT,您可能还需要阅读 kademlia 论文:
Kademlia:基于 XOR 度量的点对点信息系统
一旦你在 DHT 上启动并运行,并且你开始看到信息散列飞过,你需要实现一个 bittorrent 客户端。或者至少是为了建立对等连接并讨论bittorrent协议的一个子集,这在此处进行了描述:
http://www.bittorrent.org/beps/bep_0003.html
您通常只需要能够建立 TCP 连接并握手,就好像您什么都没有。然后,要下载元数据(或 .torrent 文件),您需要支持ut_metadata
位于通用扩展协议之上的扩展,如下所述:
http://www.bittorrent.org/beps/bep_0010.html
ut_metadata 扩展在这里描述:
http://www.bittorrent.org/beps/bep_0009.html
那些你有你看到的散列的元数据,你应该基本上被设置。然后,只需从 torrent 文件中提取和索引信息,例如名称、文件名、文件大小等(实际上,您最终会得到 torrent 文件的 info-dict,但这是重要的部分)。
鉴于这是一项相当多的工作,您可能希望考虑使用已经执行此操作的库,并以某种方式将它们拉入 php.ini 中。例如,您可能想看看libtorrent。