HTTP协议原理
zKing 2018-10-21 HTTP
# 写在前头
- 首先献上 参考文档
- 然后开始解答一个问题“在浏览器中输入 URL 并回车后都发生了什么?”
- 通过这些问题再进一步加深理解
# 在浏览器中输入 URL 并回车后都发生了什么
# 解析 URL 进行跳转
# DNS 解析
- 查询浏览器缓存
- 检查系统缓存
- 检查路由器缓存
- 查询 ISP DNS 缓存
- 递归查询
# 浏览器与网站建立 TCP 连接(三次握手)
以下的等于 1,是表示它占据了第一个标志位,并不是说对应的数值
- 第一次握手:客户端向服务器端发送请求(SYN=1) 等待服务器确认;
- 第二次握手:服务器收到请求并确认,回复一个指令(SYN=1,ACK=1);
- 第三次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。
# HTTP 请求和传输数据
# HTTP 请求方法
- GET:获取资源
- POST:传输实体主体
- HEAD:获取报文首部
- PUT:传输文件
- DELETE:删除文件
- OPTIONS:询问支持的方法
- TRACE:追踪路径
# HTTP 请求报文
HTTP 请求报文是由三部分组成: 请求行, 请求报头和请求正文。
# 服务器处理请求并返回 HTTP 报文
HTTP 响应报文也是由三部分组成: 状态码, 响应报头和响应报文。
常见的状态码请点击 这里 查看
# 浏览器渲染页面
- 浏览器解析 HTML 文件构建 DOM 树
- 然后解析 CSS 文件构建渲染树,计算出最终的样式数据,形成 css 对象模型 CSSOM。
- 利用 DOM 和 CSSOM 构建一个渲染树
- 等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。这个过程比较复杂,涉及到两个概念: reflow(回流)和 repain(重绘)。
- reflow
- DOM 节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器去计算其位置和大小等的过程称为“回流”。
- repain。
- 当盒模型的位置,大小以及其他属性,如颜色,字体,等确定下来之后,浏览器便开始绘制内容的过程称为“重绘”。
- reflow
- 页面在首次加载时必然会经历 reflow 和 repain。
- reflow 和 repain 过程是非常消耗性能的,尤其是在移动设备上,它会破坏用户体验,有时会造成页面卡顿。所以我们应该 尽可能少的减少 reflow 和 repain。
# 总结
最后,用一张图来进行总结,更加深入的知识将放在其他文章中。