HTTP|青训营笔记

44 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第5天

介绍

HTTP 是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。

发展

  • HTTP/0.9
  • HTTP/1.0
  • HTTP/1.1
  • HTTP/2
  • HTTP/3

HTTP/0.9

0.9版本由于网络资源匮乏,采用纯文本格式,且设置为只读,只能通过"GET"从服务器获得HTML文档,响应以后则关闭如下所示

GET /helloworld.html

响应中只包含了文档本身。相应内容无响应头,无错误码,无状态码。

<html>
    hello world
</html>

HTTP/1.0

相比0.9,新增以下几个方面

  • 新增POST方法,Head方法
  • 加入协议版本号,同时添加文件处理类型
  • 加入HTTP Header,让HTTP处理请求更加灵活
  • 增加响应状态码,标记出错的原因
  • 提供国际化支持

HTTP/1.1

  • 增加PUT等方法

  • 允许持久连接

    随着文件越来越大,图片等信息越来越复杂,如果每一次上传下载文件都需要建立连接断开连接的过程将增加大量的开销。为此,提出了持久连接,也就是一次TCP连接可以具有多个HTTP请求。

  • 强制要求HOST头

    将大文件切分为小文件

HTTP/2

解决线头阻塞问题,让各个流之间实现相互独立传输,互不干扰

切换网络时的连接保持。wifi和3G/4G经常需要来回切换。基于TCP的协议,会因为网络的切换导致IP地址的改变。而基于UDP的QUIC协议,及时切换也可以恢复之前与服务器的连接。

HTTPS

安全四要素

  • 机密性
  • 完整性
  • 身份认证
  • 不可否认

ssl握手协议

  • 记录协议
  • 警报协议
  • 变更密码规范协议
  • 对称加密
  • 非对称加密
  • 混合加密

参考

HTTP | MDN