初识HTTP

简介: 初识HTTP

前言

HTTP协议在我们的生活中随处可见,打开手机或者电脑,只要你上网,后面总有HTTP在默默为你服务

目前全球至少有16亿个网站、2亿多个独立域名,而这个庞大网络世界的底层运转机制就是HTTP

那HTTP协议是怎么来的?最开始是什么样子的?又是如何发展到现在”统治“了互联网世界呢?

创世纪

1989 年,蒂姆·伯纳斯 - 李(Tim Berners-Lee)确立了互联网上构建超链接文档系统的三项关键技术

  1. URI:即统一资源标识符,作为互联网上资源的唯一身份
  2. HTML:即超文本标记语言,描述超文本文档
  3. HTTP:即超文本传输协议,用来传输超文本。

基于它们,就可以把超文本系统完美地运行在互联网上,蒂姆把这个系统称为“万维网”(World Wide Web),也就是我们现在所熟知的 Web。

所以在这一年**“HTTP”诞生了**,从此开始了它伟大的征途。

HTTP/0.9

20 世纪 90 年代初期 网络上绝大多数的资源都是纯文本,很多通信协议也都使用纯文本,所以 HTTP 的设计也不可避免地受到了时代的限制。

为了便于服务器和客户端处理,HTTP/0.9也采用了纯文本格式,所以结构比较简单。

坐着最初设想的系统里的文档都是只读的,所以只允许用“GET” 动作从服务器上获取 HTML 文档,并且在响应请求之后立即关闭连接

HTTP/1.0

它在多方面增强了 0.9 版,形式上已经和我们现在的 HTTP 差别不大了,例如:

  1. 增加了 HEAD、POST 等新方法;
  2. 增加了响应状态码,标记可能的错误原因;
  3. 引入了协议版本号概念;
  4. 引入了 HTTP Header(头部)的概念,让 HTTP 处理请求和响应更加灵活;
  5. 传输的数据不再仅限于文本

但HTTP/1.0 并不是一个“标准” ,只是记录已有实践和模式的一份参考文档,相当于一个“备忘录”。

所以 HTTP/1.0 的发布对于当时正在蓬勃发展的互联网来说并没有太大的实际意义

HTTP/1.1

HTTP/1.0 与 1.1一个重要的区别是:它是一个“正式的标准” ,而不是一份可有可无的“参考文档”。

这意味着今后互联网上所有的浏览器、服务器、网关、代理等等,只要用到 HTTP 协议,就必须严格遵守这个标准,相当于是互联网世界的一个“立法”。

注:所以可以说真正投入使用的HTTP版本只有 1.1 和之后,1.1之前的版本并没有正式的标准。

HTTP/1.1 主要的变更点有:

  1. 增加了 PUT、DELETE 等新的方法;
  2. 增加了缓存管理和控制;
  3. 明确了连接管理,允许持久连接;
  4. 允许响应数据分块(chunked),利于传输大文件;
  5. 强制要求 Host 头,让互联网主机托管成为可能。

注:自http1.1之后,版本没有小数点后的次版本号,名字是http/2和http/3

HTTP/2

HTTP/1.1 发布之后,整个互联网世界呈现出了爆发式的增长,但HTTP/1.1链接较慢的问题无法跟上迅猛发展的网络,但HTTP/1.1标准并未发生改变

因此Google决定开发自己的浏览器 Chrome,推出了新的 SPDY 协议,并在 Chrome 里应用于自家的服务器,从实际的用户方来“倒逼”HTTP 协议的变革。

Google“挟用户以号令天下”,把 SPDY 推上了标准的宝座,互联网标准化组织以 SPDY 为基础开始制定新版本的 HTTP 协议,最终在 2015 年发布了 HTTP/2

HTTP/2 的制定充分考虑了现今互联网的现状:宽带、移动、不安全,在高度兼容 HTTP/1.1 的同时在性能改善方面做了很大努力,主要的特点有:

  1. 二进制协议,不再是纯文本;
  2. ** 可发起多个请求**,废弃了 1.1 里的管道;
  3. 使用专用算法压缩头部,减少数据传输量;
  4. 允许服务器主动向客户端数据
  5. 增强了安全性,“事实上”要求加密通信。

注:虽然 HTTP/2 也衍生出了 gRPC 等新协议,但由于 HTTP/1.1 实在是太过经典和强势,目前它的普及率还比较低,大多数网站使用的仍然还是 20 年前的 HTTP/1.1。

HTTP/3

HTTP/3看到这里,你可能会问了:“HTTP/2 这么好,是不是就已经完美了呢?

在 HTTP/2 还处于草案之时,Google发明了一个协议,叫做 QUIC

