首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

HTTP2 奇思妙想

  •  
  •   wysnylc · 52 天前 · 1224 次点击
    这是一个创建于 52 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. http2 有并发。它支持多路复用,并行双向字节流的请求和响应,它以“流”的形式在客户端和服务器间独立的双向的交换的帧序列。流具有一些重要的特性:
    • 单个的 HTTP/2 连接可以包含多个并发打开的流,各个终端多个流的帧可以交叉。
    • 流可以单方面地建立和使用,或由客户端或服务器共享。
    • 流可以被任何一端关闭。
    • 流中帧的发送顺序是值得注意的。接收者以它们收到帧的顺序处理。特别的,HEADERS 帧和 DATA 帧在语义上是非常重要的。
    • 流由一个整数标识。流标识符由发起流的一端来赋值。

    虽然只有一个 TCP 连接,却能够在这个连接同时处理客户端和服务端的多个数据传输。

    1. HTTP2 只有一个 TCP 连接,它并不像 http1.1 中的 TCP 连接一样,在处理当前传输数据后就关闭,而是一直连通的,客户端和服务端可以通过它持续往返传输数据。这个 TCP 流的传输通道,是可以被任何一端给关闭的。

    按照以上所述,HTTP2 是用 UDP 实现的 TCP 实现了 UDP?我的想法是对的吗?

    13 回复  |  直到 2019-03-05 18:53:23 +08:00
        1
    514146235   52 天前
    当然不对啊,udp 根本不需要建立连接,就是无脑直接发,到没到根本不管。所以才会说 udp 是不可靠协议,但是因为没有握手的过程,从而 udp 通常表现的比 tcp 协议更快。
        2
    wysnylc   52 天前
    @514146235 #1 感谢回答,但是你有点偏题.其实我想说的的是多路复用的帧是无序发送和 UDP 发包也是无序到达是一个概念
        3
    rrfeng   52 天前 via Android
    一点都不是。
        4
    lhx2008   52 天前
    不是,TCP 本来就是流,在流上发包很正常,基本上所有 TCP 协议都是流上发包,至于无序到达,HTTP/2 的意思应该是来自不同服务器的包可以无序到达,没说来自同一个服务器的包可以无序。
        5
    msg7086   52 天前
    可以说是把 TCP 链路给 UDP 化了。但是也不完全是 UDP 化,因为上层只管乱序,不管丢包重发。
    以后 HTTP/3 可能就要全面 UDP 了。

    另外,TCP 并不是 UDP 实现的。
        6
    orangeade   52 天前
    你说的是 HTTP/3 HTTP/2 还是有 TCP 的队头阻塞的
        7
    gamexg   52 天前
    不是,
    http2 还是基于 tcp 的,建简易理解可以认为底层 tcp 连接里面都是这样的包

    流 id | 流数据

    接受方根据 流 id 重组为多个子流就实现了单连接多路复用。当然实际不是这样简单,还有一些其他细节。
        8
    wysnylc   52 天前
    @msg7086 #5 之前一直以为 TCP 是基于 UDP 实现的,原来两个是同级别的. http2 的确像 udp 的模式啊~
        9
    wysnylc   52 天前
    @gamexg #7 就多路复用会导致流无序达到,这和 UDP 很像呀
        10
    gamexg   52 天前
    @wysnylc #9 不会无序到达,tcp 协议可以保证发送什么顺序接收时就是什么顺序。
    那么每个 “流 id + 数据 ” 就会按照发送的顺序到达接收端,不会出现无序的情况。
        11
    mritd   52 天前   ♥ 1
    首先声明,利益无关,今天 Harbor 群里看到的,刚看完推荐楼主看一下 https://mp.weixin.qq.com/s/bD8C0oR34ZKUEZjN9yBSJg
        12
    wysnylc   52 天前
    @gamexg #10 发送无序,接受有序是因为服务端会根据"流 id"在缓存区重排
        13
    wysnylc   52 天前
    @mritd #11 看完了,谢谢
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1609 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 16:55 · PVG 00:55 · LAX 09:55 · JFK 12:55
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1