串流不息

本文由 Coxxs 原创,转载须注明原文链接:https://dev.moe/1049

常常有人跟我说,某个网站又上不去了。通常,当我确认网站确实正常,然后提示他检查网络的时候,他就会回应说,他用的是 666 Mbps 的豪华光纤!..哇,你竟然有 666 Mbps 的豪华光纤,好厉害!

高带宽不代表网络质量一定好,也不代表想上的网站一定上的去。网络如同一条河道,河道再宽,天天泥石流还咋川流不息啊。

好在,随着应用对网络越来越高的要求,用户也在逐渐意识到这一点。毕竟,看着X者荣耀上不断跳动的ping值和自己莫名死亡的角色,以及几秒一卡的网络直播,用户终能意识到,自己 666 Mbps 的豪华光纤或许并不那么的靠谱。

值得一提的是最近流行的云游戏(或是 Remote Play),这算是民用级别里对网络质量要求很高的应用了。云游戏相当于是超低延时的串流,用户的操作要快速准确传到云端,而云端的画面数据也要快速传到客户端。河道里的任何一点泥沙,都会直接展现在用户面前(音画撕裂、操作延迟、连接断开),对用户体验造成伤害。

对于民用网络,要评价网络质量有许多标准,比如延时与抖动、丢包、连通性,以及.. 嗯.. 666 Mbps 的下行带宽。

延时与抖动

延时,就是俗称的 ping 值 / RTT。不少游戏界面上可以调出延时的显示,用户也可以通过 ping 目标IP或域名的命令来测试自己设备与目标服务器的延时。而抖动,则是指延时的变化。

FPS游戏中,玩家的操作要过一会才会显示在别人的电脑上,而玩家看到的对方角色也是一段时间前的了,这个“一段时间”即是延时。不过,只要你能顺利打中你看到的A的脑袋,即使A此时已经跑远了,游戏通常还是会判定你成功爆头了。但反之亦然,B此时可能也打中了一段时间前的你,而你才刚看到B对准了你.. 许多行为会受延时的影响,让玩家无法快速准确地看到对方,做出反馈。

而抖动对于FPS的影响则更严重,小幅的抖动游戏可以通过算法克服(以增加延时的代价),但大幅的抖动则通常被视为丢包,服务端不知道你此时在干啥,你也不知道此时别人在干啥,典型的后果就是你看到别人在瞬移,别人看到你的角色做出怪异行为(然后顺手开了一枪)..

在文件下载中,无抖动的高延时会影响下载速率增加的速度,但不会影响满速下载。而严重的抖动则可能影响满速下载,视流量控制算法而定。

丢包

丢包是指数据包来回传输的过程中发生丢失的现象。丢包可能是因为你已经用满了所有的带宽,ISP 丢掉了超过带宽的数据包。

丢包对于FPS游戏的影响不言而喻,玩家的某个操作没能传达给服务器,或是服务器没能把对方的位置反馈给玩家,等客户端/服务器识别到丢包时,已经过去一段时间了,此时再重发弥补,往往为时已晚。而且这“重发”可能又再次被丢。

丢包对于简单的网页访问也会造成严重的影响,举个例子:

客户端发给服务器一个网页请求,结果服务器没收到… 客户端察觉的时候,已过了一会儿,于是客户端再重发…
服务端终于收到请求,把一个网页分成了10个包,编号1~10后。服务端不知道客户端的带宽多大,决定第一批只发1、2、3三个包给客户端…
结果客户端只收到1、3两个。再等几秒,客户端问服务器,我只收到了1,你2呢?…
结果这句“你2呢”也被丢了。于是又过了一会,客户端再发“我有1,你2呢”…

这听起来确实很蠢,然而这就是浏览网页所用到的TCP协议的运作方式。更糟的是,过去的流量控制算法认为,丢包代表着网络拥塞(比如之前提到过,用满了带宽也会造成丢包),因此服务端/客户端不敢加快发包的速度,甚至还会针对丢包放慢速度,对于例子而言,就是服务器一直只敢一次发3个。这造成了网页访问缓慢,也造成了文件下载低速。

666 Mbps 的下行带宽

说完上面这些,或许你已经发现了,对于家庭用户,单纯的高带宽并不代表什么。不代表打游戏流畅,不代表访问网页快,也不代表各种网站都能上,仅仅是最大下载速度高而已。仅此而已。

串流不息

随着云游戏越来越普及,上面提及的延时、抖动、丢包这些影响云游戏的体验参数,会将网络问题暴露在更多用户面前。或许是路由器的问题、或许是运营商的问题。

也希望随着更多高要求网络应用的普及,用户能逐渐关注到网络质量的各项指标,而不仅仅是将带宽与网络质量画等价。

Coxxs

串流不息》有4个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注