输入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文件并且构建DOM,DOM可以部分解析:
构建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. 绘制
把渲染树以像素的形式绘制在页面