浏览器输入URL回车之后发生了什么

地址解析:
浏览器会开一个线程来处理,先对URL进行解析,一般包括 ( 协议头、主机域名或IP地址、端口号、请求路径、查询参数、hash等等 ),然后打开网络线程发出一个完整的请求

浏览器根据URL进行DNS查询,浏览器会首先搜索浏览器的DNS缓存,看自身的缓存中是否有对应的条目,而且没有过期,如果有且没有过期则解析到此结束。如果浏览器自身的缓存里面没有找到对应的条目,那么会搜索操作系统的DNS缓存,如果找到且没有过期则停止搜索解析到此结束。如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件,看看这里面有没有该域名对应的IP地址,如果有则解析成功。

还没有就询问递归式DNS服务器(就是网络提供商,一般这个服务器都会有自己的缓存,所以IP查询大多都在这里完成)

在前面所有步骤没有缓存的情况下,本地 DNS 服务器会将请求转发到互联网上的根域,下面这个图很好的诠释了整个流程:
在这里插入图片描述
应用层客户端发送HTTP请求:
IP地址有了,应用层的客户端想看页面,就会发一个 HTTP 请求,HTTP 请求分为 请求报头 和 请求主体 ,请求主体就是客户端要发送给服务器或者服务器返回给客户端的内容,请求报头比较重要,包含通信方式也就是请求方法 (POST / GET / INPUT / DELETE等)、URI、协议版本号以及请求头部方法(Accept、Cache-Control…)
其中需要注意的点:
浏览器只能发送 GET、POST 方法,而打开网页使用的是 GET 方法

传输层:TCP 传输报文
传输层会发起一条到达服务器的 TCP 连接,为了方便传输,会对数据进行分割(以报文段为单位),并标记编号,方便服务器接受时能够准确地还原报文信息。在建立连接前,会先进行 TCP 三次握手。

网络层:IP协议查询Mac地址
将数据段打包,并加入源及目标的IP地址,并且负责寻找传输路线。
判断目标地址是否与当前地址处于同一网络中,是的话直接根据 Mac 地址发送,否则使用路由表查找下一跳地址,以及使用 ARP 协议查询它的 Mac 地址。

数据到达数据链路层:
找到对方的 MAC地址 后,就会将数据发送到 数据链路层传输,到此客户端发送请求阶段就结束了

服务器接收数据:
而后接收端的服务器在 数据链路层 接收到数据包,再通过相反的方式将数据一层一层的还原回 应用层 ,这过程中包括在运输层那里通过TCP协议将分段的数据包重新组成原来的HTTP请求报文

浏览器接受响应
浏览器接收到来自服务器的响应资源后,会对资源进行分析。
首先查看 Response header,根据不同状态码做不同的事(比如上面提到的重定向)。请求成功后,服务器会返回相应的网页,浏览器接收到响应成功的报文后便开始下载网页,至此,网络通信结束

浏览器拿到网页文件后,首先根据顶部定义的DTD类型进行对应解析方式,网页解析会交给内部GUI渲染线程处理
接着构建DOM树和CSSOM树,过程中,如果遇到节点是 JS ,就会调用 JS引擎 对 JS代码进行解释执行,此时由于 JS引擎 和 GUI渲染线程 互斥,GUI渲染线程 会被挂起,渲染过程停止,如果 JS 代码的运行中对DOM树进行了修改,那么DOM构建要从新开始,然后DOM树和CSSOM树构建为渲染树
然后进入布局阶段,计算渲染树节点在设备视口内的确切位置和大小
再接着将渲染树中每个节点转换成屏幕上的实际像素,也就是绘制阶段
最后的合成阶段浏览器会将各层信息发送给GPU,GPU将各层合成,显示在屏幕上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值