HTTP/1.1流水线和HTTP/2多路复用有什么区别?

pra*_*sun 24 http pipelining multiplexing http2

是因为它需要按照请求的顺序对客户端做出响应,导致HTTP 1.1中的行头阻塞问题?

如果每个请求花费的时间相等,那么就不会有行头阻塞和HTTP 1.1流水线操作,并且会执行与HTTP/2多路复用相同的操作吗?

(假设HTTP/2请求中没有请求优先级,并忽略HTTP/2的其他更改,例如头压缩,二进制等)

Eli*_*ynn 47

没有流水线操作的HTTP/1.1:在下一个请求发出之前,必须响应TCP连接上的每个HTTP请求.

带有流水线的HTTP/1.1:可以立即进行TCP连接上的每个HTTP请求,而无需等待先前请求的响应返回.回复将以相同的顺序返回.

HTTP/2多路复用:可以立即进行TCP连接上的每个HTTP请求,而无需等待先前的响应返回.回复可以按任何顺序返回.

  • 当您阅读有关HTTP v2并尝试理解多路复用和流水线之间的区别时,这非常有用.谢啦! (2认同)

Bar*_*ard 28

HTTP/1.1流水线操作仍然要求以请求的顺序完整地返回请求.

HTTP/2允许将请求响应拆分为块并以混合方式返回,从而避免行头阻塞.

此外,HTTP/1.1流水线从未真正起飞,浏览器和服务器支持也是有限的(参见:https://en.m.wikipedia.org/wiki/HTTP_pipelining).

但是,从理论上讲,它们是相似的,因此具有类似的性能优势.HTTP/2只是一个更好,更全功能,更受支持的版本 - 以及您注意到的其他好处.

  • 我想补充一点,大多数服务器不支持 HTTP 流水线,因为它很难实现,并且存在一些非常危险的安全问题。例如,http 走私可以通过篡改请求的 Content-Length 标头并将多个请求放入单个请求中并通过使其返回另一个用户的响应给您来使代理服务器行为错误(因为应维护请求顺序)来完成并且您只需将 2 个请求放入一个请求中)。这种攻击需要很好的时机,但当然并非不可能......反正:) (2认同)