深色模式
游戏联网原理
本章你将学到:一局对战里数据是怎么在你、服务器、对手之间流动的;tick 率、延迟、丢包、抖动分别会让游戏里出现什么现象;游戏内的 ping / loss / choke / var 怎么读;UDP 和防火墙、NAT 的关系;节点选择、晚高峰、后台程序、加速器、语音各自对对战的影响;以及最关键的一件事——怎么区分"游戏卡"是帧数低还是延迟高。
什么时候用得上:用户说"卡""瞬移""打人不掉血""明明先开枪""对面会闪现"的时候。这些描述背后是不同的网络现象,懂原理才能听懂用户在说什么。
客户端-服务器模型
大白话
一局对战里有十个玩家,他们的电脑互相之间不直接通信。每个人的电脑(客户端)都只和一台服务器说话:
- 你按下 W,你的电脑告诉服务器"我在往前走"。
- 服务器汇总所有人的动作,算出这一刻每个人在哪、谁打中了谁。
- 服务器把结果发回给每个人,你的电脑据此画出画面。
大白话
服务器是裁判。所有人都只跟裁判说"我做了什么",裁判判定结果再告诉所有人。你和对手之间没有直接的线,所以"对手网差"会通过裁判影响到你(他的位置更新到得慢),但你的网差只影响你自己和裁判之间的沟通。
专用服务器与 P2P
| 专用服务器 | P2P(点对点) | |
|---|---|---|
| 数据走哪 | 所有人 → 机房服务器 | 玩家之间直接连,或其中一人当主机 |
| 延迟由什么决定 | 你到机房的距离和线路 | 你到其他玩家(或主机)的距离 |
| 公平性 | 高,裁判中立 | 主机玩家有优势 |
| 对 NAT / 防火墙的要求 | 低,只需要能主动连出去 | 高,需要能被别人连进来 |
| 谁在用 | CS2、Valorant、大多数竞技射击 | 某些格斗、合作游戏、老游戏的房间模式 |
R0 平台的对战使用分布在多个区域机房的专用对战服务器。 这意味着:用户的对战体验取决于他到所选区域机房的这条线路,而不是取决于对手在哪。同一局里有人卡有人不卡,是各自线路不同,不是服务器区别对待。详见 对战服务器与网络。
两条独立的连接
平台运行时用户电脑上同时有两条网络连接,它们的表现和"怕什么"不一样:
| 连接 | 协议 | 连到哪 | 怕什么 | 出问题的表现 |
|---|---|---|---|---|
| 客户端长连接(WebSocket) | TCP | 平台后端 | 断连(超过 10 秒缓冲期) | 房间里显示离线、被踢出房间、匹配暂停 |
| 游戏对战连接 | UDP | 区域对战服务器 | 丢包、抖动、高延迟 | 卡、瞬移、回弹、打不中 |
用户说"掉线",要问清是哪一条掉了:客户端提示断开 / 房间里离线,是长连接;游戏里"与服务器连接中断"倒计时,是对战连接。两者可以只坏一条。详见 对战服务器与网络、登录与连接问题。
tick 率
大白话:服务器不是连续计算的,而是一秒钟"拍照"若干次,每拍一次叫一个 tick。64 tick 就是每秒结算 64 次,128 tick 是 128 次。tick 之间发生的事,要等下一次 tick 才被结算。
| tick 率 | 每次结算间隔 | 意味着 |
|---|---|---|
| 64 tick | 约 15.6 ms | 你的动作最多要等 15.6 ms 才被服务器"看到" |
| 128 tick | 约 7.8 ms | 更精细,但服务器和网络负担翻倍 |
待技术确认
平台对战服务器使用的 tick 率、CS2 的 sub-tick 机制在平台上的表现,以技术同事说法为准。客服只需知道:tick 率是服务器侧固定的,用户改不了,"我这局 tick 低"通常不是用户能解决的问题。
对排查的意义:tick 率和用户网络无关。用户说"tick 率低"多半是把它和帧数或延迟混了。除非平台公告有服务器问题,否则不往这个方向查。
延迟对射击游戏的影响
延迟是你的动作到服务器、服务器的结果回到你这里的总时间。它在射击游戏里具体表现为:
| 延迟 | 你感受到的 |
|---|---|
| < 30 ms | 几乎无感 |
| 30–60 ms | 正常竞技水平,无明显感觉 |
| 60–100 ms | 拉枪略"飘",对枪偶尔感觉吃亏,能适应 |
| 100–150 ms | 明显:先看到人再开枪已经晚了;被击杀回放里自己"还没来得及" |
| > 150 ms | 几乎打不了:躲进掩体后还会死、开枪后一小会儿才有反应 |
为什么"我明明先开枪":你在 100 ms 延迟下看到的对手位置,是他 50 ms 前的位置;你开枪的信息 50 ms 后才到服务器。对手在 30 ms 延迟下,信息比你早到。服务器按到达顺序判定,他先。游戏有补偿机制(lag compensation)会尽量弥补,但延迟越高补偿越勉强。
延迟和 tick 的关系:延迟不会因为 tick 高而降低。tick 高只是结算更细,网络路程该多久还是多久。
丢包与抖动的游戏表现
这是客服听懂用户的关键:用户描述的画面现象,对应的是具体的网络指标。
| 用户的描述 | 对应的现象 | 主要原因 |
|---|---|---|
| "对面会瞬移 / 闪现" | 对手位置更新丢了几次,下一次到达时位置跳变 | 丢包(下行) |
| "我自己会回弹 / 被拉回去" | 你的移动指令没到服务器,服务器按旧位置结算,把你拉回去 | 丢包(上行) |
| "开枪没反应 / 打人不掉血" | 开枪指令丢了,或命中判定结果丢了 | 丢包 |
| "一顿一顿的,像卡帧但帧数是满的" | 数据到达时间不均匀,画面更新不均匀 | 抖动 |
| "动作延后 / 按了半秒才动" | 来回时间长 | 高延迟 |
| "整个画面停住几秒然后一切恢复" | 连续丢包几秒,游戏在等待 | 突发严重丢包(WiFi 切换、路由器抽风) |
| "突然提示连接中断,倒计时" | 连续超时超过阈值 | 链路中断 |
| "画面本身一顿一顿,包括菜单、鼠标" | 这不是网络,是帧数 | 见本页末 |
注意
"瞬移""回弹""打不中"这三个词几乎百分之百指向丢包,不是延迟。用户 ping 显示 30 ms 也会瞬移,因为 ping 数字不显示丢包。听到这三个词,直接去查丢包(ping -n 100 看丢失率、WinMTR、游戏内 loss),不要被"我 ping 很低"带偏。
游戏内指标怎么读
CS2 / CSGO 内置了网络状态显示,是最直接的"游戏连接质量"证据(比 ping 命令更直接,因为它测的就是对战那条 UDP 连接)。
| 指标 | 意思 | 正常 | 异常 |
|---|---|---|---|
| ping / latency | 到服务器的往返延迟(ms) | < 50 | > 100 |
| loss | 丢包率(%) | 0 | > 1 就能感觉到,> 5 严重 |
| choke | 服务器想发给你但因带宽 / 设置限制没发全(%) | 0 | 持续 > 0:下行被占满、游戏 rate 设置太低、服务器过载 |
| var / jitter / sv var | 抖动。客户端 var 是本机帧时间波动,sv var 是服务器侧波动 | 接近 0 | 客户端 var 高 = 本机性能问题;sv var 高 = 服务器负载问题 |
| fps | 每秒帧数 | 高于显示器刷新率 | 低于 60 且波动 → 帧数问题,不是网络 |
| tick / rate | 服务器 tick 率、数据速率设置 | 固定值 | 一般不用管 |
让用户怎么打开(以 CS2 为例,具体命令和显示方式以 CS2 / CSGO 页为准):
- "进游戏后,按键盘上 Esc 下面那个键(`,波浪线键)打开控制台。如果打不开,在设置 → 游戏 里把'启用开发者控制台'打开。"
- "输入
cl_showfps 2或按游戏设置里的'遥测'选项开启网络信息显示(不同版本方式不同)。" - "屏幕角落会出现一行数字。在卡的时候截图给我。"
待技术确认
平台启动的 CS2 是否允许打开控制台、是否有平台自己的延迟 / 丢包显示(比如房间内或比赛内 HUD),以及推荐用户看哪一个,以技术和产品同事确认为准。
读法:
| 看到 | 说明什么 |
|---|---|
| ping 低、loss 0、choke 0、fps 高,但用户说卡 | 用户说的"卡"可能是别的(鼠标、显示器、心理预期),或问题是间歇性的截图时没抓到;让用户卡的瞬间截 |
| ping 高(> 100)、loss 0 | 纯延迟问题:节点远、跨网、绕路。查 tracert,考虑换节点 / 加速器 |
| ping 正常、loss > 1 | 丢包:先换网线;ping 网关看家里是否丢;WinMTR 定位 |
| choke 持续 > 0 | 下行带宽被占(家里有人下载 / 看 4K)或 rate 设置太低 |
| var 高(客户端) | 本机 CPU / GPU 吃紧,帧时间不稳,是性能问题,转 帧数低排查 |
| sv var 高 | 服务器侧负载,收集截图和时间、节点,升级 |
| fps 低 | 不是网络问题,转 帧数低排查 |
UDP 与防火墙 / NAT
对战流量是 UDP(见 网络基本概念),UDP 在穿过防火墙和 NAT 时比 TCP 更容易出问题。
防火墙
Windows 防火墙、第三方安全软件、路由器防火墙都可能拦 UDP:
- Windows 防火墙:第一次运行游戏时弹出"是否允许此应用通过防火墙",用户点了"取消"→ 游戏的 UDP 可能被拦,表现为"能进大厅、连不上对战服务器"或连上后立刻断。处理见 安全软件与拦截。
- 第三方安全软件的"网络防护 / 上网保护":同样效果,且不一定弹提示。
- 路由器防火墙 / 家长控制 / 游戏限制:某些路由器有"禁止 UDP""限制游戏"选项。
- 校园网 / 公司网:经常整体封 UDP 高端口。表现为网页正常、任何游戏都连不上。
NAT 类型
NAT 把家里多台设备藏在一个公网地址后面(见 网络基本概念)。对专用服务器模式,NAT 影响不大——因为是客户端主动连服务器,回来的数据路由器认得。但有几种情况会出问题:
| 情况 | 问题 | 表现 |
|---|---|---|
| 对称 NAT(严格 NAT) | 路由器对每个目标都分配不同的外部端口,某些服务器端的连接跟踪会混乱 | 偶发连不上、断线重连失败。常见于运营商级 NAT(大内网)、某些企业路由 |
| 多级 NAT | 光猫路由模式 + 路由器 + 再一个路由器 | UDP 会话超时更容易、延迟叠加,见 网络拓扑 |
| NAT 会话超时太短 | 路由器认为这条 UDP 连接"没人用了"就删掉映射 | 游戏中间突然断,通常几分钟一次 |
运营商级 NAT(用户拿到的是 100.64.x.x 或 10.x.x.x 的 WAN 地址) | 用户根本没有公网 IP | 大多数情况能玩,但质量和穿透能力更差,见 常见网络故障模式 |
展开:UPnP 与 DMZ 是什么
- UPnP:让程序自动告诉路由器"请把某个端口的进来的数据转给我"。对专用服务器模式的对战一般不需要,但对 P2P 类游戏、语音有帮助。路由器里通常有个开关,默认开。关了一般也不影响我们的对战。
- DMZ:把某一台电脑"完全暴露"在公网,所有进来的数据都转给它。能解决几乎所有 NAT 穿透问题,但安全风险大,客服不建议用户开。
- 端口转发:手动指定某端口转给某台电脑。专用服务器模式一般不需要。
这三样对我们的对战通常都不是必需的。如果技术确认某个具体问题需要,再由技术指导。客服不主动建议用户改这些设置。
禁止
不要指导用户开 DMZ、关闭 Windows 防火墙("关闭"不同于"允许某程序通过")、或把路由器恢复出厂设置。这些操作要么带来安全风险,要么让用户的网络配置全部丢失、需要重新拨号设置,用户往往不知道宽带账号密码。
区域节点与物理距离
延迟的下限由物理距离决定(见 带宽、延迟、抖动、丢包)。平台有多个区域机房,用户选(或被分配到)哪个区域,直接决定延迟基线。
| 用户与节点的关系 | 延迟量级(正常线路) |
|---|---|
| 同城 / 同省 | 5–20 ms |
| 邻省 | 15–35 ms |
| 跨大区(如华北 → 华南) | 35–60 ms |
| 跨运营商(电信用户连联通机房) | 在上面基础上再加 10–40 ms,晚高峰更多,且丢包风险大 |
| 严重绕路(数据先跑到别的省再回来) | 可能翻倍 |
对排查的意义:
- 用户 ping 90 ms,先问他选的哪个区域、他在哪、什么运营商。华北电信用户选了华南节点,90 ms 是正常的,方案是换节点,不是排查。
- 同一区域内延迟正常应该稳定。如果一个华东用户连华东节点 90 ms,才是异常,查 tracert 看绕路和跨网。
- 不同运营商到同一机房的线路不同。机房如果是单线(只接电信),联通 / 移动用户天然要跨网,延迟高一档是结构性的。
待技术确认
平台各区域节点的位置、接入的运营商线路(单线 / 双线 / BGP 多线)、推荐的用户 - 节点对应关系,由技术同事提供。有了这张表,客服才能判断"这个延迟正不正常"。
晚高峰
晚上 8 点到 11 点,全国用户同时上网,运营商的骨干和跨网互联点拥堵,表现为:
- 白天 30 ms 晚上 60 ms 以上;
- 白天 0 丢包晚上 1–3%;
- 跨运营商线路恶化最明显。
怎么确认:问"是不是只有晚上卡、白天正常"。让用户白天和晚上各跑一次 ping -n 100 和 tracert 对比。
能做什么:换到本运营商直连的节点(如果有)、试加速器(换一条路)、错峰。用户改不了运营商的骨干拥堵。
有线优先
WiFi 是家庭对战卡顿的头号来源,原理见 网络拓扑。在游戏联网层面再强调一次为什么:
- 对战每秒发几十个小包,每一个都要及时到。WiFi 的重传机制会让个别包晚几十毫秒到达——这在下载里无感,在对战里就是一次抖动。
- 2.4G 和邻居的 WiFi、蓝牙、微波炉共用频段,干扰是随机的,导致丢包也是随机的——正好是对战最怕的模式。
- WiFi 在两个频段或两个 AP 之间切换的瞬间,会丢一串包——用户描述为"每隔一会儿卡一下"。
排查时的用法:让用户接网线打一局。不卡了 → WiFi 是原因,方案是长期用网线或改善 WiFi(5G、靠近路由器、换路由器);还卡 → 排除 WiFi,往链路和服务器查。这是一次只改一个变量的典型应用。
后台占带宽的程序
对战本身不吃带宽,但如果带宽被别的东西占满,对战的小包就要排队,延迟和丢包一起来。常见的"吃带宽大户":
| 程序 / 行为 | 吃的是 | 表现 |
|---|---|---|
| 网盘同步(上传照片 / 备份) | 上行,且往往吃满 | 下载测速正常,游戏照样卡;choke 或 loss 上升 |
| 直播推流 / 录屏上传 | 上行 | 同上,且开播就卡 |
| 别的设备看 4K / 直播 | 下行 | 家里有人开电视就卡 |
| Windows 更新、Steam 更新、其他启动器更新 | 下行 | 突然卡几分钟然后好 |
| 迅雷、BT 类下载 | 上下行都吃,且连接数极多,路由器容易被撑爆 | 全家网络都卡 |
| 浏览器开着几十个页面、视频自动播放 | 下行 | 轻微 |
| 手机在同一 WiFi 下自动更新 App、备份 | 下行 / 上行 | 隐蔽 |
怎么确认:卡的时候让用户打开任务管理器 → 性能 → 以太网 / Wi-Fi,看"发送 / 接收"的实时曲线。游戏本身只有几十 KB/s,如果显示几 MB/s 甚至几十 MB/s,就是有东西在跑。切到 进程 页按"网络"列排序,最上面的就是。见 任务管理器。
注意:任务管理器只能看这台电脑的流量。家里其他设备的占用要靠问,或者登录路由器看流量统计。
加速器:原理与副作用
原理:加速器不是"让网变快",而是换一条路走。正常路线是"你 → 运营商 → 骨干 → 机房";开了加速器变成"你 → 加速器入口节点 → 加速器的专线 → 加速器出口节点 → 机房"。如果加速器的专线比公网骨干好(比如避开了跨网互联点、避开了晚高峰拥堵段),延迟和丢包就会改善。
大白话
从家去公司,公共道路晚高峰堵死了。加速器相当于开了一条收费专用道,先绕到入口,再走专用道,再从出口回到公司附近。如果专用道真的畅通,绕一点也比堵着快;如果专用道本身也堵,或者入口离你太远,那就是花钱绕了远路。
什么时候有用:跨网(电信用户连联通机房)、晚高峰骨干拥堵、tracert 显示中间某段严重绕路。
什么时候没用甚至更差:
| 情况 | 为什么 |
|---|---|
| 问题在家里(WiFi、路由器、网线) | 加速器只改变出门以后的路,家里的坑还在 |
| 用户本来就是本运营商直连、延迟已经 20 ms | 多绕一跳只会更慢 |
| 加速器选的节点差 / 入口节点离用户远 | 绕远路 |
| 加速器和另一个加速器 / VPN 同时开 | TUN 虚拟网卡冲突,流量乱走,见 代理、VPN 与加速器 |
| 加速器只加速了游戏 UDP,但用户的问题是客户端长连接(TCP)掉 | 加速的不是出问题的那条 |
| 加速器残留(关了但系统代理 / hosts / 虚拟网卡还在) | 制造新问题 |
排查时的原则:一次只改一个变量。用户开着加速器反馈卡 → 先让他关掉(并确认关干净)跑 ping / tracert 看裸网表现;用户没开加速器反馈跨网延迟高 → 可以建议试一个,试完对比数据。不要在用户开着加速器的状态下做链路排查,因为 tracert 看到的是加速器的路,不是用户的路。
语音通话的额外开销
游戏内语音、Discord / YY / KOOK 等语音软件,会额外占用:
- 带宽:每路语音几十 KB/s,几个人一起说话上下行合计可能几百 KB/s。对 100M 以上宽带无感,对上行只有几 M 的宽带、或已经被占的上行,会加剧拥堵。
- CPU:降噪、编码要吃一点 CPU,低配机器上帧数会掉几帧。
- 连接:语音软件自己也走 UDP 到它的服务器,和游戏是两条独立连接。语音卡不等于游戏卡,反过来也一样。
对排查的意义:用户说"卡",问一句"是游戏画面卡还是语音卡、断续?"如果只是语音卡而游戏指标正常,问题在语音软件的服务器 / 节点,不在我们。
分清帧数低和延迟高
这是本章最重要的一节。用户说的"卡"至少有两种完全不同的东西,排查方向完全相反:
| 帧数低(性能问题) | 延迟 / 丢包高(网络问题) | |
|---|---|---|
| 画面本身 | 不流畅:转视角有拖影、一格一格、鼠标移动画面跟不上 | 流畅:转视角丝滑 |
| 操作反馈 | 按键后画面有反应但画面卡 | 按键后本地立刻动,但结果(打中、开门、别人的反应)延后 |
| 别人的动作 | 也一格一格 | 别人瞬移、闪现,自己被拉回 |
| 菜单、计分板 | 也卡 | 正常 |
| 游戏内指标 | fps 低、var 高 | ping 高、loss 高 |
| 任务管理器 | CPU 或 GPU 接近 100% | CPU / GPU 正常 |
| 什么时候卡 | 进复杂场景、烟雾、人多时卡 | 不分场景,或按时段卡(晚高峰) |
| 排查去哪 | 帧数低排查 | 卡顿与掉线排查 |
怎么问用户(直接可用):
"您说的卡,是画面本身一顿一顿的、转视角不顺——还是画面很流畅,但感觉开枪慢半拍、对面会闪现、自己会被拉回去?"
- 答"画面本身卡"→ 帧数问题,让他看 fps 和任务管理器 CPU / GPU。
- 答"画面流畅但操作延后 / 对面瞬移"→ 网络问题,让他看 ping / loss,跑 ping 网关。
- 答"都有"→ 两个问题叠加,先解决帧数(因为帧数低会让人误判网络),再看网络。
- 答不上来 → 让他在卡的时候截一张游戏内指标的图,看 fps 和 ping / loss 哪个不正常。
注意
帧数低会让用户误以为是网络问题("我 ping 很低怎么还卡"),网络丢包也会让用户误以为是电脑卡("我电脑配置很高怎么还卡")。不要接受用户自己的归因,用游戏内指标和任务管理器判断。
对排查意味着什么
把本章的原理落到排查动作上:
- 用户说"卡"→ 先分帧数还是网络(问画面流畅不流畅)。
- 网络的话 → 听关键词:"瞬移 / 回弹 / 打不中" = 丢包;"延后 / 慢半拍" = 延迟;"一顿一顿但帧数满" = 抖动;"掉线" = 分清是客户端长连接还是对战连接。
- 拿游戏内指标截图(卡的时候):ping / loss / choke / var / fps。
- 问环境:有线还是 WiFi;选的哪个区域、用户在哪、什么运营商;开没开加速器;家里有没有人在用网;是不是只有晚上卡。
- 三段定位:ping 网关 → tracert / WinMTR → ping 服务器 + 其他用户,见 网络排查工具。
- 一次只改一个变量验证:换网线 / 关加速器 / 换节点 / 关后台程序,每次只做一件。
常见误区
- "ping 低就不会卡。" ping 不显示丢包和抖动。瞬移、回弹在 ping 30 ms 下照样发生。
- "带宽大就不会卡。" 对战不吃带宽,只怕带宽被占满和链路质量差。
- "加速器一定能降延迟。" 加速器是换路,路不好或问题在家里就没用甚至更差。
- "对面卡是服务器问题。" 每个人到服务器的线路不同,别人卡是别人的线。
- "帧数低是网络问题 / 网络卡是电脑问题。" 用画面流畅度和游戏内指标区分,不接受用户的自我归因。
- "tick 率低所以卡。" tick 率是服务器固定的,用户改不了,也和用户网络无关。
- "关防火墙就好了。" 应该是"允许游戏通过防火墙",不是"关闭防火墙"。
- "在开着加速器的状态下跑 tracert。" 看到的是加速器的路,排查无效。
自检问题
- 用"裁判"比喻解释客户端-服务器模型。为什么同一局里有人卡有人不卡?
- 平台运行时电脑上有哪两条网络连接?各走什么协议、各怕什么、出问题各有什么表现?
- 用户说"对面会瞬移""我会被拉回去""打人不掉血",这三句话指向哪个网络指标?为什么用户 ping 显示 30 ms 也会这样?
- 游戏内 ping / loss / choke / var / fps 各是什么意思?loss 持续 3% 和 choke 持续 10% 分别说明什么?
- 加速器的原理是什么?列出至少三种"开加速器反而更差"的情况。为什么排查链路时要先让用户关掉加速器?
- 写出一句话,能让用户自己区分"帧数低"和"延迟高"。两种情况分别去哪一页排查?
- 用户说"晚上卡白天不卡",最可能是什么?怎么确认?用户能做什么?