最近面试的时候有面试官问了这个在输入网址的窗口中输入url后发生了什么过程,这个问题当时也是把我问住了,所以我特地查询了一下资料后来总结一下
具体的发生了一下几个过程
1、浏览器的地址栏输入URL并按下回车。
2、浏览器查找当前URL是否存在缓存,并比较缓存是否过期。
3、DNS解析URL对应的IP。
DNS域名解析的过程实际是将域名还原为IP地址的过程。
4、根据IP建立TCP连接(三次握手)。
在通过第一步的DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接。
第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;
第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
5、HTTP发起请求。
HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文。Accept用于指定客户端用于接受哪些类型的信息,Accept-Encoding与Accept类似,它用于指定接受的编码方式。Connection设置为Keep-alive用于告诉客户端本次HTTP请求结束之后并不需要关闭TCP连接。
6、服务器处理请求,浏览器接收HTTP响应。
服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。
-
1xx:指示信息–表示请求已接收,继续处理。
-
2xx:成功–表示请求已被成功接收、理解、接受。
-
3xx:重定向–要完成请求必须进行更进一步的操作。
-
4xx:客户端错误–请求有语法错误或请求无法实现。
-
5xx:服务器端错误–服务器未能实现合法的请求。
7、渲染页面,构建DOM树。
浏览器是一个边解析边渲染的过程。首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。
8、关闭TCP连接(四次挥手)。
本文详细介绍了从在浏览器地址栏输入URL到页面渲染完成的全过程,包括DNS解析、TCP三次握手、HTTP请求、服务器响应、页面渲染及TCP四次挥手等关键步骤。深入理解这一过程有助于优化网页加载速度和提升用户体验。
512

被折叠的 条评论
为什么被折叠?



