你蜷在椅子里,团战正酣,屏幕忽然定格,下一秒弹出“连接已断开”。你骂了一句,切出去看网页,视频,全都在线流畅。这种体验像一根刺,扎在很多玩家的日常里。问题明明出在网络上,可网络又好像没坏。要弄清楚这件事,得从数据包的结构说起。
在线电影和网页浏览走的是超文本传输协议,也就是HTTP,它基于TCP。TCP是一种讲究可靠的通道,它允许数据晚到,允许重传,只要最终完整地拼出画面就行。你的播放器有缓冲,视频网站有边缘节点,哪怕丢包百分之十,视频依然能靠缓存平滑播放。掉线这个词,对观看视频来说,是个很模糊的概念。
游戏完全不同。无论是《英雄联盟》还是《永劫无间》,你的每一次走位、每一个技能判定,都必须实时同步到服务器。游戏走的是UDP,无连接,发出去就不管了。服务器端为了判定公平,只在极短窗口内等待数据。一旦丢包严重,或者延迟抖动超过阈值,判定超时,系统就直接把你踢下线。网页正常,只代表你的下载通道和TCP链路健康,不代表上行链路和UDP转发稳定。
排查的第一步是看线路。家庭宽带通常是PON接入,光猫把光信号转成电信号。光猫内部有一种叫NAT会话表的资源,它记录每个内网IP和公网地址的映射。看视频时,一个视频连接占用一条表项,长时间持有,不会频繁变更。游戏不同,每局对局会向不同的游戏服务器节点发起大量短连接,如果你的光猫或路由器性能孱弱,表项老化速度跟不上,资源耗尽,新数据包没地方记录,服务器自然以为你掉线了。
很多用户不知道,运营商给的是共享带宽。晚高峰时段,整个楼栋的流量汇聚到同一个OLT端口。视频流量可以抢占闲置带宽,因为是下行为主,游戏流量却对抖动极其敏感。你的下行带宽可能跑满千兆,上行却只有几十兆,且被其他设备占用。游戏需要的是稳定上行,任何一次下行拥塞造成的缓冲,都可能让UDP包在运营商设备里排队,超出游戏服务器的耐心。

无线网络是另一个大坑。你看电影走的是2.4GHz频段,覆盖远,穿墙好,丢包了靠重传解决。游戏走的是同样的Wi-Fi,可它的延迟要求是毫秒级。微波炉、蓝牙音箱、邻居的无线信号,都在2.4GHz频段上抢时隙。很多路由器固件默认开启省电模式,待机状态下会休眠,收到游戏包再唤醒,这一来一回就是几十毫秒的额外延迟。问题最典型的特征就是:每隔几分钟掉一次,重启路由器变好,过两天又犯。
还需要检查软路由或硬件加速设置。部分路由器开启了NAT加速,小包转发速度确实快,但遇到P2P下载或者其他高并发连接时,加速引擎的缓存会溢出,导致小包被丢弃。游戏数据包大多是几十字节的迷你包,恰恰是加速引擎最弱的场景。你得进路由器后台,查看连接数统计。如果发现连接数经常超过五千,那基本就是会话表溢出。
最后说一个冷门但常见的原因:运营商给你分配的是大内网地址,也就是CGNAT。视频网站有CDN节点,缓存就在你家附近,公网地址是内网还是外网无所谓。游戏服务器需要的是公开且可达的地址,用来回传数据。CGNAT环境下,你发起给服务器的UDP包经过层层翻译,任何一个中间设备老化超时,路径就断了。你可以在光猫里看WAN口地址,如果显示的不是公网段,而是100.64开头,那基本就是这个原因。打电话让运营商改公网地址,几十秒钟的事,但很多玩家长年不知道。
这件事的真正烦人之处在于,它不像硬件损坏那样一下子坏掉,而是像一个时好时坏的幽灵,让所有排查都变得漫长。下次再遇到这种情况,别急着骂游戏服务器。打开电脑的任务管理器,看看哪个后台程序在偷偷发数据。关掉所有无关的设备,把网线从路由器换到光猫上,直连测试。你会发现,突破口往往比你想象的要近得多。