TCP 和 UDP 的区别,以及它们如何影响你的游戏体验
可靠与快速的取舍
TCP 提供可靠传输:它保证每个数据包都能按顺序到达,丢了就重传。代价是重传会带来等待,而且顺序保证意味着一个包丢了后面的都要等。
UDP 不保证可靠性,也不保证顺序,发出去就不管了。它把可靠性交给应用层自己处理。代价是应用要自己实现容错,好处是没有重传带来的延迟。
不同场景的选择逻辑
文件下载用 TCP,因为数据不能有缺失,慢一点可以接受,错了不行。
游戏对战用 UDP,因为一个过期三秒的玩家位置信息没有任何价值,重传它反而会拖慢最新的数据。游戏宁可丢帧也不要延迟。
视频通话用 UDP 加自研容错,在画质和延迟之间做动态权衡。
对加速策略的启示
针对 TCP,优化的重点是改善重传效率与拥塞窗口调整,避免一次丢包就把速率打到最低。
针对 UDP,优化的重点是优先转发与丢包补偿,因为 UDP 流量本身没有重传机制,只能靠链路质量的提升来减少丢包。(示例数据,上线前请替换)这也是游戏加速比普通网页加速更依赖线路质量的原因。