从URL到显示内容简单来说可以分为以下6个步骤
- DNS解析:将域名解析成IP地址
- TCP连接 TCP三次握手
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 断开连接
DNS解析
在浏览器输入网址之后,首先要经过域名解析,因为浏览器不能直接通过域名找到相应的服务器,而是通过IP地址。
DNS协议提供通过域名查找IP地址,或者逆向从IP地址反查域名的服务,DNS是一个网络服务器,我们的域名解析简单的来说就是在DNS上记录一条信息记录
如何通过域名查询URL对应的IP
浏览器首先会通过浏览器的缓存来查找,因为浏览器会按照一定的频率缓存DNS记录。如果在浏览器中没有找到,则会到操作系统中查找,操作系统中没有找到会到到路由缓存中查找,然后在是ISP的DNS服务器中查找。ISP有专门的DNS服务器对DNS查询请求。如果在ISP的DNS服务器中没有找到,则会向根服务器中查找
浏览器通过向DNS服务器发送域名,DNS服务器查询到与域名想对应的IP地址,然后返回给浏览器,浏览器再将IP地址打在协议上,同时请求参数也会在协议搭载,然后一并发送给对应的服务器。
TCP
在客户端发送数据之前,会发起TCP三次握手用以同步客户端和服务端的序列号和确认号,并交互TCP窗口的大小信息
为什么需要三次握手
三次握手是保证双方互相明确对方能发能收的最小次数,也能够防止失效连接请求报文段突然又传送给服务器,因而产生错误
发送HTTP请求
TCP三次握手结束后,开始发送HTTP请求报文。请求报文由请求行、请求头和请求体三部分组成
- 请求行
请求行包括请求方式,请求地址和协议版本号 - 请求头
请求的附加信息,由关键字/值对组成 - 请求体
承载多个请求参数的数据
服务器处理请求并返回HTTP报文
服务器是网络环境中的高性能计算机。它监听网络上其他计算机提交的服务请求,并提供相应的服务。监听请求主要是靠web server担任管控角色。
Http响应报文
响应报文由响应行、响应头部和响应主体三个部分组成
- 响应行
响应行包括协议版本、状态码和状态描述
状态码规则
1xx 知识信息 表示请求已经接收,继续处理
2.xx 成功,表示请求被成功接收
3.xx重定向
4.xx客户端错误
5.xx 服务端错误
浏览器解析渲染
浏览器渲染解析简单的来说分为以下四部,第一步把HTML解析成DOM Tree,第二步把样式生成渲染树(render tree),第三步组织render tree试图。第四步UI后台程序绘制。
具体的步骤如下
- 解析HTML文档的时候,把HTML文档解析成Content tree,同时把HTML中的节点转换成树中的节点即DOM节点,同时也会解析HTML中的样式表,包括内部样式和外部样式,渲染引擎会把样式转换成渲染树(render tree).Render Tree可视化属性包括颜色、尺寸等信息。这些矩形盒子都是按照在屏幕上的显示顺序排序
在构建完渲染树之后,将会进行Layout过程。这一过程将就是给每一个节点设置在屏幕上显示正确的坐标位置。下一个阶段就是绘制阶段(Paint)渲染树将会通过UI后台处理层,每一个节点都将绘制。
精简CSS可以加快CSS规则树的构建,从而加快相应的速度
在Layout的过程中首先会对节点进行布局,通过渲染树中渲染对象的信息,计算出每一个渲染对象的位置和尺寸。在布局完成之后,发现某个部分发生变化,影响布局,那么就需要重新渲染
在计算好节点在屏幕上的位置之后,系统会遍历呈现树,并调用呈现器的paint方法,将呈现器的内容显示在屏幕上,这个过程中,会不断的触发重绘和回流的过程。重绘就是某个元素的背景颜色、文字颜色等,不影响周围或者内部布局的属性,将会引发浏览器的重绘。回流,某个元素尺寸发生变化,则重新计算渲染树,重新渲染
断开连接
当数据传送完毕,需要断开tcp连接
网友评论