【面试那些事儿】浏览器键入网址到网页显示,期间发生了什么

当用户在浏览器中键入网址并按下回车键后,直到最终显示出完整的网页内容,这一过程中经历了哪些步骤呢?

这是一道经典的面试题,我们来看看具体有哪些阶段。

1. 解析URL

  • 浏览器首先解析用户输入的URL,判断它的语法和协议类型(通常是HTTP或HTTPS)。
  • 如果URL无效或不符合规范,浏览器可能尝试将其作为搜索查询提交给默认的搜索引擎。

标准的URL组成: 

image.png

[图片来源网络]

2. DNS域名解析

  • 浏览器需要将URL中的域名(如www.server.com)转化为IP地址。
  • 首先检查本地DNS缓存,如果有缓存记录,则直接使用IP地址。
  • 若缓存中没有记录,则浏览器发起DNS查询,依次通过本地DNS服务器、根域名服务器、顶级域名服务器和权威域名服务器来解析域名,最终获取到目标服务器的IP地址
2.1 什么是DNS

比如我们打电话的时候,必须要知道对方的电话号码,但由于电话号码难以记忆,所以通常我们会将对方电话号 + 姓名保存在通讯录里。

所以,有一种服务器就专门保存了 Web 服务器域名与 IP 的对应关系,它就是 DNS 服务器。

DNS中的域名是有层级关系的,如wwww.server.com, 实际上域名后面还有一个点,如www.server.com., 最后一个点代表根域名,域名的层级关系类似一个树状结构:

  • 根DNS服务器(.)
  • 定级域DNS服务器(.com)
  • 权威DNS服务器(server.com)

image.png

[图片来源网络]

2.2 DNS解析域名过程示例

image.png

[图片来源网络]

3. 建立TCP连接

  • 在获取到IP地址后,浏览器利用TCP协议与服务器建立连接,通常涉及到TCP的“三次握手”过程,以确保连接的可靠性。
  • 对于HTTPS(安全超文本传输协议),此阶段还包括TLS/SSL握手过程以加密通信通道。

4. 发送HTTP请求

  • 成功建立连接后,浏览器构造一个HTTP请求报文(如GET或POST请求),包含请求方法、URL、协议版本、头部字段(如User-Agent、Accept-Language等)以及可能有的请求体数据。
  • 浏览器将构建好的HTTP请求发送给服务器指定的端口(通常是80端口对于HTTP,或者443端口对于HTTPS)。

5. 服务器处理请求

  • 服务器接收到请求后,由Web服务器软件(如Apache、Nginx等)解析请求并交由后台的应用程序(如PHP、Java、Node.js等)处理。
  • 应用程序根据请求内容从数据库或文件系统中检索所需资源,并生成响应内容。

6. 服务器返回HTTP响应

  • Web服务器将生成的HTML文档、CSS样式表、JavaScript脚本、图片和其他资源封装成HTTP响应报文,其中包括状态码(如200 OK)、响应头部和响应正文。

7. 浏览器接收响应,并渲染页面

  • 浏览器接收HTTP响应,并开始解析响应正文(即HTML文档)。
  • 根据HTML文档结构创建DOM树,同时解析CSS样式信息生成CSSOM树,随后将两者合并形成渲染树(Render Tree)。
  • 渲染树构建完成后,浏览器进行布局(Layout)计算各个元素的位置,并绘制(Painting)页面内容。
  • 同时,浏览器还会执行JavaScript脚本,脚本可能会影响DOM结构、CSSOM树及页面渲染。

8. 异步资源加载

  • 页面渲染的同时,浏览器继续加载页面中引用的其他资源,如图片、字体、外部脚本和样式表等。
  • 当这些资源加载完毕后,浏览器更新页面以反映新资源的影响。

9. 交互与时间处理

  • 用户可以与页面进行交互,浏览器监听并处理用户的点击、滚动等事件,触发相应的JavaScript代码执行。

完成以上所有步骤后,网页内容才会完整地呈现在用户面前。这个过程涉及到了网络通信、操作系统、浏览器引擎等多个层面的技术协同工作。

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值