Sockets skype和所有其他p2p程序如何在不被阻止的情况下工作?

Sockets skype和所有其他p2p程序如何在不被阻止的情况下工作?,sockets,p2p,Sockets,P2p,我一直在尝试制作一个p2p类型的应用程序。我的想法是创建一个Web服务器类型的程序,监听某个套接字。但是,如果我在本地网络之外的任何地方尝试此操作,请求将永远无法通过侦听套接字。其他p2p软件如何解决这个问题?我使用的端口与skype和其他程序(8080)相同。有些应用程序使用UPnP。我认为Skype玩了很多小把戏,使其易于与防火墙一起使用。它甚至将使用端口80,因为这是大多数时间打开。我见过的大多数p2p应用程序都需要适当的防火墙/NAT配置。有些应用程序使用UPnP。我认为Skype玩了很

我一直在尝试制作一个p2p类型的应用程序。我的想法是创建一个Web服务器类型的程序,监听某个套接字。但是,如果我在本地网络之外的任何地方尝试此操作,请求将永远无法通过侦听套接字。其他p2p软件如何解决这个问题?我使用的端口与skype和其他程序(8080)相同。

有些应用程序使用UPnP。我认为Skype玩了很多小把戏,使其易于与防火墙一起使用。它甚至将使用端口80,因为这是大多数时间打开。我见过的大多数p2p应用程序都需要适当的防火墙/NAT配置。

有些应用程序使用UPnP。我认为Skype玩了很多小把戏,使其易于与防火墙一起使用。它甚至将使用端口80,因为这是大多数时间打开。我见过的大多数p2p应用程序都需要正确的防火墙/NAT配置。

有很多技巧可以解决NAT和防火墙的问题

如果双方都连接到外部中央服务器,则可以通过该服务器作为代理相互交换IP/端口。如果甲方随后尝试连接到乙方并被阻止,他们可以切换角色,乙方可以尝试连接到甲方。这本身将经历许多情况,除非双方都支持NAT/防火墙

有一些基于UDP和TCP的技术可以在NAT中穿孔,以允许正常情况下被阻塞的流量


一些路由器支持uPNP来动态配置端口转发规则。

有许多技巧可以绕过NAT和防火墙

如果双方都连接到外部中央服务器,则可以通过该服务器作为代理相互交换IP/端口。如果甲方随后尝试连接到乙方并被阻止,他们可以切换角色,乙方可以尝试连接到甲方。这本身将经历许多情况,除非双方都支持NAT/防火墙

有一些基于UDP和TCP的技术可以在NAT中穿孔,以允许正常情况下被阻塞的流量


有些路由器支持uPNP动态配置端口转发规则。

Skype如果无法连接到端口8080,则会退回使用端口80或4**(不记得了)

当我试图在Skype已经运行的情况下启动本地Apache实例时,我遇到了一个问题

Skype提供了更改其使用的端口的设置,但您必须在路由器/防火墙/任何设备上转发此端口


也许您可以为您的应用程序使用类似的方法?

如果无法连接到端口8080,Skype会退回使用端口80或4**(不记得了)

当我试图在Skype已经运行的情况下启动本地Apache实例时,我遇到了一个问题

Skype提供了更改其使用的端口的设置,但您必须在路由器/防火墙/任何设备上转发此端口


也许您可以在应用程序中使用类似的方法?

此链接详细介绍了“打孔”技术:

摘录:

3.2建立点对点会话

假设客户端“A”希望直接与客户端“B”建立UDP会话。打孔过程如下:

“A”最初不知道如何到达“B”,因此“A”请求“S”帮助与“B”建立UDP会话

“S”使用包含“B”的公用和专用终结点的消息答复“A”。同时,“S”使用其与“B”的UDP会话向“B”发送包含“a”的公共和私有端点的连接请求消息。一旦收到这些消息,“A”和“B”就知道彼此的公共和私有端点


当“A”从“s”接收到“B”的公共和私有端点时,“A”开始向这两个端点发送UDP数据包,然后“锁定”最先从“B”获取有效响应的端点。类似地,当“B”在转发的连接请求中接收到“A”的公共和私有端点时,“B”开始在“A”的每个已知端点向“A”发送UDP数据包,并锁定第一个有效的端点。这些消息的顺序和时间并不重要,只要它们是异步的。

此链接详细介绍了“打孔”技术:

摘录:

3.2建立点对点会话

假设客户端“A”希望直接与客户端“B”建立UDP会话。打孔过程如下:

“A”最初不知道如何到达“B”,因此“A”请求“S”帮助与“B”建立UDP会话

“S”使用包含“B”的公用和专用终结点的消息答复“A”。同时,“S”使用其与“B”的UDP会话向“B”发送包含“a”的公共和私有端点的连接请求消息。一旦收到这些消息,“A”和“B”就知道彼此的公共和私有端点


当“A”从“s”接收到“B”的公共和私有端点时,“A”开始向这两个端点发送UDP数据包,然后“锁定”最先从“B”获取有效响应的端点。类似地,当“B”在转发的连接请求中接收到“A”的公共和私有端点时,“B”开始在“A”的每个已知端点向“A”发送UDP数据包,并锁定第一个有效的端点。这些消息的顺序和时间并不重要,只要它们是异步的。

这很奇怪,因为即使在端口80上运行Web服务器,我也无法从代理服务器访问我的Web服务器。这很奇怪,因为即使在端口80上运行Web服务器,我也无法从代理服务器访问我的Web服务器