QUIC简单介绍

QUIC简单介绍

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

QUIC,即Quick UDP Internet Connection,类似于SPDY,相同也是由Google公司在现有已存协议之上进行了扩展设计,而旨在降低网络延迟。之前我曾介绍过SPDY的相关信息,SPDY工作在应用层,而这里的QUIC工作在传输层。尽管QUIC的名字暗示着它类似于一个被改动过的UDP协议,但它的目标却是优化或替换那些须要使用面向链接的应用程序中所採用的TCP协议。

由于光速不变,并且抛开网络繁忙这些额外总体因素(由于我们这里考虑的是局部,要做的目标也是局部优化,因此总体因素属于更上一层的研究),那么在网络上,随意确定两端之间的往返时延RTTs(round trip times)基本上是固定的,因此,降低单个连接网络延迟的唯一办法就是让建立一条连接所需耗费的RTTs个数尽量的少。从这个需求能够看出,对于TCP协议本身而言,已经非常难做到相应的优化了,一方面是由于TCP所要求的握手协议、拥塞控制等固定了其所必须的RTTs个数,而还有一方面是由于TCP实现于操作系统协议栈内,要改变实际用户的操作系统必然是相当难的。

QUIC尝试解决那些SPDY无法涵盖的问题点。首先是TCP对头堵塞,其次是TCP拥塞阀门堵塞,也就是这两个点导致的SPDY优势无法充分发挥。这非常好理解,我们知道SPDY是跑在TCP协议之上的,假设瓶颈在TCP这一层,那么上层做再多的优化都是白搭。

另外,SPDY採用的SSL/TLS也会带来两个性能问题:1,恢复已断的开会话将引进一个额外的握手,而这纯粹仅仅是SSL/TLS协议的设计如此,并不是安全或其它什么特别的原因。2,对历史数据包的解决须要按顺序进行,这将导致延迟数据包所带来的延迟影响更大。因此,QUIC一開始就被设计有类似于TLS加密这种功能,从而避免对SSL/TLS的使用,降低相应的开销。

在此之前,Googleproject师已经针对这些详细问题提出了一些解决方式。比方TCP Fast Open(TFO)可用于降低连接到曾经已经訪问过的同样server的RTTs。QUIC揉合了这些旧解决方式,以及一些新的方案,用于重点解决一个应用场景,即从同一台server,利用携带多个数据流的TLS加密连接数据传输的Web应用程序服务。

简单来看,QUIC的目标是在UDP协议之上提供一种可建立面向链接的服务。嗯,听上去不错,尽管我对详细细节也是茫然不清,但貌似看懂了它的意思是想针对详细的场景,结合传统TCP和UDP协议两者各自的长处,合二为一。

http://blog.chromium.org/2013/06/experimenting-with-quic.html

http://lwn.net/Articles/558826/

转载请保留地址:http://lenky.info/archives/2013/08/06/2337 或 http://lenky.info/?p=2337

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117934.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月16日 下午2:00
下一篇 2021年12月16日 下午3:00


相关推荐

  • Mysql清空表中数据「建议收藏」

    Mysql清空表中数据「建议收藏」常用的清空数据表的SQL语句有如下两种deletefrom表名;truncatetable表名第一种方法是删除表中数据且主键ID是继续顺序排下去第二种方法是彻底清空表中数据把数据结构恢复至刚建表的时候数据全部清空从性能上讲测试了三千条数据deletefromtable比truncatetable表名效率要慢上一点。truncate清除数…

    2022年6月2日
    39
  • hackbar 使用教程_HackMan:打造Chrome下的HackBar !「建议收藏」

    hackbar 使用教程_HackMan:打造Chrome下的HackBar !「建议收藏」本Chrome插件基于PostMan插件二次开发,感谢作者。请不要说闲的JJ疼,都有了HackBar为毛还要在造轮子……我比较喜欢Chrome的API,就写了由于Chrome自身限制,无法做成想Hackbar一样。由于二次开发,面向的用户不一样,就改名为HackMan版权当然还是作者的,勿怪!功能说明左边栏为历史记录和收藏请求顶栏分别为普通模式请求和BasicAuth,DigestAuth,…

    2022年5月31日
    355
  • bytebuf池_图文分析ByteBuf是什么

    bytebuf池_图文分析ByteBuf是什么ByteBuf 是什么 ByteBuf 是 Netty 中非常重要的一个组件 他就像物流公司的运输工具 卡车 火车 甚至是飞机 而物流公司靠什么盈利 就是靠运输货物 可想而知 ByteBuf 在 Netty 中是多么的重要 没有了 ByteBuf Netty 就失去了灵魂 其他所有的都将变得毫无意义 ByteBuf 是由 Byte 和 Buffer 两个词组合成的一个词 但是因为 JDK 中已经有了一个 ByteBuffer 并且使用

    2026年3月17日
    2
  • android_使用ViewPager和Fragment实现滑动导航

    ViewPage是android-support-v4.jar包提供的用于页面滑动的库.这里没有将整个实现过程记录,只是把知识点摘出来单独解释.可参照代码自己实现.1.在xml布局文件中添加android.support.v4.view.ViewPager容器及显示导航所用标签android.support.v4.view.PagerTitleStrip,如我添加的xml内容如下

    2022年3月9日
    44
  • session.setAttribute()方法是做什么用的?

    session.setAttribute()方法是做什么用的?session.setAttribute(“sessionName”,Object);用来设置session值的,sessionName是名称,object是你要保存的对象。session.getAttribute(“sessionName”);用来得到对应名称的session值,即得到object对象,注意需要进行类型转换!session.setAttribute(“xy

    2022年10月17日
    4
  • mysql client library_mysqlclient[通俗易懂]

    mysql client library_mysqlclient[通俗易懂]linux下用C语言写MySQL程序,用如下命令编译时出错:[xitong@localhostmysql]$gcc-omysqlmysql.c-lmysqlclient错误如下:/usr/bin/ld:cannotfind-lmysqlclientcollect2:ld返回1解决方法:用locate命令查找mysqlclient所在目录,如下所示:[xitong@local…

    2025年8月4日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号