我想编写自己的小型 torrent 客户端,类似于 Utorrent。但是我不确定如何开始与不同的种子建立连接。一旦我有一个包含所有数据的 torrent 文件,我该如何解码和解释它?
建立与跟踪器的连接的协议是什么?假设我的知识和术语正确,一旦我连接到 torrent 文件中找到的跟踪器,我就会收到一份包含种子 IP 和端口的列表。然后我就可以连接并开始从种子器下载文件片段。
我还知道 Utorrent 列出了当前种子 IP,我认为也列出了它们的端口。一旦我知道了种子 IP 和端口,是否可以手动建立连接并开始下载文件片段?或者是否有握手或安全层可以阻止这种情况发生?
答案1
Bittorrent协议详解这里。您还可以研究开源 Bittorrent 应用程序(例如 Transmission)的源代码。
与追踪器建立连接的协议是什么?
HTTP。
一旦我知道了种子 IP 和端口,是否可以手动建立连接并开始下载文件片段?或者是否有握手或安全层可以阻止这种情况发生?
如果对方没有因为你小气或不可靠而拒绝你。可能还有更多原因,我已经很久没有读过完整的规范了。读一下规范。
至于访问级别的安全性,除了阻塞机制之外没有其他措施,这实际上不是一种安全措施,而是一种公平执行措施。我不太清楚加密是如何工作的,但它只是为了保护传输,而不是为了识别对等方。至于确保对等方给出的片段是 torrent 的一部分,这就是 SHA-1 哈希的作用所在。