- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阿里巴巴HTTP2实践及无 线通信协议的演进之路更快、更省流量的标准通信HTTP2HTTP/2概况Application(HTTP/2) Binary Framing POST /upload HTTP/1.1 Host:Content-Type:application/json Content-Length:16TLSQUIC UDP SlightSSLTCP IP {“msg”,”taobao”}HEADERS Frame DATA Frame协议协商?二进制协议?ALPN(TLS)或protocol upgrade(明文)?流控? 连接序言?会话协商会话级别 &连接级别??双工通信多路复用?Settings Frame?主动下行?头部压缩?多个请求并发?HPACK?HTTP/2 Frames http/2的公共头部Bit0-78-1516-2324-310LengthType32Flags40RStreamIdentifier…FramePayload帧格式用途headers存放头部数据,用以打开一个streamcontinuation延续之前未发送完毕的包头信息data存放应用数据rst_stream异常关闭一个streamsettings参数协商ping心跳包,用以刺探连接是否存活goaway发送端优雅关闭window_update流控,分为stream和connection两个级别http/2的帧格式协商参数含义SETTINGS_HEADER_TABLE_SIZE用于解压的头部动态压缩表最大大小,默认4096SETTINGS_ENABLE_PUSH用于禁止或启用服务端推送SETTINGS_MAX_CONCURRENT_STREAMS最大并发流数,默认无限制SETTINGS_INITIAL_WINDOW_SIZE会话级别的流控的初始窗口大小,默认为65535SETTINGS_MAX_FRAME_SIZE帧的payload大小限制,默认为16384SETTINGS_MAX_HEADER_LIST_SIZEhttp/2的压缩前头部列表的最大大小,默认无限制SETTINGS帧的各参数的含义HTTP/2 WorkflowClientServerSYNSYN ACK ACK连接序言会话协商PRI * HTTP/2\r\n\r\nSM\r\n\r\n init window size header table sizeSettingswindow increment size init window size header table sizeWindow_update会话协商Settingswindow increment size :method: get :path:/index.htmlWindow_update数据交互HeadersData :status:200:content-length= 1024 !DOCTYPE html… … last stream id = 9Headers Data Goaway数据交互会话关闭FINFIN ACKHTTP/2 HPACKhttp2 HPACK安全DEFLATE压缩算法存在攻击风险压缩率通过新的算法得到进一步提升映射表经常出现或重复出现的Header用映射表的Index表示静态Huffman编码未命中映射表的Header用Huffman编码HTTP/2的效果单位:字节 1750单位:毫秒 3000http/2spdyhttp/2spd700 35022501500 75000请求包头应答包头2G3G4GWIFIhttp/2请求和应答包头的流量下降http/2请求整体提速HTTP/2的优化过程字节数 2750 2200百分比 125 1001004%48.5%35.3%1100 550 050250 31.5%动态表可协商下行huffmanspdyhttp2头部压缩分阶段优化HTTP/2的实现Nginx Patch小包合并?无线下的调优连接序言/settings/headers合并成一个TCP包?原生?上下行均支持静态表流控??会话级别下行流控上行支持动态表和Huffman编码采用默认的动态表大小,无协商???扩展?下行动态表和Huffman编码上下行动态表大小协商??网络库SDK实现HTTP/2?SDK支持复用网络库框架,统一上层接口内部解析、封装HTTP/2??HTTP2的细节HTTP2 VS SPDY?HPACK的动态表大小?预置HPACK静态表包大小??上行和下行分别独立均由服务端控制??HTTP2 40KSPDY 20K??通过控制SETTING ACK实现?适配两种场景?场景选择?压缩率优先调整至32K?PUSH场景优
文档评论(0)