浏览器输入URL后发生了什么?

1.合成URL
浏览器会根据内容判断是搜索还是网址;
判断的话,会将搜索内容+默认搜索引擎合成新的url;
网址的话,加上协议合成合法的url

2.DNS域名解析,在客户端和浏览器
本地DNS直接查询方式是递归查询;
从浏览器缓存中查找->本地的hosts文件查找->找本地DNS解析器缓存查找->本地DNS服务器查找,这个过程中任何一步找到了都会结束查找流程。
本地DNS服务器与跟域及其子域查询方式是迭代查询;
如果本地DNS服务器无法查询到,则根据本地DNS服务器设置的转发器进行查询

如图:

3.建立TCP连接
首先,判断是不是https的,如果是,则HTTPS其实是HTTP + SSL / TLS 两部分组成,也就是在HTTP上又加了一层处理加密信息的模块。
服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
1.第一次握手,建立连接。客户端向服务器发送报文。
表示客户端可以向服务器发送信息;
2.第二次握手,服务器收到报文。对于报文进行确认,并将这个报文加上自己的一些信息,发送给客户端;
表示服务器可以接收客户端信息和发送信息给客户端。
3.第三次握手,客户端收到报文,再次向服务器发送报文。
表示客户端可以接受服务器的信息
SSL握手待更新.......

4.发送Http请求,服务器处理请求,返回响应结果
tcp连接建立后,浏览器就可以利用HTTP/HTTPS协议向服务器发送请求了。

5.关闭TCP连接,4次挥手
1.第一次挥手,主机1(可以使客户端,也可以是服务器端)向主机2发送报文;
表示主机1没有数据要发送主机2
2.第二次挥手,主机2收到主机1的报文,向主机1发送响应报文;
表示主机2告诉主机1,同意其的关闭请求
3.第三次挥手,主机2向主机1发送报文,请求关闭连接
4.第四次挥手,主机1收到报文,向主机2发送响应报文;
主机2收到报文后,就关闭连接了;
主机1等待2MSL后依然没收到回复,证明服务器已关闭;
主机1也关闭连接了。

6.浏览器渲染
按照渲染的时间顺序,流水线可分为如下几个子阶段:构建 DOM 树、样式计算、布局阶段、分层、栅格化和显示。
1.渲染进程将 HTML 内容转换为能够读懂DOM 树结构。
2.渲染引擎将 CSS 样式表转化为浏览器可以理解的styleSheets,计算出 DOM 节点的样式。
3.创建布局树,并计算元素的布局信息。
4.对布局树进行分层,并生成分层树。
5.为每个图层生成绘制列表,并将其提交到合成线程。合成线程将图层分图块,并栅格化将图块转换成位图。
6.合成线程发送绘制图块命令给浏览器进程。浏览器进程根据指令生成页面,并显示到显示器上。

原文地址:https://www.cnblogs.com/ssszjh/p/13182791.html