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