- 打开一个网站,建立几次TCP连接?
建立1次是对的吗?
如果我打开的这个网页,比如百度(www.baidu.com),不仅只有一次对url进行的http请求,同时还会有对图片发起的http请求,
此外还有 ajax 的请求,每次都是单独完整的 http 请求,我不知道 css 文件和 js文件是不是也需要通过http请求来进行的 - 每次进行的http请求是否会重新打开socket进行连接?
那打开socket连接时不是就等于又进行了三次握手建立了TCP连接? - 如果在http基础上还有https的证书验证,这个证书验证是在每次http请求之前需要进行验证?
访问一个网站 ,例如https://segmentfault.com/
,用浏览器访问时,他的响应如下
发现了有很多次http
请求,他们每次请求时这样的吗?
- 通过三次握手建立
tcp
连接 -
https
验证证书的合法性 - 使用http协议通过建立的
tcp
链接发送http
协议文本 - 关闭连接
重复执行1-4
直到所有请求完成?
在同一个页面中,请求比较多的话,可以打开HTTP KeepAlive, 复用连接,避免3次握手带来的开销。
HTTP2.0 进一步优化,通过多路复用技术,允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。也就是可以在在一次传输中发送多个css,js,图片等资源。