我玩了八年英雄联盟,遇到过三次类似情况:游戏内一切正常,ping值稳定在20左右,但每次进游戏读条完毕,黑屏刚亮起来,屏幕就弹出“重新连接”的按钮。点重连,黑屏,再点,要么等三十秒回到客户端,要么直接卡在加载界面。最诡异的是,退出重开反而能进,但过几分钟又掉。后来我专门抓了数据包,对比正常情况下的连接行为,结论是这些并非故意掉线,而是客户端与游戏服务器之间的UDP连接被中途截断,但TCP连接还活着,所以游戏主程序以为你在,服务器却收不到你的操作指令。
先说最容易忽视的:英雄联盟用的是UDP传输实时对战数据,而UDP没有三次握手,也没有重传机制。你的路由器、光猫、校园网认证网关,甚至小区共享交换机的缓冲区一旦拥塞,就会优先丢UDP包。你感觉“玩的好好的”,其实那只是你本地画面还在播放,因为客户端会把最后收到的状态继续预测演算。真正断线的是上行方向,你按的技能指令发不出去,服务器等待两三秒没收到,就会判定你失去连接,给你发“重新连接”的提示。我用自己的网络模拟工具测过,当上行丢包率达到百分之三到百分之五时,游戏里只会看到自己按了闪现没反应,队友说你站在原地,紧接着就是重连弹窗。
很多玩家以为是服务器波动,但国服英雄联盟的服务器在华北和华东,实测跨省延迟通常只有三十到五十毫秒。真正的问题是运营商网络跨地域路由优化不佳。比如你用电信宽带访问北方联通服务器,数据包要经过多个自治域,某些节点在晚间高峰期会随机丢弃非实时业务的包。这时候你换个DNS,或者开个加速器,反而可能更糟,因为加速器IP段经常被服务器端的安全策略怀疑,触发更严格的验证,你刚连上就被踢回客户端。我有一个朋友住在大学宿舍,用的是校园网,每次进游戏只要一开下载程序,哪怕只占10KB/S,就会断线重连。后来抓包发现,他的校园网网关每秒钟只允许多少个UDP会话,超过就随机丢弃,连QQ语音都受影响。
另一个容易被忽略的因素是客户端本身的“完整性检查”。当你进入游戏的那一刻,反作弊系统会扫描你本地的内存和文件,这时如果网络延迟稍微波动,扫描超时,服务器就会关闭你在对局内的会话。你看到的是“重新连接”,其实后台里是“连接被远端关闭”。这种情况在每次版本更新后更容易发生,因为更新完有些玩家没重启电脑,缓存和旧的驱动还占着文件句柄,扫描过程变慢,导致连接看门狗超时。我自己的解决方法是更新后进训练模式试连一次,如果没问题再打排位。
还有一个奇怪但真实的原因:本地无线网卡的省电模式。如果你的电脑用的是WiFi,而且进游戏时拔掉了电源适配器,那么无线网卡会在空闲时进入低功耗状态,即便你正在操作游戏,数据包接收间隔稍长,网卡就会自动降低功率,导致某个带有关键序列号的包没有被正确接收。客户端重传没有机制,所以只能等服务器超时。我实测过,在装有Intel AX210网卡的笔记本上,插电与不插电,进游戏后的丢包率相差六倍。不插电时,每三十秒就有一次掉线。这个在台式机上不常见,但笔记本玩家要特别注意。

最让人迷惑的是“重新连接”点了之后,有时直接回到客户端大厅,有时却卡在进度条。这取决于你的TCP控制连接是否还健康。英雄联盟的控制连接走的是TCP 2099端口,数据连接走UDP 5000到5500端口段。你的网络设备(比如家里的路由器)如果启用了“智能流控”或者“游戏加速”功能,它会尝试识别UDP流量,但识别不准,把游戏数据包当成普通视频流压缩或者降速。这时TCP保持正常,所以客户端能接收服务器的“重连指令”,但UDP数据始终过不来,你就会陷入无限重连的死循环。我遇到过一台荣耀路由器,默认开启了“在线视频优化”,结果英雄联盟就断线,关掉这个功能后一整个月再没掉过。
另外一个鲜为人知的机制是:最近重连后,如果你在等待界面点了“关闭”,客户端会直接退出,但后台进程可能还在,这时候你重新启动游戏,它会复用旧的连接,而旧连接已经被服务器标记为丢失,新连接又要等待服务器刷新,造成二次重连不上。正确做法是退出后打开任务管理器,结束所有“League of Legends.exe”和“LeagueClientUx.exe”进程,等十秒再进。这个方法解决了我现实中一半以上的重连问题。
从数据上看,我在好友列表里统计过一百名常玩的玩家,每周出现至少一次“进游戏重连”报错的比例是百分之二十三。这些人里,百分之十四用的校园网或公司网络,百分之六用的是无线网络,另外百分之三的本地文件损坏(用WeGame修复后解决)。真正因为腾讯服务器崩溃导致全区重连的事件,一年都碰不到一两次。
如果你也遇到这种情况,先别急着骂服务器。打开命令提示符,输入ping -t 你的网关地址,看丢包率;再输入netstat -ano | findstr "5000 5500"看UDP连接是否建立。如果网关丢包率是零,但游戏里依然重连,那多半是运营商的路由问题,尝试换一个加速节点,或者把路由器里的QoS关掉。如果网关本身有丢包,那就换网线,或者把WiFi连接断开再重连,同时重置网络(管理员运行netsh winsock reset)。实在不行,卸载游戏重装,注意用官方启动器修复而不是只删游戏目录。
游戏里“重新连接”四个字看着刺眼,但本质上就是网络模型的脆弱环节。明白UDP、TCP、网卡省电、路由策略这几个点,你就能在弹出窗口时,花三十秒找到真正的问题所在。