我的意思是,如果有人从我这里下载文件,这是否意味着我是主机并且他正在连接到我?
或者我正在和他联系?
不管怎样,我们中的一个都需要一个开放的端口,不是吗?
我的路由器上没有任何开放的端口路由到我的电脑,那么我如何接受连接呢?
答案1
如果您的路由器支持 UPnP,则您使用的 p2p 应用程序可能会在路由器上打开端口,而无需您手动配置打开端口。
否则,您的应用程序可能正在使用一种称为 NAT 遍历的过程,这种过程在 p2p 应用程序和远程桌面应用程序(如 GoToMyPC 或 Hamachi)中很常见。该技术旨在通过网络地址转换工作,网络地址转换被视为防火墙,但也是一种让专用网络在互联网上共享单个 IP 地址(您的路由器使用的 IP 地址)的手段。
答案2
在 BitTorrent 等协议中,只要连接两端中的一端打开了端口转发,开放端将始终充当主机。如果两端都开放,则任一端都可以是“主机”。如果两端都关闭,则需要具有开放连接的第三方来协商连接,这就是 Skype 等程序的做法(第三方称为超级节点)
这是一篇很好的博客文章解释 skype 如何使用超级节点以及如何使用它来绕过防火墙。
答案3
我会将开放端口与电话号码进行比较。
想象一下,您可以拨打电话,但没有电话号码可以接听电话。
对于双方通话(或一方一直通话)来说,谁拨打电话并不重要。重要的是至少其中一方有电话号码,另一方只需拨打他的电话即可。
如果双方都没有电话号码,某些系统会使用超级节点,超级节点可以接收来自双方的两通电话,并将两通电话连接在一起。如果双方都没有电话号码,这是唯一的通话方式。问题是,通话会受到这个超级节点朋友的电话线路质量的限制。
我希望这个类比能让我们更容易理解这三种可能的情况。