从输入URL到页面加载完成发生了什么?

从输入URL到页面加载完成发生了什么?

笼统的说发生了以下这些步骤:

  1. 浏览器的地址栏输入URL并按下回车。
  2. 浏览器查找当前URL是否存在缓存,并比较缓存是否过期。
  3. DNS解析URL对应的IP。
  4. 根据IP建立TCP连接(三次握手)。
  5. HTTP发起请求。
  6. 服务器处理请求,浏览器接收HTTP响应。
  7. 渲染页面,构建DOM树。
  8. 关闭TCP连接(四次挥手)。

1. 浏览器的地址栏输入URL并按下回车

拓展内容:什么是URL?

 我们常见的RUL是这样的:http://www.baidu.com。这个域名由三部分组成:协议名、域名、端口号。这里端口是默认的,所以隐藏。除此之外URL还会包含一些路径、查询和其他片段。我们最常见的的协议是HTTP协议,除此之外还有加密的HTTPS协议、FTP协议、FILe协议等等。URL的中间部分为域名或者是IP,之后就是端口号了。通常端口号不常见是因为大部分的都是使用默认端口,如HTTP默认端口80,HTTPS默认端口443。 

2.浏览器查找当前URL是否存在缓存,并比较缓存是否过期

3.DNS解析URL对应的IP

拓展内容:什么是DNS域名解析

我们知道在地址栏输入的域名并不是最后资源所在的真实位置,域名只是与IP地址的一个映射。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的百度的网址。,因此域名就产生了,DNS域名解析的过程实际是将域名还原为IP地址的过程

若在缓存中没有找到URL对应的相关信息,则

  • 首先浏览器解析输入的域名,先查找本地硬盘的host文件,看有没有和这个域名对应的ip,如果有,就直接使用这个ip.
  • 如果没有,浏览器会发出一个DNS请求到本地DNS(域名分布系统)服务器.本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动.
  • 请求到达DNS服务器后,DNS服务器首先会查询他的缓存记录,如果有对应的ip地址,则返回,如果没有,本地DNS服务器向DNS根服务器发送查询请求.
  • 根服务器不会记录具体的域名和ip的对应关系,而是返回下次应该查询的域服务器的地址.本地服务器会继续向域服务器发起请求.
  • 域服务器并没有记录域名和ip的对应关系,而是返回你的域名的解析服务器的地址.
  • 本地DNS服务器继续向域名解析服务器发出请求,这时会收到域名对应的ip,本地DNS服务器将ip返回给浏览器,并将ip存入缓存,方便下次访问,加快访问速度.

4.根据IP建立TCP连接(三次握手)

在通过上一步的DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接。

在这里插入图片描述

5.HTTP发起请求

完整的HTTP请求包含请求起始行、请求头部、请求主体三个部分,其中请求报头包含了至关重要的信息,包括请求的方法(GET / POST)、目标url、遵循的协议(http / https / ftp…),返回的信息是否需要缓存,以及客户端是否发送cookie等。

6.服务器处理请求,浏览器接收HTTP响应。

 服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。

状态码主要包括以下部分: 

1xx:指示信息–表示请求已接收,继续处理。

2xx:成功–表示请求已被成功接收、理解、接受。

3xx:重定向–要完成请求必须进行更进一步的操作。

4xx:客户端错误–请求有语法错误或请求无法实现。

5xx:服务器端错误–服务器未能实现合法的请求。

响应头主要由Cache-Control、 Connection、Date、Pragma等组成。

响应体为服务器返回给浏览器的信息,主要由HTML,css,js,图片文件组成。

7.渲染页面,构建DOM树。

在拿到html,css,js,图片等资源后,浏览器开始解析,通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。生成渲染树后,浏览器根据渲染树布局页面,同时计算css样式或js对Dom的动态样式改变,然后绘制出页面。
在这里插入图片描述
在这里插入图片描述

8.关闭TCP连接(四次挥手)。

通过四次挥手关闭连接(FIN ACK, ACK, FIN ACK, ACK)。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值