2012-08-30 22 views
3

我一直在阅读www,但不能得到P2P的最重要的基础知识。P2P的最重要的基础知识

图是这样的:

[peer1]<-->[dsl-router1]<-->[central server]<-->[dsl-router2]<-->[peer2] 

我正在开发的中央服务器上一个聊天软件。聊天消息到目前为止通过中央服务器传输,但是,我需要制作P2P文件共享功能,因为服务器的带宽(有线带宽,而不是传输限制)只能用于传输聊天消息。

问题是,我的中央服务器上的软件知道router1和router2的IP和端口,但不是peer1和peer2,因为这些对等设备在路由器后面,并且没有IP地址。

如何实际上将一些数据从peer1转移到peer2,反之亦然,而不通过中央服务器传递数据?

(和最坏的情况是,有对等体和DSL路由器之间的无线路由器)

+1

我*假设*该路由器的用户侧网络网关,对不对?或者他们是某种形式的匿名构造? –

+0

是的,这些路由器是由ISP提供的DSL路由器 – jondinham

+3

您可以使用UPnP或类似的客户端来打开从WAN到LAN的端口。它在以前为我传输UDP数据。但这是一个非标准领域。 – ActiveTrayPrntrTagDataStrDrvr

回答

1

在某些情况下,由ISP提供的“路由器”可以在桥模式,该模式直接公开对等计算机运行在互联网上(电脑获得公共互联网地址)。如果至少有一方拥有这种配置(或者类似情况下,对等客户端不在其他设备后面),那么事情应该是非常直接的:只需将中央服务器的工作分配给具有此特权的任何人。

在另一种情况下,其中两个对等体只有一个本地地址(例如192.168.0.2)分配给他们的计算机,那么通过路由器将是相当困难的;除非路由器发起请求,否则路由器之后的客户端大部分是从外部无法访问的。那么,解决这个问题的一个办法就是端口转发。通过执行端口转发,无论是通过明确编写的规则还是通过UPnP,对等计算机上的一些端口都暴露于公共互联网,就像第一种情况那样,而不是只有一些端口暴露了整个计算机。

如果你没有这些,那么没有简单的方法避免通过中央服务器发送。尽管你可能会找到其他能够转移他人的同伴。