HTTP系列之HTTP各版本差异以及HTTPS

时间:2021-1-9 作者:admin

HTTP各版本差异以及HTTPS

HTTP/1.0 HTTP/1.1 HTTP/2.0 HTTP/3 对比

HTTP/1.1

相比于HTTP/1.0,区别:

  1. 缓存处理:在HTTP/1.0中header主要使用Expires、If-Modified-Since作为缓存判断依据,HTTP/1.1增加Entity tag、If-Match等条件请求,Cache-Control首部。
  2. 长连接:增加Connection首部,默认开启keep-alive,可以在一个TCP连接上传送多个请求和响应,减少TCP连接建立和关闭的消耗。HTTP/1.0需要使用keep-alive参数来开启。连接可复用,串行运行。
  3. Host首部,可以在一台物理服务器上存在多个虚拟主机,使用Host指定同一IP地址的不同主机名。HTTP/1.0默认一个IP对应一台服务器,没有此配置。
  4. 错误通知:新增24个错误状态响应码,如409 Confict表示请求的资源与资源的当前状态发生冲突。
  5. Range首部,可以请求资源的部分内容,从而实现断点续传。在HTTP/1.0中需要请求整个资源。

HTTP/2.0

  1. 二进制分帧:将所有传输的信息分割为更小的信息和帧,并对它们采用二进制格式编码
  2. 多路复用:基于二进制分帧,在同一域名下所有访问都是从同一个TCP连接走,http消息被分解为独立的帧,乱序发送,服务器根据标识符和首部将消息重新组装起来
  3. header压缩
  4. 服务端推送

HTTPS

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

  • HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替而已。通常,HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信。SSL是独立于HTTP的协议,也可配合其他应用层协议别SMTP等使用。

  • SSL握手:

  1. 客户端发送请求
  2. 服务器发送报文,包含SSL版本以及加密组件
  3. 服务器发送认证报文,包含公开密钥证书
  4. 服务器发送报文通知客户端,最初阶段的SSL握手协商部分结束
  5. SSL第一次握手结束后,客户端以Client Key Exchange报文回应,该报文用步骤3中的公开密钥进行加密
  6. 客户端发送Change Cipher Spec报文,提示服务器之后的报文会采用密钥加密
  7. 客户端发送Finished报文
  8. 服务端发送Change Cipher Spec报文
  9. 服务端发送Finished报文。SSL连接建立完成。之后通信受到SSL保护,从此开始应用层协议通信,即发送HTTP请求。
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。