Networking 在流量很大的大型视频游戏中,端口转发是如何工作的? 请考虑以下情况,

Networking 在流量很大的大型视频游戏中,端口转发是如何工作的? 请考虑以下情况,,networking,portforwarding,dmz,Networking,Portforwarding,Dmz,假设有两个室友安装了相同的游戏。为了回答这个问题,让我们假设游戏是DoTA2 两个室友都连接到同一个路由器,因此基本上拥有相同的公共IP。(路由器的IP) 现在,让我们假设外部的其他人,即路由器外部的公共互联网想要连接到室友1,那么路由器将在NAT规则中有一个简单的端口转发,如下所示: 如果请求来自外部端口ABC(游戏所有端口),请将其转发给roommate1 现在,如果我们假设roommate2在游戏中也在线,并且另一台公共计算机想要连接到他们,那么端口转发将如何工作 路由器如何知道将连接请求

假设有两个室友安装了相同的游戏。为了回答这个问题,让我们假设游戏是DoTA2

两个室友都连接到同一个路由器,因此基本上拥有相同的公共IP。(路由器的IP)

现在,让我们假设外部的其他人,即路由器外部的公共互联网想要连接到室友1,那么路由器将在NAT规则中有一个简单的端口转发,如下所示:

如果请求来自外部端口ABC(游戏所有端口),请将其转发给roommate1

现在,如果我们假设roommate2在游戏中也在线,并且另一台公共计算机想要连接到他们,那么端口转发将如何工作

路由器如何知道将连接请求转发到哪台专用计算机(室友)

请不要给出像DoTA分配了多个端口或任何特定于游戏的答案这样的答案,DoTA的使用只是一个例子

您甚至可以考虑在端口号80上有两台私有计算机运行简单HTTP服务器的场景,外部计算机如何知道要连接哪一个?


我在谷歌上搜索过DMZ和port forwarding,但不清楚解决方案。

告诉我们可以给出什么样的答案有点不礼貌,特别是当你自己问了一个离题的问题时

为了回答您的问题,端口转发是基于私有IP和端口的组合完成的;roomate1和roommate2有不同的专用IP地址,但使用相同的端口,在您的路由器上(假设它是通用的),在任何时候都只能使用一个转发规则


一种可能的解决方案是在专用网络端的路由器之后使用代理服务器,如HAProxy,并使用基于TCP关联的策略将数据包转发给室友。

简而言之,不可能使用NO。您只能从1个公共地址NAT到X端口上的内部IP

从长远来看,公司是这样做的,但他们有2或3个公共地址,然后您可以映射到不同的内部IP

公共IP 1>内部IP:端口
公共IP 2>内部IP:端口


您可以从一个外部IP映射到多个内部IP地址,但由于您使用的是相同的服务(游戏),它们可能使用相同的端口。

如果我告诉您我不想要的答案,这没有什么不礼貌的。总之,基本上你的意思是,我们无法通过一个NAT规则来管理它,但是我们必须有一个不同的HAProxy或Ingress或负载平衡器来管理它?我想我可以想象如何通过HAProxy解决这个问题。我想通过使用CA名称和HAProxy中的另一层映射,我们可以使用内部私有IP和相同的端口。