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

128 阅读2分钟

输入URL

https://www.baidu.com/

在浏览器搜索栏上输入地址URL,但是还不能找到服务器地址

DNS解析

把URL地址解析为ip地址的过程就是DNS解析,也就是说DNS就是一个数据库,记录着URL和对应的ip地址,有了ip地址,就可以在互联网里找到指定的服务器了。

客户端输入URL --> DNS解析 ——> ip地址 --> 服务器 

患者主诉病情 --> 问询台 --> 医院科目对应的地址 --> 科室具体地址

TCP三次握手

正式发送数据之前,建立TCP连接(通道):

1. 客户端发送SYN数据包,表示请求连接;(先敲门请求进门)
2. 服务器响应SYN和ACK数据包,表示同意建立连接;(得到回应后表示同意进门)
3. 客户端再发送SYN数据包,表示成功连接;(进门确认)

发送HTTP请求

TCP连接建立后,浏览器发送HTTP请求报文给服务器:

[请求行]    请求方法、请求地址、HTTP协议版本
[请求头部]   关于浏览器的信息,由键值对组成
[空行]       表示下面没有请求头部了
[请求数据]    告诉服务器需要什么数据,需要以什么样的形式获取数据

服务器会处理请求报文,并做出响应:

[状态行]    Status Code:404
[响应头部]   Content-type:text/html
[空行]       表示下面没有响应头部了
[响应数据]    

浏览器渲染页面

1. 构建DOM

浏览器请求服务器得到HTML文件,即网页的框架结构,解析HTML文件并且构建DOMDOM可以部分解析:

构建DOM时遇见JS,就请求下载执行JS,同时JS可对DOM修改,JS如果没有额外的设置,默认要等CSSOM构建完成。

显示字节内容的`HTML`文件;
| 转化为
显示字符内容的`HTML`文件;(给程序员看懂的HTML代码)
| 转化为
显示符号标签的Token文件;
| 转化为
节点对象
| 连在一起
DOM 文本对象模型;(浏览器自己的语言)

2. 构建CSSOM

把CSS样式作为外链加入到link标签里面

<link rel="stylesheet" type="text/css" href="index.css">

浏览器在构建DOM时,遇link标签,请求服务器得到CSS文件,解析CSS文件(CSSOM不能部分解析),并且构建CSSOM

字节 --> 字符 --> Token --> 节点 --> CSSOM (css对象模型) 

3. 构建渲染树

DOM + CSSOM

渲染树的节点是页面呈现的内容。不会被呈现出来的,不会挂到树上,比如<meta><link>display:none

渲染树的任务是匹配DOM和CSSOM的节点,并捕获可见内容

4. 布局

获取渲染树的结构,节点位置和大小,依据盒子模型来进行的,每个元素用一个盒子来表示,这些盒子在页面上进行排列和嵌套,

5. 绘制

把渲染树以像素的形式绘制在页面