02.http协议

159 阅读2分钟

http协议的概念

http是一种超文本传输协议,是无状态的,以请求应答方式运行的协议,使用可扩展的语义和自描述消息格式。 http协议是基于tcp协议来传输数据的。

http协议的发展

http0.9:HTTP/0.9是第一个版本的HTTP协议,已过时。只允许客户端发送GET这一种请求,不支持请求头。由于没有协议头,造成了HTTP/0.9协议只支持一种内容,即纯文本。不过网页仍然支持用HTML语言格式化,同时无法插入图片,这个时候的http协议就已经具有无状态性的特点了。后面出现了http1.0、http1.1、http2.0等

http1.0

相比http0.9的优势:

  1. 支持请求头和响应头
  2. 响应对象以一个响应状态行开始
  3. 响应对象不只限于超文本
  4. 支持post请求提交数据,支持get,head,post方法。
  5. 支持长连接(还还没成为标准),缓存机制,还有支持身份认证

http1.1

相比http1.0的优势:

  1. 默认为长连接,keep-alive:connection
  2. 支持在一个tcp连接上传送多个请求和响应(但是还是有缺点,要排队完成,会造成队头堵塞)
  3. 增加了缓存处理字段比如Cache-Control
  4. 新增了一些状态码,如409(conflict)表示请求的资源与当前资源发生冲突,410Gone,资源永久删除

http2.0

  1. 二进制分帧:把数据分割成以帧为单位的小数据,并且同一个数据里的小数据会有一个相同的标识符
  2. 多路复用:解决了上一个版本的队头堵塞的问题,一个TCP连接可以交错传递帧,还可以这些帧的优先级。(持久化连接)
  3. 头部压缩,每次请求都要携带头部信息,会浪费资源,所以要求通讯双方各缓存一份首部字段表。
  4. 服务端推送,服务端会推测客户端可能需要的资源(缺点,客户端误触,但发送资源。增加浏览器缓存压力)

HTTPS

https相比http多了层安全加密协议,就是SSL/TLS协议,现在用的比较多的是TLS。在http请求的基础上对数据进行加密以保证传输的安全性。

HTTPS请求流程:

图片.png

  • 客户端发起请求
  • 服务端返回公钥
  • 客户端验证公钥有效性
  • 生成一个随机数
  • 用公钥对随机数进行加密
  • 将密钥传输给服务端
  • 服务端用私钥进行解密
  • 用解密得到的随机数对要响应给客户端的数据进行加密
  • 客户端拿到加密数据用随机数解密。