前世今生
- HTTP 协议始于三十年前蒂姆·伯纳斯 - 李的一篇论文
- URI:即统一资源标识符,作为互联网上资源的唯一身份
- HTML:即超文本标记语言,描述超文本文档
- HTTP:即超文本传输协议,用来传输超文本
- HTTP/0.9 是个简单的文本协议,只能获取文本资源
- 只允许用“GET”动作从服务器上获取 HTML 文档,并且在响应请求之后立即关闭连接,功能非常有限
- HTTP/1.0 确立了大部分现在使用的技术,但它不是正式标准
- 增加了 HEAD、POST 等新方法
- 增加了响应状态码,标记可能的错误原因
- 引入了协议版本号概念
- 引入了 HTTP Header(头部)的概念,让 HTTP 处理请求和响应更加灵活
- 传输的数据不再仅限于文本
- HTTP/1.1 是目前互联网上使用最广泛的协议,功能也非常完善
- 增加了 PUT、DELETE 等新的方法
- 增加了缓存管理和控制
- 明确了连接管理,允许持久连接
- 允许响应数据分块(chunked),利于传输大文件
- 强制要求 Host 头,让互联网主机托管成为可能
- HTTP/2 基于 Google 的 SPDY 协议,注重性能改善,但还未普及
- 二进制协议,不再是纯文本
- 可发起多个请求,废弃了 1.1 里的管道
- 使用专用算法压缩头部,减少数据传输量
- 允许服务器主动向客户端推送数据
- 增强了安全性,“事实上”要求加密通信
- HTTP/3 基于 Google 的 QUIC 协议,是将来的发展方向
- 2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”更名为“HTTP/3”并获得批准,HTTP/3 正式进入了标准化制订阶段,也许两三年后就会正式发布,到时候我们很可能会跳过 HTTP/2 直接进入 HTTP/3
HTTP 是什么
- HTTP 就是超文本传输协议,也就是HyperText Transfer Protocol
- 协议
- HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式
- 传输
- HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范
- 超文本
- 超越了普通文本的文本”,它是文字、图片、音频和视频等的混合体,最关键的是含有“超链接”,能够从一个“超文本”跳跃到另一个“超文本”,形成复杂的非线性、网状的结构关系
- 协议
HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
- HTTP 不是一个孤立的协议
- 在互联网世界里,HTTP 通常跑在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP 协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。此外,还有一些协议依赖于 HTTP,例如 WebSocket、HTTPDNS 等。这些协议相互交织,构成了一个协议网,而 HTTP 则处于中心地位
补充知识
互联网的正式名称是 Internet,里面存储着无穷无尽的信息资源,我们通常所说的“上网”实际上访问的只是互联网的一个子集“万维网”(World Wide Web),它基于 HTTP 协议,传输 HTML 等超文本资源,能力也就被限制在 HTTP 协议之内
互联网上还有许多万维网之外的资源,例如常用的电子邮件、BT 和 Magnet 点对点下载、FTP 文件下载、SSH 安全登录、各种即时通信服务等等,它们需要用各自的专有协议来访问
不过由于 HTTP 协议非常灵活、易于扩展,而且“超文本”的表述能力很强,所以很多其他原本不属于 HTTP 的资源也可以“包装”成 HTTP 来访问,这就是我们为什么能够总看到各种“网页应用”——例如“微信网页版”“邮箱网页版”——的原因
综合起来看,现在的互联网 90% 以上的部分都被万维网,也就是 HTTP 所覆盖,所以把互联网约等于万维网或 HTTP 应该也不算大错