服务质量的五个标准 服务质量分析模型有什么( 三 )


5.2 使用TCP还是UDP?
接下来看一下WebRTC对TCP/UDP协议的选择 。在网络比较优质时,TCP/UDP都可以用于实时传输,但大多数情况下,我们首选UDP(后面会介绍UDP的优势);弱网环境下不能使用TCP;而在进行网络穿越时,使用TCP又有较大的好处,在企业内可以使用TCP访问外网的80端口进行穿透 。
5.3 为什么极端网络环境下不能用TCP?
为什么在弱网环境下不能用TCP?这是由于TCP的机制所造成的 。TCP的机制是发送、确认、丢包、重传 。正常情况下,数据从一端传输到另一端是没有任何问题的,但当出现丢包时就会有较大的麻烦 。
图中显示了多次丢包时的延迟情况:从客户端向服务端发送数据包,服务端需要返回ACK消息进行确认; 客户端收到确认消息后, 才能继续发送后面的数据(有滑窗时也是类似的) 。每次客户端发完数据后,都会启动一个定时器,定时器的最短超时时间是200ms 。如果因某种原因,在200毫秒客户端没有收到返回的ACK包,客户端会重发上一个包 。由于TCP有退避机制,以防止频繁发送丢失包,因此会将重发包的超时时间延长到400ms 。如果重发包依然没有收到确认消息,则下一次重发的超时时间会延长到800ms 。我们可以看到,连续几次丢包后,就会产生非常大的延迟,这就是TCP在弱网环境下不能使用的根本原因 。
5.4 选择UDP带来的问题
由于TCP的机制问题,因此通常我们会选择UDP来保障音视频传输的实时性 。UDP在实时性方面有优势,但缺点同样明显 。由于UDP是不可靠传输,它只能尽力送达,所以出现丢包、乱序是常见的事儿,但对于网络质量来说,丢包是非常严重的事情,这就需要我们自己处理这个问题 。下面咱们就来看看WebRTC是如何解决这个问题的吧!
6 如何提高网络质量
6.1 网络质量包含哪些指标
那么,WebRTC是如何处理UDP的网络质量的呢?
要想解决网络质量,首先要知道影响网络质量的几个因素:它包括了丢包率、延迟时间、抖动、乱序 。如果网络丢包率低、延迟时间小、不抖动、不乱序,这就是非常优质的网络啦 。但如果丢包率很高,那么网络质量一定会很差 。
6.2 造成丢包的原因
图中是网络基本的拓扑,造成丢包的原因有很多,如链路质量差,当手机与基站连接时,由于信号不好会造成丢包,这就属于链路差,这种情况在移动端是经常发生的;第二是带宽满,比如一台机子上行发送码率比较大,而下行接收链路比较小,这时在上游的路由器会把数据缓存起来慢慢发送,但缓存是有限制的,一旦缓存被塞满,后面就会造成大量丢包;第三是主动丢包,比如路由是跨运营商的,在不同运营商之间传输数据时,可能由于运营商未知的原因造成丢包;第四是光线被挖断等偶然原因造成丢包 。

推荐阅读