http和https建立连接的过程
http建立连接的过程
在浏览器地址栏输入url之后。
DNS域名解析(域名=>IP地址):
DNS缓存: 浏览器DNS缓存 操作系统DNS缓存
分级查找: 本地域名服务器 根域名服务器 COM顶级域名服务器 Google.com域名服务器
建立TCP连接(三次握手)->为什么两次握手不可以,一定要三次
过程:
客户端 -> 服务端:SYN=1(请求建立连接) 第一次握手:seq=n(序列号)
客户端 <- 服务端:SYN=1(同意建立连接) ack=n+1(确认收到消息) seq=x(服务端自己的序列号)
客户端 -> 服务端:SYN=0(表示开始发送信息) ack=x+1(确认收到信息) seq=n+1
三次握手的意义:
1.客户端具有发送信息的能力
2.服务端具有发送信息和接受信息的能力
3.客户端具有接受信息的能力
客户端发送http请求
服务端处理请求,返回http报文
客户端收到报文,解析渲染页面
(1). 浏览器收到HTML文档,HTML相当于网页的框架结构
解析HTML过程:
首先,浏览器得到的是显示字节内容的html文件
浏览器将季节内容转换为字符文件
将字符转换为token(符号标签)
将token转变为节点对象,然后将节点对象连接起来形成DOM树
(2).在HTML文档解析的过程中,会遇到
link
标签外链的css文件这时候会请求并解析css文件,但并不会阻塞第一步解析HTML文件解析css过程:
前几个步骤与HTML文档解析相似:字节文件>字符文件>token>节点对象
最后一步会将节点对象结合为CSSOM树
(3).在HTML解析时,遇到
link
标签外链的js文件或者script内的js代码时解析JS文件的过程:
1).浏览器会请求js代码,并返回,这时候HTML文件的解析会停下来,
2).但是CSS文件的解析不会停止,所以会构造出CSSOM树,
3).在构建CSSOM树的时候,返回的js文件并不会执行,在CSSOM树构建完成,才会运行JS文件。
4).JS文件执行结束后,HTML继续解析并构建出DOM树,进行下一步。
(4)前两步结束之后,DOM树和CSSOM树会结合生成渲染树render树。
注意点:DOM树会将所有节点都组成树结构,而render树会将所有显示的阶段组成树结构。
(5)布局:获取渲染树结构、节点位置和大小
(6)绘制,根据render树和布局绘制页面
解除连接(四次挥手)
客户端 -> 服务端:发送释放连接报文,并停止发送数据
客户端 <- 服务端:收到连接释放报文,并发出确认消息。进入close-wait(等待关闭)状态
客户端 <- 服务端:发送数据完毕,并发出释放连接报文
客户端 -> 服务端:收到连接释放报文,并发出确认消息
HTTPS建立连接的过程
在浏览器地址栏输入url之后。
DNS域名解析(域名=>IP地址):
DNS缓存:
浏览器DNS缓存
操作系统DNS缓存
分级查找:
本地域名服务器
根域名服务器
COM顶级域名服务器
Google.com域名服务器
建立连接(与http三次握手的区分)
客户端->服务端:客户端发送支持的加密协议即版本,ssl、tls。
客户端<-服务端:服务端从客户端发来的协议中筛选合适的加密协议,并返回证书,证书中有公钥。
客户端->服务端:客户端使用根证书验证证书的合法性,并生成对称密钥,通过证书中的公钥加密,发送到服务端。
客户端<-服务端:服务端使用私钥解密,获取对称密钥,使用对称密钥加密确认信息,并发送至客户端。
最后,客户端在收到服务端用私钥加密过后的确认信息之后,两端即可使用对称加密方式进行交流了。
后续过程与http相同,只不过在每次请求是需要加密,接受数据后进行解密。