我试图了解 BitTorrent 内部的过程并实现类似的东西。但是,我仍然不知道选件和转移的过程。每个对等点如何知道哪个对等点拥有哪个文件块?每个对等点是否需要一直询问对方是否有请求的片段?
我也听说过“稀有片优先”的方法,它试图在之前得到更稀有的片断。如何在不浪费网络流量的情况下获取这些信息?
谢谢你。
我试图了解 BitTorrent 内部的过程并实现类似的东西。但是,我仍然不知道选件和转移的过程。每个对等点如何知道哪个对等点拥有哪个文件块?每个对等点是否需要一直询问对方是否有请求的片段?
我也听说过“稀有片优先”的方法,它试图在之前得到更稀有的片断。如何在不浪费网络流量的情况下获取这些信息?
谢谢你。
这是通过两条消息完成的:bitfield和have。
在两个对等方执行握手之后,他们可以选择发送bitfield作为他们的第一条消息,这些消息紧凑地表示他们所有已完成的块。
一旦一个节点成功下载并验证了一个区块,他们就会向所有连接的节点广播一条has消息,让他们知道他们刚刚完成了哪个区块。