这是我参与「第四届青训营 」笔记创作活动的的第7天
👋本文分为2部分:1. 初识HTTP 2. 协议分析(报文解析/发展——HTTP/2、发展——HTTPS)
初识HTTP
😁 背景知识 | 概念 | 特点
🤔我们来想一个问题,当我们在地址栏里输入地址到页面内容呈现,这个过程发生了什么?
流程分析:
而我们今天要讲的是与网络请求相关的那一部分(红色框框包裹起来的那一部分)
初识HTTP——什么是HTTP
- Hyper Text Transfer Protocol超文本传输协议(所谓的超文本其实他能承载多种体裁)
- 应用层协议,基于TCP协议
- 请求响应
- 简单可扩展
- 无状态(每个请求都是孤立的)
协议分析
😁 持续发展 | 报文解析
发展历程
报文解析
👋HTTP报文是在HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。
结构(以HTTP/1.1为例)
Method
Method的特点: Safe(安全的):不会修改服务器的数据的方法(GET HEAD OPTIONS)
Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是Idempotent的(GET HEAD OPTIONS PUT DELETE)
状态码
RESTful API
RESTful API:一种APl设计风格;REST-Representational State Transfer
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”。
常用请求头
常用响应头
👋接下来我们来结合具体的场景来了解一下请求头和响应头
场景一:缓存
缓存可以分为两类:强缓存和协商缓存
强缓存:需要的资源本地有的,就直接用就好了
协商缓存:本地有一段缓存,但要确定这段缓存能不能用、是不是最新的,就要跟服务端进行通信,彼此印证一下(有一段通信协商的过程)
🤔跟缓存相关有这么多的请求头,在浏览器中这些请求头有什么优先顺序或者处理顺序的概念呢?
场景二:cookie
很多情况下我们会借助cookie来携带一些用户身份相关的信息
发展——HTTP/2
HTTP/2概述:更快、更稳定、更简单
基本概念
-
帧(frame):HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。
- 帧的传输过程中是使用二进制编码的形式(效率更高)
-
消息:与逻辑请求或响应消息对应的完整的一系列帧。
-
数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
- 交错发送,接收方重组织
HTTP/2特性
- HTTP/2 连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据的机制
- 服务器推送
服务器推送:我们在浏览器端请求了一个/page.html,在服务器端接收到了请求并返回/page.html给我们,但是服务器端分析了/page.html发现里面引用了/script.js和/style.css,它就很智能地分析出来我们大概率会请求这两个文件,为了加快效率,它就会提前把这两份文件POST给我们(服务器有着主动推送信息给我们接收端的能力)
发展——HTTPS
在HTTP的基础上经过一个数据加密的过程,使数据传输的过程中安全性更高
基本概述
- HTTPS : Hypertext Transfer Protocol Secure
- 经过TSL/SSL加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密,加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)