从输入URL到页面显示发生了什么

1,浏览器输入url

用户在浏览器输入url

2,查询浏览器缓存

如果访问过该URL,浏览器就会去缓存中查询相关资源并直接显示到页面,不进入网络请求(如果查询缓存后没有查询到相关资源,则仍然会进入网络请求流程);如果没有访问过该URL,则进入网络请求流程(第3步)

查询缓存的流程浏览器缓存 => 系统缓存 => 路由器缓存 => ISP DNS缓存 => 根域名递归查询

(1)浏览器缓存

浏览器通常会缓存记录一段时间,在2~30分钟不等,浏览器缓存内的查询顺序是:

service worker(运行在浏览器背后的独立线程。我们可以自由控制需要缓存哪些文件)=>

memory cache(内存中的缓存。主要包含当前页面抓取到的数据,比如样式、脚本、图片等,读取速度快,但如果关闭了tab页,则内存会被释放)=> 

disk cache(硬盘中的缓存。读取速度慢,但是覆盖面大,什么都可以存储。他主要根据HTTP header中的字段判断要缓存哪些文件) =>

push cache(推送缓存。http/2中的缓存,以上3种都没有查询到时,他才会被启用。他只在当前session会话中生效,只要关闭当前会话就会被清除。而且存储时间只有5分钟。)

(2)系统缓存

如果在浏览器缓存中没有查询到相关记录,浏览器就会查询系统中的缓存。

(3)路由器缓存

如果系统缓存中没有查询相关记录,就会将前面的查询请求发向路由器。

(4)ISP DNS缓存

以上3步都是客户端的DNS缓存。如果客户端的DNS缓存都没有查询到记录,则会进入ISP DNS缓存服务器中查询(在这里一般都能找到记录)。比如使用电信的网络,则会进入电信的ISP DNS缓存服务器中查询。

(5)从根域名服务器递归查询

如果以上没有查询到,会从根域名进行递归查询。

3,DNS解析

如果没有访问过URL,则先进行域名解析,获取对应的IP地址。

4,TCP3次握手

浏览器开始向服务器发起http请求,进行3次握手。

(1)第一次握手浏览器告知服务器我将要发送数据,请做好准备

        客户端发送一个带相关序号的(SYN、seq)数据包,告诉服务器我即将发送请求,且在链接中发送的初始序列号是SYN。

(2)第二次握手服务器告知浏览器,我准备好了

        收到消息后,服务器(ACK)确认浏览器的SYN数据包,告诉浏览器准备好了

(3)第三次握手浏览器说收到,我要开始发了(理解为第2次的回执)

        浏览器确认服务器的ACK和SYN,并代表握手结束

5,发送http请求

链接成功后,浏览器根据IP地址和端口号发送http请求,请求的报文以流(stream)的形式发送。

报文由请求行(request line)、请求头(request header)、请求体(request body)组成,具体

6,服务器接收请求并响应

服务器接收到浏览器的http请求,并进行相关处理后,将响应数据返回给浏览器

7,浏览器接收响应数据并解析

浏览器收到服务器响应的数据,并进行解析,如果响应数据可以缓存,则存入缓存

8,浏览器渲染页面

浏览器接收到响应的html页面之后,就会从上到下加载,并在加载过程中进行解析渲染。

浏览器渲染页面的主要流程有:

(1)根据html解析生成dom树

(2)根据css解析生成css规则树

(3)结合dom树和css规则树,生成渲染树

(4)有了渲染树,浏览器已经知道每个节点和他的从属关系,然后进行Layout阶段计算出每个节点的信息、位置

(5)遍历渲染树,根据每个节点的信息和位置绘制页面

9,断开连接

