一个TCP 连接可以发送多少个HTTP请求?

一、现代浏览器与服务器建立了一个TCP连接后是否会在一个HTTP请求完成后断开?什么情况下会断开?
默认情况下建立TCP连接不会端口,只有再请求报头中声明Connection:close 才会再请求完成后关闭连接
 
二、一个TCP 连接可以对应多少个HTTP请求?
一个TCP连接时可以发送多个HTTP请求的
 
三、一个TCP连接中 HTTP请求发送可以一起发送么(比如一起发送三个请求,再三个响应一起接收?)
在HTTP/1.1存在 Pipelining 技术,可以完成这个多个请求同时发送,但是由于浏览器默认关闭,所有可以认为这是不可行的。在HTTP2中由于Multiplexing 特点的存在
,多个HTTP请求可以在同一个TCP连接中并行进行
那么在HTTP/1.1中,浏览器如何提高页面加载效率?
1、维护和服务器已经建立的TCP连接,在同一个连接上顺序处理多个和请求。
2、和服务器建立多个TCP连接
 
四、为什么有的时候刷新页面不需要重新建立SSL连接?
TCP连接有时候会和浏览器和服务端维持一段时间,TCP不需要重新建立,SSL自然也会用之前的
 
五、浏览器对同一HOST建立TCP连接数量有没有限制?
有。chorme 最多允许对同一个HOST建立六个TCP连接。不同的浏览器有一些区别。
 
那么回到最开始的问题,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?
如果图片都是 HTTPS 连接并且在同一个域名下,那么浏览器在 SSL 握手之后会和服务器商量能不能用 HTTP2,如果能的话就使用 Multiplexing 功能在这个连接上进行多路传输。不过也未必会所有挂在这个域名的资源都会使用一个 TCP 连接去获取,但是可以确定的是 Multiplexing 很可能会被用到。
如果发现用不了 HTTP2 呢?或者用不了 HTTPS(现实中的 HTTP2 都是在 HTTPS 上实现的,所以也就是只能使用 HTTP/1.1)。那浏览器就会在一个 HOST 上建立多个 TCP 连接,连接数量的最大限制取决于浏览器设置,这些连接会在空闲的时候被浏览器用来发送新的请求,如果所有的连接都正在发送请求呢?那其他的请求就只能等等了。
posted @ 2023-04-11 18:02  测试玩家勇哥  阅读(109)  评论(0编辑  收藏  举报