有句话叫做一流企业定标准、二流企业做品牌、三流企业卖技术、四流企业做产品。Google 似乎在冲着一流企业的目标迈进。去年,Google 已经从以 SPDY 为基础的 HTTP 协议 16年 来的首个更新 HTTP/2正式定稿中尝到了甜头。最近 Google 又开始考虑更进一步,用改进版的 UDP 协议 QUIC 给 web 提速。根据它近日公布的性能评估,这一融合了 UDP 与 TCP 优势的协议似乎提升效果明显。

QUIC 是 Quick UDP Internet Connection 的简称,是 Google 制定的一种基于 UDP 的低时延的互联网传输层协议。我们知道,TCP/IP 协议族是互联网的基础。其中传输层协议包括 TCP 和 UDP 协议。与 TCP 协议相比,UDP 更为轻量,但是错误校验也要少得多。这意味着 UDP 往往效率更高(不经常跟服务器端通信查看数据包是否送达或者按序),但是可靠性比不上 TCP。通常游戏、流媒体以及 VoIP 等应用均采用 UDP,而网页、邮件、远程登录等大部分的应用均采用 TCP。

Google 想到能否把这两种协议的优势结合起来,同时实现低时延和高可靠并将其应用到更高安全的协议上,于是就有了 QUIC。

以往典型的安全 TCP 连接(TCP+TLS)往往需要在发送与接收端先进行 2、3 轮的握手通信才能正式开始数据传输。而利用 QUIC 协议,如果双方此前通信过的话马上就可以对话(即便双方此前未通信过时延也只有 100 毫秒,是 TCP+TLS 用时的 1/3)。此外,QUIC 还增加了拥塞控制和自动重传等功能,所以可靠性上要比 UDP 更高。

从目标来看,QUIC 跟 SPDY(HTTP/2 基础)很多方面是类似的,但是后者仍然基于 TCP,所以仍然会存在部分相同的时延问题。

不过这样也许你会问为什么 Google 不干脆改进 TCP?根据 Google 的解释,不这么做的原因是 TCP 往往直接内置到了操作系统内核当中,这是 Google 所无法控制的。所以他们就拿 UDP 改良版来开刀,以期更快地测试性能改进效果。

Google 从去年开始就已经在 Chrome 浏览器上进行了实验,实际上目前 Chrome 到 Google 服务器的请求当中大概有一半已经在采用 QUIC 协议。数据表明 75%的连接均可利用 QUIC 的优势,哪怕预先建立的优化连接(Google 搜索)采用 QUIC 后页面加载性能仍然能提高 3 个百分点。而时延严重的一些 web 应用,在采用 QUIC 后的改进效果则要更加明显。比如有用户报告 YouTube 重新缓冲次数减少了 30%。

Google 希望 QUIC 的性能得当证明后能够移植到 TCP 和 TLS 上面,称未来打算将 HTTP2-over-QUIC 作为新的协议提交给 IETF。但是这显然需要与 IETF 的配合以及长期努力。这一套路跟 SPDY 很像,都是以 Chrome 为跳板展现协议原型和效果,然后再提出作为协议草案,但结果尚待观察。

