2015-07-22 32 views
1

我想了解如何正确地实现洪流协议的P2P通信。规范尚不明确在这个帐户。如何在torrent协议中使用对等连接?

如果我作为客户端连接到对等端,然后发送握手,建立通信,然后我可以发送消息到该对等端并接收响应。从客户的角度来看这是完全可以理解的。我不明白的是,如果对方想要向我发送某些请求,在这种情况下,对等方处于客户端角色,并且我是一个同事,它是否会使用我启动的同一个打开的连接或它会尝试建立一个新的连接?

这会导致另一个问题。建立到同一伙伴的多个连接是否可行或是否正常?

回答

1

在这种情况下对端中的客户端的角色

至于导线协议变为没有特殊的“客户端角色”从服务器角色不同。两个对等体是相等的并且执行和支持相同的一组操作 - 给予或采取一些协议扩展。

因此是点对点的。

术语客户端在bittorrent的上下文中仅仅意味着网络中的任何参与者。在规格中,它经常与执行对等交替使用。

TCP连接是双向的。在bittorrent中,每个数据流由一系列与另一个方向不同步的消息组成。即没有请求 - 响应周期。

是否有可能还是正常的建立到同一个多个连接?

可能吗?是的,假设<source IP, source port, destination IP, destination port>元组是不同的,这基本上是TCP要求的。

但是其他实现可能会丢弃重复的连接。

+0

还有一件事不清楚。它是每个洪流一个连接吗?我猜想TCP连接完成后,只有一次握手才会发生。如果我想连接到不同的洪流相同的同行?我应该启动另一个连接还是应该在同一个连接上发送另一个握手? –

+0

不,规格说明很明确。我认为你的思维过程会让你的理解变得越来越糟糕,它始于基于你想要做什么的假设,而不是试图看看协议实际做了什么。 – the8472

+0

我还是没有完全明白。握手消息具有info_hash,握手应该发送第一个。因此,连接绑定到特定的info_hash。现在,我想下载另一个洪流,我知道这个特定的同伴有它。要做到这一点,我必须与新的info_hash建立另一个连接到这个peer?但在这种情况下,它将是第二次连接到对等体,因此您的答案可能会被丢弃,或者由于与不同的info_hash握手而被视为不重复? –

相关问题