所以我一直在研究套接字和东西,主要是c ++。我已经学会了(还没有执行因为我很懒)non-blocking IO,一旦我开始研究我的项目,我可能只有一个非常好的整体结构,服务器可以容纳很多客户端。
对于服务器,它始终是给定的,我必须向前移动。客户不需要。但这让我思考。 一般来说,Torrent客户端似乎不需要路由器端口转发,而且它们是对等的。那怎么办? 在客户端周围多次看到“Port Forwarding”。但那是什么样的端口转发呢?
我是否遗漏了一些在这里非常明显或只是提出错误问题的东西?我似乎无法找到任何答案。
那么端到端转发如何工作呢?如果这是正确的问题。
感谢您的时间!
答案 0 :(得分:2)
好的,所以pay提到了打孔,这似乎是NAT遍历的技术之一,它基本上是绕过"绕过"或"经历" NAT(以及端口转发)。
我现在读了一下这个。基本上NAT使得流量被路由到端口打开的网络内的特定系统。由于穿孔等技术不会通过这个系统,因此没有真正的方法来了解它来自内部网络内部的系统。人们可以做一些事情,比如使用密钥和加密流量,这样只有具有该密钥的网络中的某个计算机才能解密它(就像CA一样)。或者,如果它不是敏感信息,您也可以使用随机端口连接到每个不同的系统。一个相当大的问题是NAT可能在路由器之间有所不同,因此您可能必须使用不同的技术,并且不能保证兼容性。
好的,所以Hasturkun提到了UPNP。我也读了一个lil,基本上它是一个协议,允许你的应用程序/程序与路由器通信并为自己设置特定的NAT规则,所以它就像它基本上是端口转发为了你。它还意味着与遍历技术不同,它可以将流量直接驱动到所需的系统。一个缺点是它可能在您的路由器上默认不活动,因此您根本无法使用它。它是公平的"全球"从我所阅读的内容来看,也与遍历不同。
在IMO附近你应该同时使用两者作为保险单,在我看来它是很多工作的地狱,但无论如何,一如既往,懒惰无处可去。
我希望这可以帮助别人,因为它帮助了我,度过了愉快的一天:D