互联网工程任务组(IETF)官员透露,HTTP-over-QUIC实验协议将重命名为HTTP/3,并有望成为HTTP协议的第三个正式版本。
Quic(QuickUDP Internet Connections)是一种新的传输方式,与TCP相比,它减少了延迟。表面上,Quic非常类似于在UDP上实现的TCP+TLS+HTTP/2。由于TCP是在操作系统内核和中间件固件中实现的,因此对TCP进行重大更改几乎是不可能的。然而,由于Quic是构建在UDP之上的,所以它没有受到这样的限制
UDP协议被广泛用到对网络数据传输的实时性很高,对数据准确性不是非常高的场合,并且如今网络物理介质的高速提升(光纤)降低了数据丢包的机率,并且当网络状况很好的情况下,UDP的缺点又可以很好的大程度上的被改善。因此UDP协议发展前途无量。 所以,作为新一代HTTP协议的底层,要不要了解下?
UDP是User Datagram Protocol的缩写,是一种用户数据报协议,又称为用户数据报文协议。区别于TCP是面向连接的协议,UDP是一个简单的面向数据报的传输层协议,UDP的发起和接受是不需要经过连接的,仅仅只需要发送在对应端口上进行监听接受即可,不需要两个客户端一定是连接的
由于UDP的速度快,所以适合于在线视频媒体,电话视频聊天,电视广播,多人在线游戏这些项目
UDP传输不可靠的原因有五点:
QQ采用的通信协议以UDP为主,辅以TCP协议。QQ并不是完全基于UDP实现,比如在使用QQ进行文件传输等活动的时候,就会使用TCP作为可靠传输的保证。
由于QQ的服务器设计容量是海量级的应用,一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用UDP协议与客户端进行通讯才能保证这种超大规模的服务。
QQ客户端之间的消息传送也采用了UDP模式,因为国内的网络环境非常复杂,而且很多用户采用的方式是通过代理服务器共享一条线路上网的方式,在这些复杂的情况下,客户端之间能彼此建立起来TCP连接的概率较小,严重影响传送信息的效率。而UDP包能够穿透大部分的代理服务器,因此QQ选择了UDP作为客户之间的主要通信协议。
采用UDP协议,通过服务器中转方式。大家都知道,UDP协议是不可靠协议,它只管发送,不管对方是否收到的,但它的传输很高效。但是,作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。
之所以当时应用UDP,最本质上UDP的优势还是带宽的利用。这一切要回归到99~03年的网络状况,当时网络的特点就是接入带宽很窄而且抖动特别厉害。所谓抖动可能是多方面的,例如延时突发性地暴增、也有可能是由于路由层面的变化突然导致路由黑洞,还各种等等等等的问题。TCP因为拥塞控制、保证有序等原因,在这种网络状态上对带宽的利用是非常低的。而且因为网络抖动的原因,应用层心跳超时,应用层主动断掉socket之后TCP需要三次握手才能重新建立链接,一旦出现频繁的小抖动就会使得带宽利用更低。而等待四次挥手的时间,也会占用服务器上宝贵的资源。
总结来说,当网络差到一定程度了,TCP的优势反而会成为劣势。