做者:潘嘉明
野狗科技嵌入式工程师,曾在TP-Link从事相关工做,在嵌入式研究上经验丰富。
野狗官博:https://blog.wilddog.com/
野狗官网:https://www.wilddog.com/
公众订阅号:wilddogbaas算法
随着网络技术飞速发展,网速已再也不是传输的瓶颈,UDP协议以其简单、传输快的优点,在愈来愈多场景下取代了TCP,如网页浏览、流媒体、实时游戏、物联网。缓存
CDN服务商Akamai(NASDAQ: AKAM)报告从2008年到2015年7年时间,各个国家网络平均速率由1.5Mbps提高为5.1Mbps,网速提高近4倍。网络环境变好,网络传输的延迟、稳定性也随之改善,UDP的丢包率低于5%,若是再使用应用层重传,可以彻底确保传输的可靠性。网络
为了提高浏览速度,Google基于TCP提出了SPDY协议以及HTTP/2。Google在Chrome上实验基于UDP的QUIC协议,传输速率减小到100ms之内。性能
Google采用QUIC后链接速率能有效提高75%。
Google搜索采用QUIC后页面加载性能提高3%。
YouTube采用QUIC后从新缓冲次数减小了30%。测试
TCP为了实现网络通讯的可靠性,使用了复杂的拥塞控制算法,创建了繁琐的握手过程以及重传策略。因为TCP内置在系统协议栈中,极难对其进行改进。优化
4.1 网页浏览google
使用UDP协议有三个优势 :spa
可以对握手过程进行精简,减小网络通讯往返次数;设计
可以对TLS加解密过程进行优化;视频
收发快速,无阻塞。
4.2 流媒体
采用TCP,一旦发生丢包,TCP会将后续包缓存起来,等前面的包重传并接收到后再继续发送,延迟会愈来愈大。基于UDP的协议如WebRTC是极佳的选择。
2010年google 经过收购 Global IP Solutions,得到了WebRTC(网页实时通讯,Web Real-Time Communication)技术,用于提高网页视频速率。
4.3 实时游戏
对实时要求较为严格的状况下,采用自定义的可靠UDP协议,好比Enet、RakNet(用户有sony online game、minecraft)等,自定义重传策略,可以把丢包产生的延迟降到最低,尽可能减小网络问题对游戏性形成的影响。
采用UDP的经典游戏如FPS游戏Quake、CS,著名的游戏引擎Unity3D采用的也是RakNet。
4.4 物联网
2014年google旗下的Nest创建Thread Group,推出了物联网通讯协议Thread,完善物联网通讯。
采用UDP有3个关键点:
网络带宽需求较小,而实时性要求高;
大部分应用无需维持链接;
须要低功耗。
现在全球将近50%的人都在使用互联网,人们不断的追求更快、更好的服务,一切都在变化,在愈来愈多的领域,UDP将会抢占TCP的主导地位。