Google 打算用 QUIC 协议替代 TCP/UDP的更多相关文章

  1. 网络协议HTTP TCP/UDP 浏览器缓存 Restful(十)

    一 TCP网络协议 1 建立TCP连接:三次握手原则 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分.客户端把这段连接的序号设定为随机数 A. 服务器端应当为一个合法的SY ...

  2. 31.网络协议介绍tcp/udp

    网络协议 TCP:网络中传输数据的协议,打电话 解决了我可能在网络中找不到别人(数据无法传输到) 保证数据传输的稳定性,可靠性 保证数据的安全性,完整性 对方要有响应 尝试重新发送 UDP:传输数据的 ...

  3. 传输层协议之TCP/UDP

    1.UDP UDP协议是面向无连接的,即不需要在正式传递数据前先链接双方,UDP协议只是数据报文的搬运工,不保证有序且不丢失的传递到对端,且UDP协议无任何控制流量的算法,UDP相对于TCP更加轻便. ...

  4. Google将向IETF标准提交QUIC协议提案

    Google近期宣布,他们将向IETF提交实验性传输层网络协议QUIC的提案.此外,Google已经给出了QUIC协议优化页面加载时间的第一手数据. 自从2013年引入QUIC以来,Google一直在 ...

  5. IP封包协议头/TCP协议头/TCP3次握手/TCP4次挥手/UDP协议头/ICMP协议头/HTTP协议(请求报文和响应报文)/IP地址/子网掩码(划分子网)/路由概念/MAC封包格式

    IP协议头IP包头格式: 1.版本号:4个bit,用来标识IP版本号.这个4位字段的值设置为二进制的0100表示IPv4,设置为0110表示IPv6.目前使用的IP协议版本号是4. 2.首部长度:4个 ...

  6. Java 网络编程(二) 两类传输协议:TCP UDP

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951841.html 两类传输协议:TCP,UDP TCP TCP是Transfer C ...

  7. 网络协议-网络分层、TCP/UDP、TCP三次握手和四次挥手

    网络的五层划分是什么? 应用层,常见协议:HTTP.FTP 传输层,常见协议:TCP.UDP 网络层,常见协议:IP 链路层 物理层 TCP 和 UDP 的区别是什么 TCP/UDP 都属于传输层的协 ...

  8. 运输层协议:TCP和UDP

    运输层简介 运输层的通信实体不再是主机,而是主机中的进程.运输层的通信是一台主机的进程和另一台主机的进程进行数据交换. 运输层作用 运输层向上层的应用层提供通信服务 运输层为进程提供端到端的通信 运输 ...

  9. TCP/UDP端口列表

    http://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8 TCP/UDP端口列表     本条目可通过翻译外语维 ...

随机推荐

  1. delphi基础篇之项目文件

    delphi基础篇之项目文件   program Teacher2018; uses   Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pa ...

  2. java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

    :: - [localhost-startStop-] INFO - Root WebApplicationContext: initialization started -- :: - [local ...

  3. 拾遗:不用使 sizeof 获取数组大小

    ... #include <stdio.h> #include <unistd.h> int main(void) { ] = {}; size_t num = () - (i ...

  4. 3.4_springboot2.x整合spring Data Elasticsearch

    Spring Data Elasticsearch 是spring data对elasticsearch进行的封装. 这里有两种方式操作elasticsearch: 1.使用Elasticsearch ...

  5. 批量调用百度地图API获取地址经纬度坐标

    1 申请密匙 注册百度地图API:http://lbsyun.baidu.com/index.php?title=webapi 点击左侧 “获取密匙” ,经过填写个人信息.邮箱注册等,成功之后在开放平 ...

  6. SpringBatch批处理框架

    1.前言:本博客是对于刘相SpringBatch批处理框架的学习 1.1.参考网站:https://docs.spring.io/spring-batch/4.2.x/reference/html/i ...

  7. 期望dp+高斯消元+bfs——hdu4418

    高斯消元又弄了半天.. 注意只要能建立矩阵,那就必定有解,所以高斯消元里可以直接return 1 #include<bits/stdc++.h> using namespace std; ...

  8. spring 家族

    spring家族:spring.springMVC .springBoots springCloud

  9. QQ聊天机器人 Delphi代码

    QQ聊天机器人     前几日,看到杂志上有一篇关于开发QQ聊天机器人的文章.谈到了对QQ循环发送消息内容,感觉倒也很好玩,于是拿起Delphi开始了我的QQ聊天机器人之路. 首先要明白自己要做什么, ...

  10. java.sql.SQLSyntaxErrorException: ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 BINARY

    2019-07-24 17:24:35 下午 [Thread: http-8080-4][ Class:net.sf.ehcache.store.disk.Segment Method: net.sf ...