http2 是否包含 demux 机制?
Does http2 include a demux mechanism?
据我所知,HTTP2 是 m:1
模式,您将 m
逻辑连接放入 1
TCP 流
是否可以在 http2 中执行 m:n
模式?
m
流被分解为 n
连接以获得更好的可靠性,因为通常一个 TCP 会中断所有 h2 挂起。
这是可能的,但实际上并没有做到。
浏览器特别努力只打开一个到域的连接,如果它们能够确定它解析为相同的 IP 地址和相同的证书,甚至会为不同的子域重用相同的连接。
其他客户端可能会实施 m:n
方案(例如,Jetty 9.4.x HTTP/2 客户端执行 - 免责声明:我是维护者)。
选择一个好的 n
的问题可能不是微不足道的,并且有返回到 HTTP/1 的风险。1 每个域 6-8 个 TCP 连接。
由于每个连接无论如何都会被多路复用,因此单个 HTTP/2 连接的失败将比单个 HTTP/1.1 连接的失败更糟糕(因为它会使多个请求失败而不是只有一个),所以我想它不会对单个 HTTP/2 连接产生太大影响。
Google 的 QUIC protocol 旨在解决此问题,因为它基于 UDP 并内置支持连接迁移(即从 WiFi 切换到移动网络)。
据我所知,HTTP2 是 m:1
模式,您将 m
逻辑连接放入 1
TCP 流
是否可以在 http2 中执行 m:n
模式?
m
流被分解为 n
连接以获得更好的可靠性,因为通常一个 TCP 会中断所有 h2 挂起。
这是可能的,但实际上并没有做到。
浏览器特别努力只打开一个到域的连接,如果它们能够确定它解析为相同的 IP 地址和相同的证书,甚至会为不同的子域重用相同的连接。
其他客户端可能会实施 m:n
方案(例如,Jetty 9.4.x HTTP/2 客户端执行 - 免责声明:我是维护者)。
选择一个好的 n
的问题可能不是微不足道的,并且有返回到 HTTP/1 的风险。1 每个域 6-8 个 TCP 连接。
由于每个连接无论如何都会被多路复用,因此单个 HTTP/2 连接的失败将比单个 HTTP/1.1 连接的失败更糟糕(因为它会使多个请求失败而不是只有一个),所以我想它不会对单个 HTTP/2 连接产生太大影响。
Google 的 QUIC protocol 旨在解决此问题,因为它基于 UDP 并内置支持连接迁移(即从 WiFi 切换到移动网络)。