而且还是相同的“套路”,继续在 Chrome 和自家服务器里试验着“玩”,依托它的庞大用户量和数据量,持续地推动 QUIC 协议成为互联网上的“既成事实”。

在2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC更名为“HTTP/3”并获得批准

我们很可能会跳过 HTTP/2 直接进入 HTTP/3。

小结

跨越三十年历史长河,回顾了 HTTP 协议的整个发展过程,在这里简单小结一下今天的内容:

  1. HTTP 协议始于三十年前蒂姆·伯纳斯 - 李的一篇论文;
  2. HTTP是传输文字,图片,音频,视频等点对点的传输规则,互联网上的一种规则,服从这种规则才能拿到互联网上的资源
  3. HTTP/0.9 是个简单的文本协议,只能获取文本资源
  4. HTTP/1.0确立了大部分现在使用的技术,但它不是正式标准
  5. HTTP/1.1 是目前互联网上使用最广泛的协议,功能也非常完善
  6. HTTP/2 基于 Google 的 SPDY 协议,注重性能改善,但还未普及
  7. HTTP/3 基于 Google 的 QUIC 协议,是将来的发展方向
推动http发展的原动力,说到底还是用户的需求。

刚开始是希望能做到超链接文档互联,所以 http0.9就够了

希望跟服务器交互,所以有了更多的请求方法; 描述请求的不同情况,增加响应状态码; 更灵活的请求,添加头部; 有图片,音视频等,传输的数据也不再限制为文本,允许响应数据块缓存管理和控制; 资源多了,就得允许连接持久。 需求复杂了,所以发展到了1.0 1.1 满足

再后来移动互联网加上请求更丰富,就要更加针对 1.1 的缺点和新的需求才出现了 http2 http3

小贴士

  1. 早期的HTTP/0.9 甚至都没有版本号

0.9这个版本号是后来区别1.0 / 1.1才加上去的。

  1. 一个有趣的事实:”World Wide Web”是英语中极少数缩写(WWW)比原文发音更长的词



目录
相关文章
|
22天前
|
安全 网络安全 数据安全/隐私保护
http-referr
http-referr
22 1
|
4月前
|
算法 数据安全/隐私保护 UED
什么是HTTP2
【4月更文挑战第12天】HTTP/2是1999年后HTTP协议的首次重大更新,由IETF的httpbis小组开发。关键特性包括头部压缩(使用HPACK算法)、多路复用(提高效率,减少延迟)、二进制传输(更灵活高效)和支持服务器推送(优化用户体验)。虽然语义不变,但HTTP/2已广泛应用于gRPC等服务,并强制要求使用HTTPS。这一更新显著提升了Web性能和用户体验。
32 5
|
4月前
|
网络协议 Linux Shell
http“超级应用与理解”
http“超级应用与理解”
|
4月前
|
Web App开发 缓存 网络协议
1.HTTP 前世今生
1.HTTP 前世今生
38 0
|
缓存 网络协议 C++
HTTP1.0 vs HTTP1.1 vs HTTP2.0
HTTP1.0 vs HTTP1.1 vs HTTP2.0
93 0
|
Web App开发 存储 网络协议
Http中你必须知道那点事
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看某一次请求的请求数据和响应数据具体的格式内容,如下图所示:
88 0
Http中你必须知道那点事
|
网络协议 前端开发 JavaScript
什么是http?
“超文本”这个词经常会引起误解,让人以为HTTP只能传输文本文件,个人觉得可能改名叫“超媒体传输协议”更加恰当。 本文对“协议”的解释比较通俗,严格来说协议应该包括语法、语义、同步规则和错误处理 我们通常使用浏览器访问的实际上是万维网(WWW),他是互联网(Internet)的一部分,但现在几乎很少有人能区分两者。
142 0
什么是http?
|
网络协议 安全 应用服务中间件
HTTP是什么?HTTP又不是什么?
HTTP是什么?HTTP又不是什么?
255 0
HTTP是什么?HTTP又不是什么?
|
存储 缓存 网络协议
HTTP/1.0 HTTP/1.1、HTTP/2、HTTP/3 都做了啥
简单的说是,超过普通文本。但具体一些,咋们说的普通文本一般是值文字组成的文章。但是在网页中,有这么一种文本,可以是文本、图片、音频、视频等组成。但是最关键的是里面还可以有超链接,从一个文本跳转到另外一个文本。
HTTP/1.0 HTTP/1.1、HTTP/2、HTTP/3 都做了啥
|
Web App开发 网络协议 安全
HTTP/3 来了,你了解它么?
作为我们网上冲浪最为常见,也经常被人忽视的 HTTP 已经更新换代到了 HTTP/3,是时候去学习下 HTTP/3 相关知识了。要深入了解 HTTP/3,那首先要知道什么是 HTTP/3。
234 0
HTTP/3 来了,你了解它么?