100次浏览 发布时间:2024-09-02 08:05:47
一、什么是网络延迟
指各式各样的数据在网络介质中通过网络协议进行传输,如果信息量过大不加以限制,超额的网络流量就会导致设备反应缓慢,卡顿,便称之为网络延迟。
二、网络延迟的常见三种状态
为什么会产生网络延迟(上网状态)
为什么会产生网络延迟的状态(发送文件状态)
发送过程中出现卡顿是因为系统正在处理数据(一般都会将数据压缩),而电脑或手机硬件不行,就会出现卡顿。
接收文件视频的时候,一般来说会将发送时候的数据解码,然后展现到手机上,这个时候,若是手机运算能力不足,那么会出现卡顿。
网络时延是所有后台程序员的挑战,特别是对于游戏开发来说,特别是FPS或MOBA游戏,有时候,延迟可能左右一次击杀,甚至一盘游戏的胜负。而网络延迟也常在程序员的面试题中出现:
三、什么是延迟
在用户发起请求,到用户收到服务端的确认请求之间的时间,我们称之为延迟。
四、延迟的产生
从用户的手机,到游戏后台的服务器,是有距离的。现在,光纤已经遍布大江南北,即便数据在光纤中的传播速度接近光的速度,从深圳到北京也是需要十来毫秒。事实上,从你的手机上操作,访问北京服务器的数据,并非是直线访问,需要经历过非常多中间设备,不同的运营商。在这些设备之间,可能性能参差不齐,造成延迟进一步加大。
其次,服务器处理数据,是需要时间的,如果代码写得不合理,或者服务器性能过载,都可能增加单个请求的处理时间,从而造成延迟加剧。
五、延迟优化
第一个是从硬件上处理,建立专线。如果说原先的网络环境是普通的公路,那么,专线就是高速公路,在专线上,中间设备会减少,并且带宽更大,减少数据进行绕路。
第二个是从传输协议上,例如使用UDP协议替换TCP协议。越来越多的游戏传输协议,从TCP切换成UDP。由于TCP建立连接需要三次握手,并且TCP有队首阻塞问题。在网络不稳定的时候,更容易加大延迟。有人说,使用UDP协议,不就不可靠了么?在我们之前有一篇文章,专门介绍可靠的UDP协议传输,有兴趣可以看一下。
第三个还是从传输协议上优化,一般来说,为了优化的性能,在客户端或服务端,我们都会使用Buffer来进行数据缓冲,带来更高的IO效率。但是,如果Buffer过大,就可能是人为的制造延迟,所以我们可以减少Buffer的使用,或者缩小Buffer的大小。
第四是服务器使用更高的更高的帧率运算。什么是帧率呢?很多对战的游戏,并不是数据一发送到服务器,服务器就立马处理的。如果服务器1秒钟处理30次,那么,如果一个请求到服务器的时候,上一帧刚处理完,它就需要等待33ms。如果帧率提升到120帧,那么同样的情况,只需要等待8ms,大大减少延迟的时间。
第五客户端提前动画或预测数据,改善用户体验。还是上述那个吃口药的例子,我们在用户点击之后,就立马处理吃药的动画,因为绝大部分用户,都是正常的用户,发出来的请求都是合法的请求,对于少数外挂的用户,后续服务器返回进行对齐就可以了。这种方法,实际上并没有改善延迟,但是却大大提升了用户体验。
相关文章