在Gnutella中,PUSH如何通过防火墙或NAT盒工作?

时间:2012-11-20 15:17:11

标签: p2p nat

我想了解更多有关Gniutella P2P协议如何工作的信息。我已经阅读了GnuFU和我能找到的最新协议规范(0.4),但我对PUSH如何通过防火墙或NAT盒进行了一些操作。

案例1:Alice通过NAT盒或防火墙连接到Internet。她看到Bob有一个她想要下载的文件。鲍勃没有防火墙。因此Alice的客户端打开与Bob的机器的TCP连接并下载该文件。没问题。

案例2:与#1相同,但Bob想要从Alice获取文件。 Bob的客户端无法打开与Alice计算机的TCP连接,因为它位于防火墙后面。根据我的阅读,Bob的客户端需要向Alice的机器发送PUSH命令。 Alice的机器接收PUSH,打开与Bob机器的TCP连接,并将文件发送给Bob。我有正确的吗?

我的问题: 1)PUSH数据包如何从Bob转到Alice? Bob无法直接发送它,因为他无法打开与Alice的TCP连接,因为她在防火墙后面。它会被缓存到某个地方吗?如果是这样,爱丽丝会怎么知道找到它?

2)这只适用于Alice的NAT盒支持uPNP和/或端口转发吗?如果是这样,如果Alice和Carol在同一个NAT盒子后面怎么办 - 路由器如何知道Bob试图将PUSH发送到哪台电脑?

3)假设Alice试图将文件推送到Bob的机器上,但Bob没有请求该文件。 Bob的机器上的服务器是否收到它?或者它拒绝传入的文件?

谢谢, 麦克

0 个答案:

没有答案