为什么UDP有时比TCP更有优势

标签: 野狗 udp tcp 物联网 | 发表时间:2015-12-07 17:30 | 作者:野狗
出处:http://segmentfault.com/blogs

作者:潘嘉明
野狗科技嵌入式工程师,曾在TP-Link从事相关工作,在嵌入式研究上经验丰富。
野狗官博: https://blog.wilddog.com/
野狗官网: https://www.wilddog.com/
公众订阅号:wilddogbaas

图片描述

随着网络技术飞速发展,网速已不再是传输的瓶颈,UDP协议以其简单、传输快的优势,在越来越多场景下取代了TCP,如网页浏览、流媒体、实时游戏、物联网。

1,网速的提升给UDP稳定性提供可靠网络保障

CDN服务商Akamai(NASDAQ: AKAM)报告从2008年到2015年7年时间,各个国家网络平均速率由1.5Mbps提升为5.1Mbps,网速提升近4倍。网络环境变好,网络传输的延迟、稳定性也随之改善,UDP的丢包率低于5%,如果再使用应用层重传,能够完全确保传输的可靠性。

2,对比测试结果UDP性能优于TCP

为了提升浏览速度,Google基于TCP提出了SPDY协议以及HTTP/2。Google在Chrome上实验基于UDP的QUIC协议,传输速率减少到100ms以内。

图片描述

Google采用QUIC后连接速率能有效提升75%。
Google搜索采用QUIC后页面加载性能提升3%。
YouTube采用QUIC后重新缓冲次数减少了30%。

3, TCP设计过于冗余,速度难以进一步提升

TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程以及重传策略。由于TCP内置在系统协议栈中,极难对其进行改进。

图片描述

4, UDP协议以其简单、传输快的优势,在越来越多场景下取代了TCP

4.1 网页浏览

使用UDP协议有三个优点 :

  • 能够对握手过程进行精简,减少网络通信往返次数;

  • 能够对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的主导地位。

相关 [udp tcp] 推荐:

使用 iptables 透明代理 TCP 与 UDP

- - 依云's Blog
本文来自 依云's Blog,转载请注明. 很早之前,我在 《Linux「真」全局 HTTP 代理方案》中介绍了 redsocks 方案. 不过它只处理了 TCP,并没有处理 UDP,DNS 也是采用强制 TCP 的方式来处理的,再加上它本身还要将请求转发到真正的代理客户端,延迟比较高. 然后,还可以结合 Wi-Fi 分享 或者 网络命令空间,玩点更有趣的.

推荐一些socket工具,TCP、UDP调试、抓包工具

- - IT技术博客大学习
标签:   socket   抓包.    还记得我在很久很久以前和大家推荐的 Fiddler和 Charles debugger么. 他们都是HTTP的神器级调试工具,非常非常的好用. 好工具能让你事半功倍,基本上,我是属于彻头彻尾的工具控. 号称高级开发框架,“目标是向Java框架、Rails On Ruby、Python Django Pylons等一流框架发起挑战”的一种以socket方式运行的PHP框架.

为什么UDP有时比TCP更有优势

- - SegmentFault 最新的文章
野狗科技嵌入式工程师,曾在TP-Link从事相关工作,在嵌入式研究上经验丰富. 野狗官博: https://blog.wilddog.com/. 野狗官网: https://www.wilddog.com/. 公众订阅号:wilddogbaas. 随着网络技术飞速发展,网速已不再是传输的瓶颈,UDP协议以其简单、传输快的优势,在越来越多场景下取代了TCP,如网页浏览、流媒体、实时游戏、物联网.

GitHub - cnlh/nps: 一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发,支持内网http代理、内网socks5代理,同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理,集成多用户模式。

- -
nps是一款轻量级、高性能、功能强大的. tcp、udp流量转发,可支持任何. tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还. 支持内网http代理、内网socks5代理、. p2p等,并带有功能强大的web管理端. 做微信公众号开发、小程序开发等----> 域名代理模式.

tcp/ip调优

- Lucseeker - 在路上
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;.

NAT穿透(UDP打洞) - heaventouch - 博客园

- -
1、NAT(Network Address Translator)介绍. NAT有两大类,基本NAT和NAPT. 静态NAT:一个公网IP对应一个内部IP,一对一转换. 动态NAT:N个公网IP对应M个内部IP,不固定的一对一转换关系. 现在基本使用这种,又分为对称和锥型NAT. 锥型NAT,有完全锥型、受限制锥型、端口受限制锥型三种:.

浅谈TCP优化

- - 火丁笔记
很多人常常对 TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱. Ilya Grigorik 在「 High Performance Browser Networking」中做了很多细致的描述,让人读起来醍醐灌顶,我大概总结了一下,以期更加通俗易懂. 传输数据的时候,如果发送方传输的数据量超过了接收方的处理能力,那么接收方会出现丢包.

TCP报文结构

- - 互联网 - ITeye博客
一、TCP报文结构如下:.  固定首部长度为20字节,可变部分0~40字节,各字段解释:. source port number:源端口,16bits,范围0~65525. target port number:目的端口,16bits,范围同上. sequence number:数据序号,32bits,TCP 连接中传送的数据流中的每一个字节都编上一个序号.

TCP 状态变化

- - 互联网 - ITeye博客
关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况. 前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接. 将关闭部分的状态转移摘出来,就得到了下图:. 通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状态呢.

UDPonNAT—— 一个UDP代理,能让普通的UDP应用跨越NAT网络设备

- 19GHz - iGFW
UDPonNAT是一个UDP代理,它能让普通的UDP应用跨越NAT网络设备. UDPonNAT使用Python编写,遵守GPL协议发布,可运行的平台包括Windows/Linux/Unix等. UDPonNAT有什么用途:. 普通的UDP应用大多具有如下的工作方式:. Server运行后,UDP服务被绑定到一个固定的IP:Port上,等待来自 Client的UDP数据包并响应.