• 想个昵称好难
    2019-05-09
    老师您好
        有个地方想请教下您,在《learinghttp2》这本书里面,关于stream是这么说的“You can think of a stream as a series of frames making up an individual HTTP request/response pair on a connection. When a client wants to make a request it initiates a new stream. ” RFC文档里面也说了“Stream identifiers cannot be reused." , 所以我怀疑PPT的图画的有点问题,一个stream代表的就是一个request/response pair,2个message,比如多路复用的那页PPT,蓝色代表一个request或者response,stream N上面有多个request或者response的篮框,如果我理解错了,还请老师指点,谢谢
    展开

    作者回复: 你可以这么理解:
    1、规范中,允许1个stream上跑很多message。
    2、当前浏览器的实现里,为了多路复用,每个request/response都使用了独立的stream,这是规范中的一种场景。
    3、RFC中的这句话,是说已经关闭的Stream的id不能被复用,正在使用的stream上,可以发送多个message(其实关注的是Frame的双向传递)。
    我的《Web协议详解与抓包实战》课第3部分有十多节课在讲HTTP2,比较详细,可以关注下

    
     1
  • 亚马逊森林
    2019-03-13
    老师,从100讲NGINX缓存开始,内容深度感觉已经完全脱离我的工作和实践范围,我觉得花功夫去强行学习,还不如花时间去回头加强前面的基础部分,不知这样的学习方法对不对呢

    作者回复: 可以的。
    第四部分需要对服务器开发方法有很深的理解,特别是对HTTP协议一定要有深入认识,比如HTTP协议为什么这么设计,REST架构的原则和约束。第五部分需要对Linux内核设计有一些认识。

    
     1
  • 发哥
    2019-08-24
    使用HTTP2反向代理后端耗时优于HTTP1.1吗

    作者回复: 是的,全面超出。原因请见《Web协议详解与抓包实战》第3部分第49-65课。

    
    
  • 发哥
    2019-08-24
    老师,反向代理后端使用HTTP1.1 性能和整体耗时是否还是小于HTTP2?

    作者回复: http2有2大优势 :1、多路复用;2、hpack压缩;
    这会带来巨大的性能提升,见《Web协议详解与抓包实战》第50课。

     1
    
  • 妥协
    2019-07-19
    老师有个问题想不通,多个stream跑在一个connection上,我理解的多个stream之间互不干扰,可以用来做不同的业务message。但是传输层的TCP协议滑动窗口和累计应答机制,仍然会把frame排队,比如A stream的frame虽然先到,排在它前面的B stream的frame还没到,但是序号靠前,这个时候内核也要等到B stream的frame到了之后,才能把A交给业务层处理;这种多路复用,两个stream之间还是会互相干扰呀,好像没解决问题呀,或者说,这种多路复用解决了什么问题?不知道我理解的对不对,请老师指教

    作者回复: 1、TCP Segments失序是小概率事件,尤其是长时间失序,通常都是瓶颈路由器由于缓存队列满后主动丢包所致。因此,HTTP3才要在UDP上实现,解决你所说的网络拥塞时的队头阻塞问题。
    2、在不发生长时间失序报文不到达的场景下,多路复用优势很明显,因为request/response这种模式很难把高带宽利用得好,而多路复用可以,在网络效率上也更高,包括 TCP拥塞控制避免(参见第5部分课程)和TCP握手流程避免。

    
    
  • JetChars
    2019-04-24
    大兄弟,我们在使用openresty进行反代的场景下,http2的请求好像没有执行header_filter_by_lua_block中的代码,能解答一下为什么吗

    作者回复: openresty还没有支持到http2的这个特性

    
    
  • Panda
    2019-04-08
    标头压缩 多路复用
    
    
我们在线,来聊聊吧