数据发送完毕之后,关闭tcp链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,我了解了。关于您的问题,整个过程可以分为以下几个步骤: 1. 输入URL:当您在浏览器地址栏中输入URL时,浏览器会将该URL发送到域名系统(DNS),通过域名系统将URL转化为IP地址。 2. 发送HTTP请求:浏览器根据URL发起HTTP请求,请求访问Web服务器的特定资源。 3. 服务器响应:当Web服务器接收到请求时,它将处理请求并返回所请求的资源。 4. 浏览器渲染:浏览器收到服务器响应后,它将解析HTML源代码,并根据CSS样式表和JavaScript代码来渲染页面。 5. 页面展示:最终,浏览器将HTML、CSS和JavaScript代码解析完毕后,它会在屏幕上展示出页面内容。 以上就是从输入URL页面展示的整个过程,希望能够帮到您。 ### 回答2: 当我们在浏览器的地址栏中输入URL时,整个过程可以分为以下几个步骤: 1. DNS解析:浏览器首先会根据URL中的域名(例如www.example.com)进行DNS解析,将域名解析为对应的IP地址。这一步骤是为了找到存放网页的服务器。 2. 建立TCP连接:浏览器通过IP地址与服务器建立TCP连接。TCP协议提供可靠的连接,确保数据的完整性。 3. 发起HTTP请求:一旦建立了TCP连接,浏览器会向服务器发起HTTP请求,请求包括请求方法、请求头、请求体等信息。请求方法可以是GET、POST等,服务器根据请求的不同做出相应的响应。 4. 服务器处理请求并响应:服务器接收到浏览器的请求后,会根据请求的内容进行相应的处理。处理包括读取数据库、执行后端代码等操作。之后,服务器会生成响应对象,包含响应状态码、响应头、响应体等信息。 5. 接收服务器响应:浏览器接收到服务器的响应后,根据响应头中的Content-Type确定响应的数据类型。如为HTML类型,则浏览器会将响应的HTML代码解析成DOM树。 6. 解析页面并渲染:浏览器根据DOM树构建渲染树,并依据CSS样式对各元素进行布局和样式计算,最终生成页面的渲染结果。同时,浏览器也会执行页面中的JavaScript代码。 7. 页面展示:最后,浏览器将渲染好的页面内容显示在用户的视窗中,用户可以看到页面的展示效果。 总结起来,从输入URL页面展示,经历了DNS解析、建立TCP连接、发起HTTP请求、服务器处理请求并响应、接收服务器响应、解析页面并渲染等多个步骤。最终,浏览器将渲染好的页面内容显示给用户。 ### 回答3: 从输入URL页面展示,大致经历如下步骤: 1. 域名解析:当我们在浏览器中输入URL后,首先会进行域名解析。浏览器会向DNS服务器发送域名请求,获取该域名对应的IP地址。 2. 建立连接:浏览器通过获取到的IP地址与Web服务器建立TCP连接。这个过程使用的是三次握手协议,确保连接的可靠性。 3. 发送请求:建立连接后,浏览器会发送HTTP请求给Web服务器,请求的内容包括请求的类型(GET/POST等)、地址、头部信息、可能还包括cookie等相关信息。 4. 服务器处理请求:Web服务器收到请求后,会根据请求内容进行处理。处理过程可能包括调取数据库、运行后台程序等动作。 5. 服务器响应:Web服务器根据请求的内容,返回一个HTTP响应给浏览器。响应的内容包括状态码、响应头部、实际的网页内容等。 6. 下载页面资源:浏览器接收到服务器返回的响应后,会开始下载网页的资源,如HTML、CSS、JavaScript、图片等。浏览器会根据响应头部中的Content-Type确定如何解析资源。 7. 页面渲染:当所有的资源下载完成后,浏览器会根据HTML结构、CSS样式,解析并渲染出网页。浏览器会从上到下解析HTML文档,解析过程包括构建DOM树、计算CSS样式、布局页面等。 8. JavaScript执行:在渲染过程中,浏览器会遇到JavaScript代码。浏览器会逐行解析执行JavaScript代码,并根据代码修改DOM树和样式,可能还会触发网络请求等。 9. 页面展示:当页面渲染和JavaScript执行完成后,页面便可以完整地展示给用户了。用户可以看到页面内容,与页面进行交互。 以上仅是一个大致的过程,实际上还有很多细节和额外的步骤,比如缓存机制、重定向、Cookie处理等等。不同的浏览器、服务器也可能会有些许差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍思码匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值