使用 UDP 的在线多人游戏如何通过 Internet 在网络之间传递数据包?据我了解,客户端必须在其路由器上启用端口转发才能使数据包到达他们的计算机。这是大型网络游戏(魔兽世界、暗黑破坏神等)要求玩家做的吗?
例如,我最近创建了一个处理 udp 流量的服务器。它只是回显发件人发送的任何内容。我将它部署到互联网上的服务器。启用端口转发后,我只能将回声返回给发送者,但如果同一本地网络上有两个发送者,这将不起作用。
使用 UDP 的在线多人游戏如何通过 Internet 在网络之间传递数据包?据我了解,客户端必须在其路由器上启用端口转发才能使数据包到达他们的计算机。这是大型网络游戏(魔兽世界、暗黑破坏神等)要求玩家做的吗?
例如,我最近创建了一个处理 udp 流量的服务器。它只是回显发件人发送的任何内容。我将它部署到互联网上的服务器。启用端口转发后,我只能将回声返回给发送者,但如果同一本地网络上有两个发送者,这将不起作用。
我在 Ubuntu 16.04 上运行基于 quake 3 引擎的游戏服务器(Wolfenstein:Enemy Territory),我遇到了一个相当令人费解的问题。一周前,玩家在连接服务器时开始遇到问题。基本上,服务器尝试在客户端连接上发送游戏状态的快照,但这失败了数百次,然后成功地将平均连接初始化时间从几秒减慢到几分钟。
这些问题似乎只与一个端口有关。将服务器移动到另一个端口(默认 27960 --> 27961)解决了这个问题。似乎有些玩家能够毫无问题地连接,但大多数玩家(来自不同国家,例如芬兰、西班牙、英国等,不限于单个 ISP 或国家)需要几分钟。
几个月来我没有触及任何与防火墙/网络接口相关的配置。我使用 fail2ban,但它使用默认配置(基于此https://plusbryan.com/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers)。我尝试禁用fail2ban,但没有效果。
我想知道是否有任何可能的原因会以某种方式导致单个端口上的数据包丢失?
嘿,一些脚本小子正在使我客户的游戏服务器(基于 Linux)崩溃。为了提供最好的服务,我正在寻找一种方法来查找崩溃程序发送的数据包,以便稍后阻止它。
所以,我需要一个简单的程序,它将记录从所有客户端发送或接收到服务器软件的每个数据包。正如我所说,游戏服务器软件基于 Linux(Ubuntu 9.10),所以程序应该支持 Linux。游戏服务器软件,不是开源的。
谢谢。