首页 > 其他分享 >HTTP的前世今生

HTTP的前世今生

时间:2022-10-28 00:00:55浏览次数:49  
标签:协议 今生 HTTP 1.1 前世 互联网 超文本 服务器

HTTP的前世今生

HTTP的历史

诞生前

1989 年,蒂姆·伯纳斯·李提出了在互联网上构建超链接文档系统的构想,确立了三项关键技术。

  • URI:统一资源标识符,作为互联网上资源的唯一身份;

  • HTML:超文本标记语言,描述超文本文档;

  • HTTP:超文本传输协议,用来传输超文本。

基于它们,就可以把超文本系统完美地运行在互联网上,让各地的人们能够自由地共享信息,蒂姆·伯纳斯 李把这个系统称为“万维网”(World Wide Web)

HTTP/0.9

20 世纪 90 年代初期,计算机处理能力低,存储容量小,网速很慢,网络上绝大多数的资源都是纯文本,很多通信协议也都使用纯文本,所以 HTTP 的设计也不可避免地受到了时代的限制。

这一时期的 HTTP 被定义为 0.9 版,结构比较简单,为了便于服务器和客户端处理,它也采用了纯文本格式。蒂姆·伯纳斯·李最初设想的系统里的文档都是只读的,所以只允许用``GET`动作从服务器上获取 HTML 文档,并且在响应请求之后立即关闭连接,功能非常有限。

HTTP/1.0

1993 年,NCSA开发出了 Mosaic,是第一个可以图文混排的浏览器,随后又在 1995 年开发出了服务器软件 Apache,简化了 HTTP 服务器的搭建工作。同一时期,计算机多媒体技术也有了新的发展:1992 年发明了 JPEG 图像格式,1995 年发明了 MP3 音乐格式。

这些新软件新技术吸引了更多的人开始使用互联网,研究 HTTP 并提出改进意见,甚至实验性地往协议里添加各种特性,从用户需求的角度促进了 HTTP 的发展。

于是在这些已有实践的基础上,经过一系列的草案,HTTP/1.0 版本在 1996 年正式发布。它在多方面增强了 0.9 版,形式上已经和我们现在的 HTTP 差别不大了,例如:

  • 增加了HEAD,POST等新方法;

  • 增加了响应状态码,标记可能的错误原因;

  • 引入了协议版本号概念;

  • 引入了 HTTP Header的概念,让 HTTP 处理请求和响应更加灵活;

  • 传输的数据不再仅限于文本。

此时的HTTP/1.0还不是一个“标准”,只是记录已有实践和模式的一份参考文档。

HTTP/1.1

1995 年,网景的 Netscape Navigator 和微软的 Internet Explorer 开始了著名的“浏览器大战”,都希望在互联网上占据主导地位。

这次竞争再一次极大地推动了 Web 的发展,HTTP/1.0 也在这个过程中经受了实践检验。于是在“浏览器大战”结束之后的 1999 年,HTTP/1.1 发布了 RFC 文档,编号为 2616,正式确立了延续十余年的传奇。

从版本号我们就可以看到,HTTP/1.1 是对 HTTP/1.0 的小幅度修正。但一个重要的区别是:它是一个“正式的标准”,而不是一份可有可无的“参考文档”。这意味着今后互联网上所有的浏览器、服务器、网关、代理等等,只要用到 HTTP 协议,就必须严格遵守这个标准,相当于是互联网世界的一个“立法”。HTTP/1.1 还有很多实质性进步,表述也更加严谨:

  • 增加了``PUT、DELETE`等新的方法;

  • 增加了缓存管理和控制;

  • 明确了连接管理,允许持久连接;

  • 允许响应数据分块,利于传输大文件;

  • 强制要求``Host`头,让互联网主机托管成为可能。

HTTP/1.1 的推出开启了后续的“Web 1.0”“Web 2.0”时代。现在许多的知名网站都是在这个时间点左右创立的,例如 Google、新浪、搜狐、网易、腾讯等。

HTTP/2

HTTP/1.1 发布之后,整个互联网世界呈现出了爆发式的增长,涌现出了 Facebook、Twitter、淘宝、京东等互联网新贵。但是HTTP/1.1连接慢,无法跟上迅猛发展的互联网,但 HTTP/1.1 标准一直没有改变,于是产生了切图、JS 合并等网页优化手段。

之后,Google 首先开发了自己的浏览器 Chrome,然后推出了新的 SPDY 协议,并在 Chrome 里应用于自家的服务器,如同十多年前的网景与微软一样,从实际的用户方来“倒逼”HTTP 协议的变革,这也开启了第二次的“浏览器大战”。

历史再次重演,不过这次的胜利者是 Google,Chrome 目前的全球的占有率超过了 60%。“挟用户以号令天下”,Google 借此顺势把 SPDY 推上了标准的宝座,互联网标准化组织以 SPDY 为基础开始制定新版本的 HTTP 协议,最终在 2015 年发布了 HTTP/2,RFC 编号 7540。

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

  • 二进制协议,不再是纯文本;

  • 可发起多个请求,废弃了 1.1 里的管道;

  • 使用专用算法压缩头部,减少数据传输量;

  • 允许服务器主动向客户端推送数据;

  • 增强了安全性,“事实上”要求加密通信。

HTTP/3

在 HTTP/2 还处于草案之时,Google 又发明了一个新的协议,叫做QUIC,而且还是相同的“套路”,继续在 Chrome 和自家服务器里试验着“玩”,依托它的庞大用户量和数据量,持续地推动 QUIC 协议成为互联网上的“既成事实”。在2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”更名为“HTTP/3”并获得批准,HTTP/3 正式进入了标准化制订阶段。

HTTP是什么

HTTP超文本传输协议,也就是 HyperText Transfer Protocol.

超文本

HTTP 传输的不是TCP/UDP 这些底层协议里的杂乱的二进制包,而是完整的、有意义的数据,可以被浏览器、服务器这样的上层应用程序处理。早期的互联网中的文本只是简单的字符,但是现在文本已经扩展到图片、音频、视频等形式。超文本指的就是包含了文字、图片和音视频的混合,并且含有超链接,能够从一个超文本跳转到另一个超文本,形成复杂的网状结构。

传输

双向

在两个参与者AB之间,从A开始到B结束,但是数据在A和B之间是双向流动的。我们将发起传输动作的A叫做请求方,接收传输的叫做应答方,双方约定使用HTTP协议来通信。

中间人

数据虽然在A和B之间传输,但是允许中间有“中转”或者“接力”,中间人必须遵守HTTP协议,只要不干扰最基本的数据传输,可以添加其它额外的功能,比如安全认证、数据压缩、编码转换等

协议

HTTP是一个用在计算机世界的协议,使用计算机能够理解的语言确立了一种计算机之间交流通信的贵发,以及相关的各种控制和错误处理方式。

HTTP不是什么

不是单独的实体

HTTP是一个通信协议,所以不存在单独的实体,不是系统、应用程序或是服务器。但是HTTP与操作系统、应用程序和服务器等密切相关,他们之间发生着动态的通信过程。

不是孤立的协议

在互联网世界里,HTTP 通常跑在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP 协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。此外,还有一些协议依赖于 HTTP,例如 WebSocket、HTTPDNS 等。这些协议相互交织,构成了一个协议网,而 HTTP 则处于中心地位。

标签:协议,今生,HTTP,1.1,前世,互联网,超文本,服务器
From: https://www.cnblogs.com/euler0525/p/16834441.html

相关文章

  • 【XMLHttpRequest】
    constxhr=newXMLHttpRequest();xhr.open("POST","/menu/list/111",false);xhr.onload=function(){if(xhr.readyState===4&&xhr.status===200){//xhr.......
  • HTTP状态 500 -内部服务器错误
    问题描述:  实例化Servlet类的时候出现了如下异常问题经过查阅资料发现:是由于tomcat服务器版本和JRE版本不匹配问题造成的Tomcat服务器版本和JDK匹配版本如下表:根据上表下......
  • http和https的区别
    http也就是超文本传输协议,是互联网上应用最为广泛的一种传输协议,是以明文方式发送消息的,所以有不发分子截取了web浏览器和服务器之间的传输报文,就可以直接获得信息,可想而知......
  • git报错fatal: unable to access ‘https://github.com/‘: OpenSSL SSL_read: Connec
    bug描述fatal:unabletoaccess‘https://github.com/…’:OpenSSLSSL_read:Connectionwasreset,errno10054bug产生原因产生原因:一般是这是因为服务器的SSL证......
  • 面试 考察网络请求HTTP相关知识(第六天!)
     01、HTTP常⻅的状态码有哪些?1xx服务器收到请求2xx请求成功     ---  200成功状态码3xx重定向      --- 301永久重定向,浏览器下次⾃动......
  • HTTP代理都是有什么功能,可以运用于哪里
    经常上网的朋友可能听说过HTTP代理,但它的真正功能很多人并不清楚。在这里普及一下吧。在我们大部分的网络活动中,http是一种比较常见的网络协议,所以http代理也是普通人......
  • 爬虫程序为啥使用了HTTP代理仍然无法正常工作
     以前我们讲过,爬虫程序工作基本上是离不开HTTP代理的,但是很多时候,我即使用上了代理,爬虫的工作情况仍不尽如人意,这是为什么呢?一、提高HTTP代理质量。不少......
  • 导致HTTP代理请求失败的原因
     在使用HTTP代理的过程中,并不会总是一帆风顺,HTTP代理请求数据失败的时候,就会让人非常恼火,有时候是第一次使用就失败了,有时候是使用了一段时间失败了,我们的第一反应......
  • HTTP代理使用过程中会遇到哪些常见网站防护策略
    每当我们使用HTTP代理请求网站失败时,总会认为是HTTP代理出现故障,但检查之后又发现,代理完全正常。这种情况就有可能是我们所访问网站的防护策略被触发了,导致爬虫程序......
  • nginxhttp转到https没有带端口
    nginxhttps自动跳转成http怎么解决您关闭301跳转,HTTPS自然就无法访问,如果您要HTTPS跳转HTTP,这个是不正确的行为,如果设置会导致搜索引擎蜘蛛混乱,无法确定实际网站,目前搜索......