大家好,各位玩家!🕹️ 在享受在线多人游戏时,我们有时会听到或说出“这Ping怎么回事?”、“卡顿了!”之类的话。在决定游戏胜负的关键时刻,我们常常因为网络延迟而感到遗憾。
那么,游戏究竟是如何与其他玩家连接的?为什么有时流畅,有时却卡顿严重呢?今天,我们将简单而详细地探讨游戏网络中隐藏的秘密,即P2P(Peer-to-Peer)通信、NAT穿透(NAT Traversal)以及中继服务器的作用!🚀

❓ 游戏是如何连接玩家的?两种主要方式!
在线多人游戏的通信方式主要分为两种。
1. 客户端-服务器 (Client-Server) 方式 🏢
这是最常见的方式。所有玩家(客户端)都连接到中央的专用游戏服务器(Dedicated Server)。玩家之间的所有数据(角色移动、攻击判定等)都通过这个中央服务器传递给其他玩家。
- 优点: 🌐 服务器管理游戏的所有状态,因此公平性高,有利于防御外挂或作弊。适用于大规模并发连接。
- 缺点: 💸 服务器运营成本高,玩家与服务器之间的物理距离远时,延迟(Ping)可能会增加。服务器故障时会影响整个游戏。
- 主要游戏: 大部分大型MMORPG(失落的方舟、冒险岛)、热门FPS/AOS(英雄联盟、守望先锋、绝地求生)
2. P2P (Peer-to-Peer) 方式 🤝
玩家们在没有中央服务器的情况下,直接相互连接进行通信。一个玩家可以作为“房主(Host)”扮演服务器的角色,或者所有玩家都可以平等连接。
- 优点: 🚀 不经过中央服务器,因此延迟时间非常短且快速。服务器运营成本几乎为零。
- 缺点: 🚨 游戏整体质量取决于房主的网络状态。可能容易受到外挂或作弊的影响,房主退出时游戏可能会结束。可能会出现NAT穿透这个复杂的问题。
- 主要游戏: 格斗游戏(铁拳、街头霸王)、部分RTS(星际争霸旧版本)、合作(Co-op)游戏、小规模副本等。
🤯 P2P的难题:NAT穿透 (NAT Traversal) 与“打洞”
P2P方式在延迟方面表现最佳,但有一个巨大的障碍,那就是NAT(Network Address Translation),也就是你家里的路由器!🏠
大多数玩家都隐藏在路由器后面,使用私有IP地址。路由器为了保护内部网络免受外部入侵,默认会阻止从外部进入内部的连接。
“我想连接到拥有公网IP的玩家A,但A实际上在路由器后面,我无法直接找到他?”这样的问题就出现了。
这时就需要NAT穿透(NAT Traversal)技术。这就像从内部打开外部锁住的门,或者通过特定的窗户让彼此能够识别。最典型的技术是UDP打洞(UDP Hole Punching)。
打洞!UDP打洞是如何工作的? 🥊
- 连接到集合点(匹配服务器): 玩家A和B连接到游戏的匹配服务器(中央服务器)。(这个服务器协调游戏,但不中继实际游戏数据!)
- 交换公开信息: 匹配服务器将A和B的公网IP地址以及路由器为与外部通信临时分配的端口信息互相告知。
- 同时敲门(打洞): 🔔
- A向B的公网IP:端口发送UDP数据包。
- 同时! B也向A的公网IP:端口发送UDP数据包。
- A的路由器在A向B发送数据包的瞬间,会想:“啊,A向那边发送了东西,那么应该允许来自那边的响应!”并临时打开一个特定端口(一个洞,即“孔”)。B的路由器也一样。
- 开始直接通信: 一旦两边的路由器都“打”出了“洞”,A和B就可以在没有匹配服务器中继的情况下,直接相互收发UDP数据包了! 🎉 这是延迟变得极短的时刻。
- 作用: 当玩家A和B直接连接失败时,中继服务器会中继A和B之间的数据。
- 工作方式: A和B分别连接到最近的中继服务器,并通过中继服务器相互收发数据。
- 缺点: 经过中继服务器就像经过中央服务器一样,因此与P2P直接连接相比,延迟时间会增加。 Ping跳动或卡顿的主要原因之一就是使用中继服务器。📉
- 优点: 即使有延迟,它也能几乎总是保证在任何环境下的连接。它创造了一种“即使有点卡顿也能玩”而不是“游戏连接失败”的情况。
- 格斗游戏: 铁拳、街头霸王等,胜负可能在一帧之间决定,因此P2P连接是必不可少的。
- 过去的RTS游戏: 星际争霸1(旧版本)的Battle.net等,房主扮演主机角色并使用P2P连接。
- 部分合作(Co-op)游戏: 与朋友小规模进行的合作任务游戏等,也会利用P2P。
- 部分MMORPG的特定内容: 像地下城与勇士的组队玩法一样,在特定的副本或小规模队伍中,有时会使用P2P。
通过这种方式,玩家们即使在物理上处于不同的网络中,也能像在同一个局域网中一样进行通信。
😥 即使如此也无法连接怎么办?中继服务器登场!
UDP打洞在大多数网络环境中都能成功,但世界上存在一些非常严格的路由器或防火墙设置(例如:对称型NAT、严格的企业防火墙)。在这种情况下,即使是打洞也无法直接连接。
此时,游戏开发商会准备中继服务器(Relay Server)。
这在概念上与Tailscale的DERP服务器相同。DERP是“Detour Everything Rather than Proxy”的缩写,即“绕过一切而不是代理”,游戏的中继服务器也专注于只转发数据内容而不进行查看。
🎮 哪些游戏使用这种通信方式?
主要在对低延迟要求极高,或旨在降低中央服务器运营成本的游戏中,大量使用P2P和中继方式。
然而,最近由于强大的专用服务器的稳定性和公平性,以及网络基础设施的发展,大多数大型在线游戏(如英雄联盟、守望先锋、绝地求生等)都采用了客户端-服务器模型。P2P方式则根据特定游戏特性作为辅助使用,或者应用于语音聊天等附加功能。
结语
游戏中的网络不仅仅是“连接到服务器”,它还隐藏着复杂的技艺,旨在寻找玩家之间最有效的连接路径。NAT穿透和中继服务器是P2P游戏的核心技术,它们可以说是默默无闻地在幕后工作,为我们提供无卡顿、流畅游戏体验的英雄!
下次玩游戏时,想象一下你的游戏是如何连接的,这也会是另一种乐趣!😊
标签: 游戏网络, P2P, NAT穿透, UDP打洞, 中继服务器, Tailscale, DERP, 在线游戏, 延迟, 游戏, 网络, 客户端服务器
发表回复