我试图了解如何正确实现torrent协议的p2p通信。规格在此帐户中不明确。
如果我作为客户端连接到对等体,然后发送握手,建立通信,那么我可以向该对等体发送消息并接收响应。从客户的角度来看,这是可以理解的。我不明白的是,如果对等方想要向我发送某些请求,在这种情况下,对等方处于客户端角色并且我就此而言是对等的,它是否会使用相同的打开连接我发起了还是会尝试建立新连接?
这引出了另一个问题。建立与同一对等体的多个连接是否可能或者是否正常?
答案 0 :(得分:1)
在这种情况下,对等方处于客户端角色
就线路协议而言,没有特殊的客户角色'与服务器角色不同。两个 peer 都是相同的,并且执行并支持同一组操作 - 提供或采取一些协议扩展。
因此是点对点。
bittorrent上下文中的术语 client 仅表示网络中的任何参与者。在规范中,它经常与实现和 peer 互换使用。
TCP连接是双向的。在bittorrent中,每个流都包含无穷无尽的消息流,这些消息与另一个方向不同步。即没有请求 - 响应周期。
与同一个对等方建立多个连接是否可能或是否正常?
可能?是的,假设<source IP, source port, destination IP, destination port>
元组是不同的,这基本上是TCP要求的。
但是其他实现可能会丢失重复的连接。