从输入URL到页面展示到底发生了什么?


前言

从输入URL到页面展示到底发生了什么?这可以说是面试必问的一个问题,简单的动作背后隐藏着很多细节,总体上可以分为七步:输入地址->浏览器查找域名的 IP 地址->TCP三次握手->发送 HTTP 请求->服务器处理请求并返回 HTTP 报文->浏览器解析渲染页面->TCP四次挥手。


一、输入地址

URL(Uniform Resource Locator),统一资源定位符,用于定位互联网上资源,俗称网址。
例如:https://www.baidu.com/

当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。


二、浏览器查找域名的 IP 地址

在浏览器输入网址后,首先要经过域名解析,因为浏览器并不能直接通过域名找到对应的服务器,而是要通过 IP 地址。

https://www.baidu.com/域名是由什么部分组成的呢?

1.https:http+加密+认证+完整性保护。
2.www:World Wide Web,万维网。
3.www与后面的baidu.com一起构成了一个域名地址。

在真正发起请求之前,需要进行DNS解析,解析出baidu.com背后的ip地址是什么。
在这里插入图片描述

总结:浏览器通过向 DNS 服务器发送域名,DNS服务器查询到与域名相对应的 IP 地址,然后返回给浏览器,浏览器再将 IP 地址打在协议上,同时请求参数也会在协议搭载,然后一并发送给对应的服务器。


三、TCP三次握手

在客户端发送数据之前会发起TCP三次握手用以同步客户端和服务端的序列号和确认号,并交换 TCP 窗口大小信息。
在这里插入图片描述


四、浏览器发送 HTTP 请求

TCP 三次握手结束后,开始发送 HTTP 请求报文。
请求报文由请求行(request line)、请求头(header)、请求体三个部分组成。

1. 请求行包含请求方法、URL、协议版本

2. 请求头包含主机地址,以及客户端的一些环境信息,以键值对的形式传递

3. 请求体,可以承载多个请求参数的数据  例如:username=admin&userpwd=123

五、服务器处理请求并返回 HTTP 报文

服务器收到了我们的请求,也处理我们的请求,到这一步,它会把它的处理结果返回,也就是返回一个HTPP响应。
一个http响应代表服务器向客户端回送的数据,它包括:响应行,响应头,响应体。

1.响应行里包含了http协议版本,以及用于描述服务器对请求的处理结果。
HTTP/1.1 (协议版本) 200(状态码) OK(状态码描述)

2.响应头用于描述服务器的基本信息,以及数据描述
Ser ver Apache-Coyote/1.1
Content-Type text /html;char set=UTF-8
Content-Length 0 Date Wed, 13 Sep 2017 02:26:07 GMT

3.响应体代表服务器向客户端浏览器回送的正文

六、浏览器解析渲染页面

浏览器解析服务器的响应并进行页面渲染,最后呈现丰富的网页在我们面前。
浏览器解析渲染页面分为一下五个步骤:

1.根据 HTML 解析出 DOM 树
2.根据 CSS 解析生成 CSS 规则树
3.结合 DOM 树和 CSS 规则树,生成渲染树
4.根据渲染树计算每一个节点的信息
5.根据计算好的信息绘制页面

七、TCP四次挥手

当数据传送完毕,需要断开 tcp 连接,此时发起 tcp 四次挥手。
在这里插入图片描述


总结

本章简要的介绍了输入URL到页面展示的基本过程,在面试中最好能够简洁清晰的描述出基本流程。同时读者可以查阅相关资料深入学习每个步骤背后的原理,例如DNS解析的步骤。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JinziH Never Give Up

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

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

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

打赏作者

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

抵扣说明:

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

余额充值