点对点网络是如何在端口层面上工作的?

6
所以我一直在研究套接字和其他相关的编程内容,主要是c++。我已经学习了(还没有执行,因为我懒)非阻塞IO,一旦我开始实际开发项目,我可能会为服务器设计一个非常好的整体结构来容纳很多客户端。
对于服务器而言,我必须进行端口转发是理所当然的。而客户端则不需要。但这让我想起了什么。 总的来说,种子客户端似乎不需要路由器端口转发,而且它们是点对点的。那么这是怎么回事呢? 在客户端周围看到多次的是“端口转发”。但这是什么样的端口转发?
我是漏掉了什么非常明显的东西还是问错了问题?我似乎找不到任何答案。
那么点对点的端口转发是如何工作的呢?如果这是正确的问题的话。
感谢您的时间!

查找TCP/UDP打洞技术。这是一种用于在一个或多个客户端未开放必要端口时建立对等连接的方法之一。 - pay
大多数种子客户端支持使用UPNP(和IGDP)以便为NAT穿透向路由器添加端口转发规则。 - Hasturkun
1个回答

4

好的,所以pay提到了打洞技术,这似乎是NAT穿越的一种技术,它基本上“绕过”或“通过”NAT(因此不需要端口转发)。

我现在了解了一些。基本上NAT使得流量路由到网络内部特定系统中开放端口的位置。由于像打洞这样的技术不会经过该系统,因此没有真正的方法可以知道来自内部网络哪个系统发送和接收到的流量。你只能像使用密钥和加密流量一样做一些事情,以便只有拥有该密钥的特定计算机才能解密它(类似于CA)。或者,如果不是敏感信息,您也可以在每个不同的系统中使用随机端口连接。一个相当大的问题是,NAT可能在路由器上有所不同,因此您可能需要使用不同的技术,并且兼容性不能保证。

好的,所以Hasturkun提到了UPNP。我也稍微读了一下,基本上它是一种协议,允许您的应用程序/程序与路由器通信并为自己设置特定的NAT规则,因此它就像它基本上为您进行了端口转发。这也意味着与穿越技术不同,它直接将流量驱动到所需的系统。一个缺点是,在你的路由器上可能不是默认启用的,因此你无法使用它。从我读过的来看,它相当“全球化”,也不同于穿越。

总而言之,我认为你应该同时使用两种技术作为保险策略,尽管在我的想法中这将是一项艰巨的工作,但无论如何,懒惰都没有出路。

我希望这对某些人有所帮助,就像它对我有所帮助一样,祝你有美好的一天:D


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接