下面我将详细讲解“深入剖析从输入URL到页面显示过程原理”的完整攻略。
1.域名解析(DNS解析)
当用户在浏览器中输入一个URL时,浏览器首先需要将URL中的域名解析为IP地址,从而定位到服务器。这个解析的过程叫做DNS解析。具体过程如下:
- 浏览器首先会检查浏览器缓存中是否保存了该域名的IP地址。
- 如果浏览器缓存中没有,那么浏览器会向本地DNS服务器发送一个请求,询问该域名的IP地址。
- 如果本地DNS服务器也没有该域名的IP地址,那么它会向根DNS服务器发送一个请求。
- 根DNS服务器返回顶级域名服务器的地址。
- 本地DNS服务器向顶级域名服务器请求查询权威域名服务器的IP地址。
- 本地DNS服务器向权威域名服务器请求该域名的IP地址。
- 权威域名服务器返回该域名的IP地址。
- 本地DNS服务器将该IP地址缓存起来,并且把它返回给浏览器。
- 浏览器将该IP地址保存到本地缓存中。
示例说明:
用户在浏览器中输入 https://www.baidu.com/,浏览器会将该URL中的域名 www.baidu.com 发送给本地DNS服务器进行解析,若本地DNS服务器没有缓存该域名对应的IP地址,则向根DNS服务器请求解析。由于根DNS服务器只能返回顶级域名服务器的地址,因此本地DNS服务器再向顶级域名服务器请求查询权威域名服务器的IP地址,最终获取到 www.baidu.com 对应的IP地址并将其缓存起来。
2.建立连接
在得到该域名的IP地址之后,浏览器会开始建立与服务器的TCP连接。该过程包括三次握手:
- 客户端向服务器发送一个 SYN 包,请求建立连接。
- 服务器向客户端发送一个 SYN-ACK 包,告诉客户端可以建立连接。
- 客户端向服务器发送一个 ACK 包,确认建立连接。
示例说明:
以用户在浏览器中输入 https://www.baidu.com/ 为例,浏览器会使用该域名对应的IP地址建立TCP连接,即向该IP地址发送SYN包,服务器接收到SYN包后会返回一个SYN-ACK包,浏览器再发送一个ACK包,建立TCP连接。
3.发送请求和接收响应
建立好TCP连接之后,浏览器会向服务器发送HTTP请求,并等待服务器返回响应。具体过程如下:
- 浏览器向服务器发送HTTP请求报文。
- 服务器接收到HTTP请求报文后,解析报文并处理请求。
- 服务器生成HTTP响应报文。
- 服务器向浏览器发送HTTP响应报文。
- 浏览器接收到HTTP响应报文后,解析报文并处理响应。
示例说明:
以用户在浏览器中输入https://www.baidu.com/为例,浏览器会向服务器发送HTTP请求报文,请求服务器返回主页的HTML文件,服务器接收到请求后会处理并返回对应的HTML文件作为响应报文,浏览器接收到响应报文后解析解码并显示页面。
4.渲染页面
浏览器在接收到服务器返回的HTML文件后,会将HTML文件解析生成一棵DOM树,并根据CSS文件生成CSSOM树,最后将这两棵树合并成一个Render树,根据Render树进行页面的渲染和布局。
示例说明:
以用户在浏览器中输入https://www.baidu.com/为例,浏览器会接收到服务器返回的HTML文件,然后将其解析生成DOM树和CSSOM树,然后将这两棵树合并成一个Render树,最后进行页面渲染和布局。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入剖析从输入URL到页面显示过程原理 - Python技术站