- 主题:为什么说HTTP2 比HTTP1.*快呢
http2在应用层重新实现了一套分包传输
可以充分复用有限(昂贵)的TCP连接
【 在 chzhang7901 的大作中提到: 】
: 网络上传的不是大部分是字符串吗?
: 字符串二进制和文本没区别啊。
--
FROM 61.170.180.*
对, http1.1是阻塞的,不能在req/resp之间复用tcp连接
而为网站性能计,浏览器会主动控制与一个域名的tcp连接数(默认6个)
所以之前会有各种独立域名之类的奇技淫巧来优化外部资源(css/js/img/...)加载
http2.0会提供一个应用层的基于数据包的封装以实现(底层)TCP连接复用
实现资源异步无阻塞加载,充分利用带宽
更多讨论可以参见《Web性能权威指南》
【 在 chzhang7901 的大作中提到: 】
: 你得意思是建立和断开tcp连接费时间?
: 我看浏览器去访问个baidu要下载n多文件,http1.*是不是为每个文件的现在都会去简历tcp链接。
: 而http2.*就不需要了,只需要为主文件建一个链接,读到内容后,复用这个链接传输其他文件?
: ...................
--
修改:oldwatch FROM 61.170.180.*
FROM 61.170.180.*
说穿了是在应用层重新寨了一套IP协议……
【 在 deusomax 的大作中提到: 】
: 说复用连接的都没看到本质,http1.1可以复用连接,keep-alive也是啊.
: 本质是,1.1是个同步的协议,一个连接在未收到响应前,是不会next请求的.
: 而2,是个异步的协议,客户端可以一下狂发成千上万个请求在一个连接上,提高了连接的利用率.
: ...................
--
FROM 222.70.18.*
QUIC选UDP好像是因为TCP的慢启动无法简单规避
【 在 lushan5436 的大作中提到: 】
: 有个疑问,TCP协议中,并不需要对方ACK后,再发送请求,
: 对于同一个连接,假设传输数据很大,实际上TCP的窗口可能也很大。如果是局域网(低延时,高带宽),我不知道效率提升点在哪?
: 如果是说对于同一个网站访问。(不同资源的请求),那么确实可以做到复用在一个连接上,相当于在客户端打包了请求。但是,这样做,实际上未必比每一个资源请求使用一个连接来的快(前提是,连接数不能过多),因为这个在服务器端也是并行处理,甚至是多机处理;当然合并复用的
: ...................
--
修改:oldwatch FROM 222.70.18.*
FROM 222.70.18.*
嗯,说穿了就是基于UDP在应用层重新发明了一遍“自主可控”的TCP
【 在 cybereagle 的大作中提到: 】
: 本质是移动互联网时代终端最后一跳连接的可靠性和以前比是下降了的
: 丢包和换IP变得很常见
: 而TCP应对这些问题的开销都比较大
: ...................
--
FROM 222.70.18.*
慢启动增加往返,往返带来硬延时,延时对用户感知的影响远胜带宽
又查了一下,Http/2在应用层作分包的另一个优势就是
可以在网络层实现多路复用,而不是一个资源一个请求
【 在 lushan5436 的大作中提到: 】
: 了解了,多谢了,那这个慢启动,感觉最不适合的场景是,高带宽,低延时,但网络不稳定,时好时坏
--
FROM 222.70.18.*