TCP / UDP打孔和混合P2P +客户/服务器架构

时间:2012-10-17 19:01:35

标签: networking tcp udp p2p hole-punching

我有一个混合架构,其中A是尝试从B请求内容的客户端,B是可能在NAT后面的服务器(尽管不一定)。 S是一个服务器,用作A和B之间以下列方式使用打孔的过程:

联系人S并说我希望从B.获得AB的最后已知IP地址和端口,并且A开始尝试联系B.同时,S给出BA的IP地址和端口,B开始尝试联系A.

S NOT 充当中继服务器;在相互连接之后,所有通信都将在A和B之间的直接连接中进行。如果它们无法直接连接,则连接将失败。我有UDP和TCP这个问题。

我的问题是,保持S与B的IP地址和端口保持同步的最有效方法是什么,这样任何数量的As都可以随时连接到B.我也希望解决方案能够处理这样一种情况:如果B背后的NAT与端口混淆(例如将它们递增1),我将能够“猜测”实际端口是什么是

我想到的解决方案(但我并不完全满意):

通过每隔X秒从B向S发送请求,用B的IP地址和端口更新S.我的问题是,如果X太高,S将没有B的正确信息,如果它太低,它将对B和S施加开销。我怀疑这最终将成为最终答案,并且诀窍是为X找到合适的值。

0 个答案:

没有答案