使用UDP的在线多人游戏是如何通过互联网在网络之间传递数据包的?据我所知,客户端必须启用路由器上的端口转发,才能使数据包到达他们的计算机。这是大型在线游戏(WoW,暗黑破坏神等)需要玩家做的吗?
例如,我最近创建了一个处理udp流量的服务器。不管发件人寄了什么,它都会回音。我把它部署到互联网上的一个服务器上。我只能在启用端口转发后才能将回波返回给发送方,但是如果同一本地网络上有两个发件人,则这将无法工作。
发布于 2021-08-08 05:10:12
简短回答: NAT连接跟踪
需要记住的一点是,IPv4互联网上绝大多数路由器都是NAT路由器。
大多数NAT实现都是智能跟踪的,当您将UDP从内部客户端发送到某个地方时,您将有一个目的地端口和一个源端口。如果通信量与反向端口一起进入,则该通信量将被路由回您的客户端,并允许在大多数防火墙中使用。
具有跟踪功能的NAT/防火墙检测这些数据包是否相关,并将它们转发回来。
基于server
在端口5000
UDP上注释的示例
server:5000
(源client:5001
)发送数据包client:5001
端口以及目的地server:5000
的数据包。NATip:NATport
NATip:NATport
源的server:5000
的响应。server:5000
目的地NATip:NATport
,它与发送出去的数据包相匹配(但源和目的地相反)client:5001
将其发送给server:5000
源ip+port和目标ip+port创建可以跟踪的组合。(还有更多的细节,但这是最基本的)
更多的阅读,但我应该在这方面找到更好的文档,而不仅仅是引用我所见过的轶事证据。
https://serverfault.com/questions/1073855
复制相似问题