• 【HTTP】614- HTTP/3原理与实践

    2015 年 HTTP/2 标准发表后,大多数主流浏览器也于当年年底支持该标准。不知不觉的 HTTP 已经发展到了第三代,鹅厂也紧跟技术潮流,很多项目也在逐渐使用 HTTP/3。本文基于 QQ 兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。不过 SPDY 的开发组全程参与了 HTTP/2 的制定过程,参考了 SPDY 的很多设计,所以我们一般认为 SPDY 就是 HTTP/2 的前身。后经 提议,互联网工程任务组正式将基于 QUIC 协议的 HTTP 重命名为 HTTP/3。同时 QUIC 也整合了 TCP、TLS 和 HTTP/2 的优点,并加以优化。那 QUIC 和 HTTP/3 什么关系呢?
  • HTTP/3 来了 !

    本文基于兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。随着网络技术的发展,1999 年设计的 HTTP/1.1 已经不能满足需求,所以 Google 在 2009 年设计了基于 TCP 的 SPDY,后来 SPDY 的开发组推动 SPDY 成为正式标准,不过最终没能通过。不过 SPDY 的开发组全程参与了 HTTP/2 的制定过程,参考了 SPDY 的很多设计,所以我们一般认为 SPDY 就是 HTTP/2 的前身。无论 SPDY 还是 HTTP/2,都是基于 TCP 的,TCP 与 UDP 相比效率上存在天然的劣势,所以 2013 年 Google 开发了基于 UDP 的名为 QUIC 的传输层协议,QUIC 全称 Quick UDP Internet Connections,希望它能替代 TCP,使得网页传输更加高效。同时 QUIC 也整合了 TCP、TLS 和 HTTP/2 的优点,并加以优化。那 QUIC 和 HTTP/3 什么关系呢?
  • 面试|关于 TCP/IP,必知必会的十个问题

    本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。TCP/IP协议族按照层次由上到下,层层包装。上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。关于拥塞控制,流量控制,是TCP的重点,后面讲解。
  • HTTP/3 未来可期?

    本文基于兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。随着网络技术的发展,1999 年设计的 HTTP/1.1 已经不能满足需求,所以 Google 在 2009 年设计了基于 TCP 的 SPDY,后来 SPDY 的开发组推动 SPDY 成为正式标准,不过最终没能通过。无论 SPDY 还是 HTTP/2,都是基于 TCP 的,TCP 与 UDP 相比效率上存在天然的劣势,所以 2013 年 Google 开发了基于 UDP 的名为 QUIC 的传输层协议,QUIC 全称 Quick UDP Internet Connections,希望它能替代 TCP,使得网页传输更加高效。后经提议,互联网工程任务组正式将基于 QUIC 协议的 HTTP 重命名为 HTTP/3。同时 QUIC 也整合了 TCP、TLS 和 HTTP/2 的优点,并加以优化。那 QUIC 和 HTTP/3 什么关系呢?
  • 常见 TCP 拥塞避免算法浏览(下)

    RTT 和 RTprop 关系如下:η 是其它因素导致的 noise 延迟,包括接收端延迟 ack 等原因导致的延迟。η 一定是正数,RTT 无论如何不可能低于 RTprop,所以可以在一个时间窗口 Wr 内监控最小的 RTT 的最小值,认为就是近似为 RTprop。每收到一个 Ack 一方面是知道数据延迟 RTT 是多少,再有送达的数据量是多少。此时链路上 Bottleneck 在发送端,由发送端控制发送速度。之后再保持 inflights 等于 BDP 稳定数个 RTprop 后再次开始增周期。比如链路上带宽出现减少,链路上出现堆积,保持发送速度或继续进行 ProbeBW 的话会让链路上堆积更加严重,RTT 上升。所以 RTprop 一直不会被更新。
  • 常见 TCP 拥塞避免算法浏览(上)

    拥塞避免用于避免因为发送者发送数据过快导致链路上因为拥塞而出现丢包。TCP 连接建立后先经过 Slow Start 阶段,每收到一个 ACK,CWND 翻倍,数据发送率以指数形式增长,等出现丢包,或达到 ssthresh,或到达接收方 RWND 限制后进入 Congestion Avoidance 阶段。图片来源于[4]实际发送速率乘以延迟得到的值越接近 BDP 说明算法的效率越高。RenoReno 这种叫做ACK-Pacing,基于 Ack 来确认网络状况。如果能持续收到 ACK,表示网络能正常承载当前发送速率。黄色是 CWND,蓝色线是网络上队列拥塞包数。蓝色箭头表示 queue fill,绿色箭头表示 queue drain。Reno 下如果链路上 Buffer 很大出现拥塞后 RTT 也
  • 【第1944期】HTTP/3原理与实践

    不知不觉的 HTTP 已经发展到了第三代,鹅厂也紧跟技术潮流,很多项目也在逐渐使用 HTTP/3。本文基于 QQ兴趣部落接入 HTTP/3 的实践,聊一聊 HTTP/3 的原理以及业务接入的方式。HTTP/3 原理HTTP 历史在介绍 HTTP/3 之前,我们先简单看下 HTTP 的历史,了解下 HTTP/3 出现的背景。随着网络技术的发展,1999 年设计的 HTTP/1.1 已经不能满足需求,所以 Google 在 2009 年设计了基于 TCP 的 SPDY,后来 SPDY 的开发组推动 SPDY 成为正式标准,不过最终没能通过。后经提议,互联网工程任务组正式将基于 QUIC 协议的 HTTP 重命名为 HTTP/3。同时 QUIC 也整合了 TCP、TLS 和 HTTP/2 的优点,并加以优化。那 QUIC 和 HTTP/3 什么关系呢?
  • 你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了

    今天,将重点介绍 TCP 的重传机制、滑动窗口、流量控制、拥塞控制。在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。所以 TCP 针对数据包丢失的情况,会用重传机制解决。所以,快速重传的工作方式是当收到三个相同的 ACK 报文时,会在定时器过期之前,重传丢失的报文段。根据 TCP 不同的实现,以上两种情况都是有可能的。为了解决不知道该重传哪些 TCP 报文,于是就有 SACK 方法。选择性确认如果要支持 SACK,必须双方都要支持。
  • 在DropboxEdge网络上评估BBRv2

    在2017年发布的博客文章“优化web服务器以实现高吞吐量和低延迟”中,我们评估了BBRv1在我们的edge网络上的拥塞控制的效果,结果显示它非常棒:在2017年BBR实验期间桌面客户端的下载带宽自从那以后,BBRv1已经被部署到DropboxEdge网络上,我们也已经习惯了它本身存在的一些缺点。随着BBRv2的即将发布,我们决定在DropboxEdge Network上试用一下,看看它是如何处理我们的工作负载的。最后,我们可能会决定在数据中心内部部署BBRv2来支持RPC通信,但这不在本文的讨论范围内。接下来是摘要统计、Jupyter notebooks、pandas和seaborn。OTOH,至少不是xkcd样式=)这不是实验室测试这是在我们的edge网络上进行的一个真实实验。
  • 由STGW下载慢问题引发的网络传输学习之旅

    在STGW上直接访问用户的回源VIP,耗时4s+,是正常的。而TGW只做四层转发,无法感知源IP的地域信息,并且抓包也确认TGW上并没有出现大量丢包或者重传的现象。STGW是一个应用层的反向代理转发,也不会对于不同地域的cip有不同的处理逻辑。因为之前由于fullnat出现过一些类似于本例中下载慢的问题,当时定位的原因是由于STGW LD上开启了拥塞窗口缓存,在fullnat的情况下,会影响拥塞窗口缓存的准确性,导致部分请求下载慢。
  • Facebook:对比COPA 与CUBIC,BBR v1在拥塞控制及视频质量的表现

    在实际测试中,测试结果显示COPA较于常用算法CUBIC及BBR v1存在一定优势。CUBIC比较常见,也是LINUX的默认拥塞控制算法。COPA、CUBIC 和 BBR的实作方案都可以在我们的 QUIC 方法中找到。依据测试结果,我们使用RTT 测量发现 COPA 的视频延迟平均率比 CUBIC 低。P50 应用 RTT 从 499 ms 的 CUBIC 下降到 479 ms 的 COPA 和 462 ms 的 BBR,COPA 减少了 4%, BBR 减少了 8%。P90 App RTT 从 CUBIC 的 5.4 秒降至 COPA 的 3.9 秒,COPA 减少了 27%,而 BBR 的缩减开始减少。BBR 将 P10 改进了 4.8%,而 COPA 提高了 6.2%。BBR 将 P50 良件提高了 5.5%,而 COPA 提高了 16.3%。与之相比,P95 的降低幅度更大,BBR 将其降低了 16%,而 COPA 将其降低的幅度高达 45%。
  • 一文理解TCP、UDP协议及两者的区别

    即TCP 协议为了更容易传送大数据才把数据分割, 而且 TCP 协议能够确认数据最终是否送达到对方。若在握手过程中某个阶段莫名中断, TCP 协议会再次以相同的顺序发送相同的数据包。四次挥手由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。先进行关闭的一方将执行主动关闭,而另一方被动关闭。服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。TCP协议是可靠的、面向连接的。HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连
  • 网络协议常见面试题集锦

    A 共发送了两个连接请求报文段,其中第一个丢失,第二个到达了 B。6)TCP 协议如何来保证传输的可靠性答:TCP 提供一种面向连接的、可靠的字节流服务。在一个 TCP 连接中,仅有两方进行彼此通信;而字节流服务意味着两个应用程序通过 TCP 链接交换 8 bit 字节构成的字节流,TCP 不在字节流中插入记录标识符。这个确认不是立即发送,通常将推迟几分之一秒;超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。TCP使用的流量控制协议是可变大小的滑动窗口协议。
  • BBR及其在实时音视频领域的应用

    本次我分享的主题是BBR及其在实时音视频领域的应用,BBR全称是Bottleneck Bandwidth and RTT,它是谷歌在2016年推出的全新网络拥塞控制算法,在此之后大家对于拥塞控制的关注度逐渐提高,越来越多的新算法被推出。本次分享的内容主要包括BBR算法的基本原理以及BBR算法如何应用在网易云信的实时音视频产品中。整个BBR的拥塞控制在启动之后,最终是在Drain和ProbeBW阶段之间切换。
  • 实时音视频流媒体传输的思考和实践

    本文来自即构科技技术副总裁冼牛在LiveVideoStackCon 2019上海大会的演讲,详细介绍了即构科技在实时流媒体传输协议选择,抖动处理,拥塞控制等多方面的实践。文 /冼牛整理 /LiveVideoStack大家好,我是冼牛,此次分享和实时音视频、流媒传输的思考与实践有关。主要会为大家介绍实时音视频的超低延迟架构并简要阐述实时视频调度系统,同时结合拥塞控制策略和信道纠错策略,进一步探索解决网络延迟的最优方法。其中负载均衡、就“近”接入、质量评估和动态路由这四点属于调度方面的问题,算法流控属于流媒体传输方面的问题。
  • 实时视频传输中的BBR拥塞控制

    在复杂的网络环境中,想要实现实时视频传输,拥塞控制算法是尤为重点的一环。本文整理自学霸君高级技术总监袁荣喜在LiveVideoStackCon 2019上海大会中的分享,详细介绍了BBR拥塞控制算法在实时视频传输中新的实践以及优缺点。文 / 袁荣喜整理 / LiveVideoStack大家好,我是来自学霸君的袁荣喜,本次分享内容的核心是BBR在实时视频传输中的实践。BBR其实是基于TCP的一种拥塞算法,在实时音视频中的运用也是一种全新的尝试,接下来我将会为大家逐一介绍这种尝试所带来的优缺点。1. 传输与拥塞...
  • TCP 的那些事儿(下)

    这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇。上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资源,所以,不适合在厕所中阅读。 TCP的RTT算法 从前面的TCP重传机制我们知道Timeout的设置对于重传非常重要。 设长了,...
公告

《从零开始开发BBS》课程上线啦,快来跟着我一步步搭建属于你的BBS吧。

课程地址:https://www.shiyanlou.com/courses/1436
9折优惠邀请码: ZHwfIjb1

该课程会带领大家一步步的了解并熟悉Go语言开发,如果你是一个Go语言初学者,或者正准备学习Go语言,那么这个课程非常适合你。如果你熟练掌握了本课程中的知识点,相信你就已经入门Go语言开发,并能胜任日常的开发工作了。