美文网首页游戏框架设计与优化之路
HTTP/2.0研究对游戏适用性研究

HTTP/2.0研究对游戏适用性研究

作者: 神奇的哈密瓜_35b8 | 来源:发表于2020-06-29 23:59 被阅读0次

    HTTP2.0

    HTTP/2(超文本传输协议第2版,最初命名为HTTP2.0),是HTTP协议的第二个主要版本。HTTP/2是HTTP协议自1999年HTTP1.1发布后的首个更新,主要基于SPDY协议。
    HTTP2.0的特点是:在不改动HTTP语义、方法、状态码、URI及首部字段的情况下,大幅度提高了web性能。

    HTTP站在TCP之上

    理解http协议之前一定要对TCP有一定基础的了解。HTTP是建立在TCP协议之上,TCP协议作为传输层协议其实离应用层并不远。HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性。比如TCP建立连接时三次握手有1.5个RTT(round-trip time)的延迟,为了避免每次请求的都经历握手带来的延迟,应用层会选择不同策略的http长链接方案。又比如TCP在建立连接的初期有慢启动(slow start)的特性,所以连接的重用总是比新建连接性能要好。

    帧(frame)和流(stream)。

    帧是最小的数据单位,每个帧会标识出该帧属于哪个流,流是多个帧组成的数据流。
    所谓多路复用,即在一个TCP连接中存在多个流,即可以同时发送多个请求,对端可以通过帧中的表示知道该帧属于哪个请求。在客户端,这些帧乱序发送,到对端后再根据每个帧首部的流标识符重新组装。通过该技术,可以避免HTTP旧版本的队头阻塞问题,极大提高传输性能。

    多路复用的作用:

    打开网页的时候
    在 HTTP/1.1 协议中 「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞」。
    传统的HTTP1.1打开页面时,需要请求多个资源,每个资源都要发送一个HTTP请求,这样会阻塞。


    6E3511AC-9F01-498C-A226-9007F23798DE.jpg

    HTTP2.0会在同一时间发送多个frame,每个frame有自己的流,每个流是一个请求,但是每个frame是乱序发送的,需要服务器来自己组装。


    C6B41F55-F86A-49DE-ADBE-21C18CFBC31F.jpg

    Headers的压缩

    前面提到过http1.x的header由于cookie和user agent很容易膨胀,而且每次都要重复发送。http2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。高效的压缩算法可以很大的压缩header,减少发送包的数量从而降低延迟。

    HTTP2.0结论

    HTTP2.0和WS是两个不同的东西,WS是基于HTTP1.1之上的,并且阿里云SLB上的WS也是约束ECS后端需要采用HTTP/1.1
    HTTP2.0和WS虽然都是用帧的方式来传输数据,但是他们有各自的帧格式,不能共用。
    WS协议是一个HTTP/1.1的协议头握手之后,后面采用WS帧的格式来通信,主要用于长连接通信
    HTTP2.0是将所有的Headers和body拆开来压缩之后,采用HTTP/2.0格式的帧来通信,并且会将这些帧乱序发送,相当于一个协议被拆解成多个乱序的帧,服务器收到帧之后,需要根据帧头部的SteamID来自行组装,最终组装成一个完整的协议。在 HTTP/1.1 协议中 「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞」。HTTP2.0的多路复用是为了解决web请求复数资源的问题
    参考:
    阿里云HTTP/2.0支持
    HTTP/2.0相比HTTP1.1有什么改进

    相关文章

      网友评论

        本文标题:HTTP/2.0研究对游戏适用性研究

        本文链接:https://www.haomeiwen.com/subject/hubzfktx.html