• 月饼
    2018-06-20
    既然quic这么牛逼了干嘛还要tcp?
     6
     56
  • 我那么圆
    2019-01-29
    http1.0的队首阻塞

    对于同一个tcp连接,所有的http1.0请求放入队列中,只有前一个请求的响应收到了,然后才能发送下一个请求。

    可见,http1.0的队首组塞发生在客户端。

    3 http1.1的队首阻塞

    对于同一个tcp连接,http1.1允许一次发送多个http1.1请求,也就是说,不必等前一个响应收到,就可以发送下一个请求,这样就解决了http1.0的客户端的队首阻塞。但是,http1.1规定,服务器端的响应的发送要根据请求被接收的顺序排队,也就是说,先接收到的请求的响应也要先发送。这样造成的问题是,如果最先收到的请求的处理时间长的话,响应生成也慢,就会阻塞已经生成了的响应的发送。也会造成队首阻塞。

    可见,http1.1的队首阻塞发生在服务器端。

    4 http2是怎样解决队首阻塞的

    http2无论在客户端还是在服务器端都不需要排队,在同一个tcp连接上,有多个stream,由各个stream发送和接收http请求,各个steam相互独立,互不阻塞。

    只要tcp没有人在用那么就可以发送已经生成的requst或者reponse的数据,在两端都不用等,从而彻底解决了http协议层面的队首阻塞问题。
    展开
     3
     47
  • 鲍勃
    2018-06-18
    我是做底层的,传输层还是基本能hold住,现在有点扛不住了😂
     3
     27
  • 云学
    2018-06-19
    http2.0的多路复用和4g协议的多harq并发类似,quick的关键改进是把Ack的含义给提纯净了,表达的含义是收到了包,而不是tcp的"期望包"
    
     19
  • 起风了001
    2019-05-21
    以前一直不是很确定Keep-Alive的作用, 今天结合tcp的知识, 终于是彻底搞清楚了. 其实就是浏览器访问服务端之后, 一个http请求的底层是tcp连接, tcp连接要经过三次握手之后,开始传输数据, 而且因为http设置了keep-alive,所以单次http请求完成之后这条tcp连接并不会断开, 而是可以让下一次http请求直接使用.当然keep-alive肯定也有timeout, 超时关闭.

    作者回复: 赞

     1
     13
  • 墨萧
    2018-06-18
    每次http都要经过TCP的三次握手四次挥手吗

    作者回复: keepalive就不用

    
     11
  • 田豪杰
    2018-07-13
    一窍不通,云里雾里
    
     10
  • Summer___J
    2018-06-28
    老师,目前QUIC协议的典型应用场景是什么?这个协议听上去比TCP智能,随着技术演进、这个协议已经融合到TCP里面了还是仍然是一个独立的协议?
    
     8
  • 传说中的风一样
    2019-04-23
    cache control部分讲错了,max–age不是这么用的

    作者回复: 这里忘了说一下客户端的cache-control机制了,一个是客户端是否本地缓存过期。这里重点强调的类似varnish缓存服务器的行为

    
     5
  • 花仙子
    2019-02-11
    UDP不用保持连接状态,不用建立更多socket,是不是就说服务端只能凭借客户端的源端口号来判定是客户端哪个应用发送的,是吗?

    作者回复: 是的

    
     5
  • twelve
    2018-09-17
    QUIC说是基于UDP,无连接的,但是老师又说到是面向连接的,看的晕乎乎的。。

    作者回复: 讲tcp的时候讲了,所谓的连接其实是两边的状态,状态如果不在udp层维护,就可以在应用层维护

    
     4
  • 张张张 💭
    2018-06-29
    那个keepalive不是很理解,如果是这种模式,什么时候连接断开呢,怎么判断的,比如我访问淘宝首页,有很多http请求,是每个请求独立维护一个keepalive吗
     1
     4
  • skye
    2018-06-20
    “一前一后,前面 stream 2 的帧没有收到,后面 stream 1 的帧也会因此阻塞。”这个和队首阻塞的区别是啥,不太明白?

    作者回复: 一个是http层的,一个是tcp层的

     1
     4
  • caohuan
    2019-03-04
    本篇所得:1.应用层 http1.0和2.0的使用,url通过DNS转化为IP地址,HTTP是基于TCP协议,TCP需要三次握手 进行连接,四次挥手 断开连接,而QUIC基于 UDP连接,不需要三次握手,节省资源,提高了性能和效率;
    2.http 包括 请求行 、首部、正文实体,请求行 包含 方法、SP、URL、版本,首部 包含 首部字段名、SP、字段值、cr/if;
    3.http 很复杂,它基于TCP协议,它包含 get获取资源,put 传输 修改的信息给服务器,post发送 新建的资源 给服务器,delete 删除资源;
    4.http1.0为串联计算,http2.0可以并联计算,http2.0可以通过 头压缩 分帧、二进制编码、多路复用 来提示性能。
    5.QUIC协议基于UDP自定义的类型,TCP的连接、重试、多路复用、流量控制 提升性能,对应四个机制,分别为 1)自定义连接机制 2)自定义重传机制 3)无阻塞多路复用 4)自定义流量控制。

    回答老师的问题:第一个问题为提高性能,听老师后面的解答,第二个问题:输送敏感数据 比如银行信息 可以用 加密技术,公钥和私钥 保证安全性。
    展开
    
     3
  • pain
    2019-01-25
    怎么说呢,感觉听了跟看书效果一样的,比较晦涩。因为平时接触比较多的就是 tcp http ,结果听了感觉对实际开发好像帮助不大,因为都是一个个知识点的感觉,像准备考试。希望能结合实际应用场景,讲解。

    作者回复: 太深入就不适合听了,所以定位还是入门

     1
     3
  • 雾满杨溪
    2018-06-20
    http和socket之间有什么关系?
     1
     3
  • 楚人
    2018-06-18
    第13和14节有些难度,需要多看多听几遍
    
     3
  • heliang
    2019-04-12
    http2.0 并行传输同一个请求不同stream的时候,如果“”前面 stream 2 的帧没有收到,后面 stream1也会阻塞",是阻塞在tcp重组上吗

    作者回复: 是的

    
     2
  • - -
    2019-02-05
    “当其中一个数据包遇到问题,TCP 连接需要等待这个包完成重传之后才能继续进行。虽然 HTTP 2.0 通过多个 stream,使得逻辑上一个 TCP 连接上的并行内容,进行多路数据的传输,然而这中间并没有关联的数据。一前一后,前面 stream 2 的帧没有收到,后面 stream 1 的帧也会因此阻塞。” 请问这一段怎么理解?感觉和前面所述“http2.0的乱序传输支持”是不是有些矛盾?

    作者回复: 两层,一个是http层,一个是tcp层

    
     2
  • 陆培尔
    2019-01-16
    QUIC协议自定义了连接机制、重传机制和滑动窗口协议,感觉这些都是原来tcp干的活,那为啥QUIC是属于应用层协议而不是传输层呢?应该把QUIC协议加入内核的网络栈而不是做在chrome这样的用户态应用程序里面吧

    作者回复: 基于UDP

     2
     2
我们在线,来聊聊吧