3、说一下http的工作流程 http1.0,http1.1,http2.0具体有哪些区别

http 1.0要指定keep-alive来开启持久连接,默认是短连接,就是浏览器每次请求都要重新建立一次tcp连接,完事儿了就释放tcp连接。其实最慢的不是发送请求和获取响应,打开和释放连接,这都是很重的过程

**http 1.1默认支持长连接,就是说,浏览器打开一个网页之后,底层的tcp连接就保持着,不会立马断开,之后加载css、js之类的请求,都会基于这个tcp连接来走。**http 1.1还支持host头,也就可以支持虚拟主机;而且对断点续传有支持。

http 2.0,支持多路复用,基于一个tcp连接并行发送多个请求以及接收响应,解决了http 1.1对同一时间同一个域名的请求有限制的问题。二进制分帧,将传输数据拆分为更小的帧(数据包),frame(数据包,帧),提高了性能,实现低延迟高吞吐。

 

 

dd


 

 

 

 

 

 

 

 

http 1.0要指定keep-alive来开启持久连接,默认是短连接,就是浏览器每次请求都要重新建立一次tcp连接,完事儿了就释放tcp连接。早期的网页都很low,没啥东西,就一点文字,就用这个没问题。但是现在,一个网页打开之后,还要加载大量的图片、css、js,这就坑爹了,发送多次请求。

早期,2000年之前,那个时候网页,都很low,当时你打开一个网页,就是说现场底层tcp三次握手,跟网站建立一个tcp连接,然后通过这个tcp连接,发送一次http请求,网站返回一个http响应(网页的html,里面有一大段文字),浏览器收到html渲染成网页,浏览器就走tcp四次挥手,跟网站断开连接了

到了后面,发现2000之后,2010之后更不用说了,网页发展很迅猛,一个网页包含着大量的css、js、图片等资源。比如你请求一个网页,这个网页的html先过来,过来之后,浏览器再次发起大量的请求去加载css、js、图片,打开一个网页可能浏览器要对网站服务器发送几十次请求。

http 1.0,疯了,刚开始请求网页的html,tcp三次握手建立连接 -> 请求/响应 -> tcp四次挥手断开连接,接着再次要加载css、js、图片,要发送30个请求,上面的过程来30次,30次频繁的建立tcp连接以及释放tcp连接。很慢很慢。

其实最慢的不是发送请求和获取响应,打开和释放连接,这都是很重的过程

**http 1.1默认支持长连接,就是说,浏览器打开一个网页之后,底层的tcp连接就保持着,不会立马断开,之后加载css、js之类的请求,都会基于这个tcp连接来走。**http 1.1还支持host头,也就可以支持虚拟主机;而且对断点续传有支持。

浏览器,第一次请求去一个网站的一个页面的时候,就会打开一个tcp连接,接着就在一段时间内都不关闭了,然后接下来这个网页加载css、js、图片大量的请求全部走同一个tcp连接,频繁的发送请求获取响应,最后过了一段时间,这些事儿都完了,然后才会去释放那一个tcp连接。大幅度的提升复杂网页的打开的速度,性能。

http 2.0,支持多路复用,基于一个tcp连接并行发送多个请求以及接收响应,解决了http 1.1对同一时间同一个域名的请求有限制的问题。二进制分帧,将传输数据拆分为更小的帧(数据包),frame(数据包,帧),提高了性能,实现低延迟高吞吐。

 

posted @ 2021-03-31 10:46  TomStudio  阅读(237)  评论(0)    收藏  举报