http
- 超文本传输协议
- 应用层协议,基于TCP协议
- 请求 响应
- 简单可扩展
- 无状态
http协议发展
最常见的和标准的 - http1.1 - 有了缓存能力 更优异的和更好的 - http2.0 -
http1.1协议分析
由三个部分组成:
- 起始行(start line)
- 请求头(HTTP headers)
- 内容(body)
Method
安全与幂等
安全(safe):不会修改服务器的数据的方法,如GET 幂等(Idempotent):同样的请求执行多次产生的效果是一样的,服务器的状态也是一样的,所有Method都是幂等的
状态码
一些常见的状态码
RESTful API
一种风格或叫约定。使用http method来对服务端发起一系列请求。目的在于明确请求的语义。
下面是一些常见的用法:
常用的请求头
常用的响应头
缓存
- 强缓存:如果本地有缓存,直接使用
- 协商缓存:需要协商查看本地缓存是否过期或是否为最新的
两种缓存方式的相关字段:
缓存使用和请求的流程
Cookie
Cookie是什么
cookie是服务端生成的一段数据,发送给请求方,该请求方后续访问需要带上这段数据。浏览器作为请求放则会保存这段数据。
Cookie的作用
- 识别请求方的身份
- 记录历史
识别身份
A用户访问网站,登录后获得了cookie,之后A用户再打开一个页面访问网站就不需要登录了。因为根据Cookie已经可以识别A用户登录了。当Cookie过期后,需要重新登录。
记录历史
A用户访问网站,填写问卷调查信息,提交表单,服务器返回成功和一个cookie,记录当前用户已经填写过。A用户再打开想填写时,因为已经带上cookie,所以服务端知道,重定向请求到感谢填写问卷调查页面。
cookie的所有设置都是以key=value的形式存放
http2
帧(frame)
http2通信的最小单位,每个帧都包含帧头,至少也会标示出当前帧所属的数据流。
传输时与http1.1不同,不再是文本流的传输,而是二进制数据流的传输。
消息
逻辑请求或响应消息对应的完整的一系列帧,称之为消息
数据流
已建立的连接内的双向字节流,可以承载一条或多条消息。
连接复用
http2的连接都是永久的,可以复用。
控制流
阻止发送方 向 接收方发送大量数据的机制。
服务器推送
https
加密的http协议,经过TSL/SSL加密。
对称加密
加解密都是用同一密钥。 无法防止中间人攻击。
非对称加密
加解密使用不同的密钥:公钥(public key)和私钥(private key)。 可以防止中间人攻击。