HTTP 第二章 发展历史

这篇具有很好参考价值的文章主要介绍了HTTP 第二章 发展历史。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


HTTP(HyperText Transfer Protocol)是万维网(World Wide Web)的基础协议。

1989 年,当时在 CERN 工作的 Tim Berners-Lee 博士写了一份关于建立一个通过网络传输超文本系统的报告。这个系统起初被命名为 Mesh
Tim Berners-Lee 对于 Web 的最初设想不是一个只读媒体,是可以远程添加或移动文档,是一种分布式文件系统。

1990 年项目实施期间被更名为万维网(World Wide Web)。基于现有的TCP 和 IP 协议基础建立。由四部分组件

  • 超文本标记语言:用来表示超文本文档的文本格式,
  • 超文本传输协议:用来交换超文本文档的简单协议,
  • 网络浏览器: 显示(以及编辑)超文本文档的客户端。(第一个网络浏览器被称为 WorldWideWeb)
  • 服务器用于提供可访问的文档,即 httpd 的前身

1991 年 8 月 16 日,Tim Berners-Lee 在公开的超文本新闻组上发表的文章被视为是万维网公共项目的开始。此时的 HTTP 被称为 HTTP/0.9,又被称为 单行(one-line)协议

1994 年底, 网景公司在TCP/IP 协议基础上创建了一个额外的加密传输层:SSL。

  • SSL 1.0 没有在公司以外发布过
  • SSL 2.0 及其后继者 SSL 3.0 允许通过加密来保证服务器和客户端之间交换消息的真实性,来创建电子商务网站。
  • SSL 在标准化道路上最终成为了 TLS

HTTP/0.9——单行协议

最初版本的 HTTP 协议并没有版本号,后来它的版本号被定位在 0.9 以区分后来的版本。HTTP/0.9 的响应内容并不包含 HTTP 头,无法传输其他类型的文件。也没有状态码或错误代码。
出现问题会响应一个包含问题描述的 HTML 文件

  • 请求报文
    • 以唯一可用方法 GET 开头
    • 目标资源的路径(连接到服务器,协议、服务器、端口号这些都不是必须的)
GET /mypage.html
  • 响应报文
    • 只包含响应文档本
<html>
  这是一个非常简单的 HTML 页面
</html>

HTTP/1.0——构建可扩展性

  1. 增加版本协议:协议版本信息现在会随着每个请求发送(HTTP/1.0 被追加到了 GET 行)
  2. 增加状态码:状态码会在响应开始时发送
  3. 增加 HTTP 标头

在 1991-1995 年,这些新扩展并没有被引入到标准中,只作为一种尝试。。
服务器和浏览器添加这些新扩展功能,出现了大量的互操作问题。
此时 HTTP/1.0 具备了传输其他类型文档的能力。

请求获取图片

GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)

200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/gif
(这里是图片内容)

1996 年 11 月,HTTP 被扩展到允许创作,并且创建了一个名为 WebDAV 的标准。 并且解决之前已知问题,发表了 RFC 1945。用以描述如何操作实践这些新扩展功能。但它不是官方标准。

1997 年初,HTTP1.1 标准发布。HTTP/1.1 在 1997 年 1 月以 RFC 2068 文件发布。

HTTP/1.1——标准化的协议

HTTP/1.1 消除了大量歧义内容并引入了多项改进:

  • 连接可以复用,节省了多次打开 TCP 连接加载网页文档资源的时间
  • 增加管线化技术,允许在第一个应答被完全发送之前就发送第二个请求,以降低通信延迟
  • 支持响应分块
  • 引入额外的缓存控制机制
  • 引入内容协商机制,包括语言、编码、类型等。并允许客户端和服务器之间约定以最合适的内容进行交换
  • 凭借 Host 标头,能够使不同域名配置在同一个 IP 地址的服务器上

一个典型的请求流程,所有请求都通过一个连接实现,看起来就像这样:

GET /zh-CN/docs/Glossary/Simple_header HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/zh-CN/docs/Glossary/Simple_header

200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 20 Jul 2016 10:55:30 GMT
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Keep-Alive: timeout=5, max=1000
Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding

(content)


GET /static/img/header-background.png HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/zh-CN/docs/Glossary/Simple_header

200 OK
Age: 9578461
Cache-Control: public, max-age=315360000
Connection: keep-alive
Content-Length: 3077
Content-Type: image/png
Date: Thu, 31 Mar 2016 13:34:46 GMT
Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT
Server: Apache

(image content of 3077 bytes)

1999 年 6 月, HTTP/1.1 协议修订,发布 RFC 2616

2000 年,一种新的使用 HTTP 的模式被设计出来:具象状态传输(representational state transfer) (或者说 REST)。

具象状态传输(REST)

REST(Representational State Transfer,表现层状态转换)是一组软件架构设计规范,可实现高效、可靠和可拓展的分布式系统。

REST 的基本概念是资源(resource),例如文件能通过明确和标准的操作与格式,转换其状态与超文本的关系。通常在 API’s 或服务能直接修改文件的类型,而非触发其他行为时,它们就称自己为 RESTful

由于万维网 Web 背后的 HTTP 协议也能传输文件和超文本链接,同时又充当了标准,简易的 HTTP API 虽然有时不一定遵守所有的 RESTful 规范,但它们还是会被称为 RESTful API、RESTful 服务,或者直接叫 REST 服务。初学者可以先假设 REST API 代表一个能通过标准 web 库和工具调用的 HTTP 服务。

遵循 REST 规范的 API 只能通过使用基本的 HTTP / 1.1 方法访问特定的 URI。允许任何 Web 应用程序通过提供 API 以允许查看和修改其数据,而无需更新浏览器或服务器。所有需要的内容都被嵌入到由网站通过标准 HTTP/1.1 提供的文件中。

RESTful API 在 2010 年变得非常流行

  • REST 模型的缺点
    • 每个网站都定义了自己的非标准 RESTful API,并对其进行了全面的控制。

自 2005 年以来,可用于 Web 页面的 API 大大增加,其中几个 API 为特定目的扩展了 HTTP 协议,大部分是新的特定 HTTP 头:

  • Server-sent events,服务器可以偶尔推送消息到浏览器。
  • WebSocket,一个新协议,可以通过升级现有 HTTP 协议来建立。

2014 年 6 月,HTTP/1.1 协议再次修订,发布 RFC 7230-RFC 7235

2016 年,HTTP 的新扩展:

  • Alt-Svc 的支持
    • 允许了给定资源的位置和资源鉴定
    • 允许了更智能的 CDN 缓冲机制。
  • 引入客户端提示(client hint)
    • 允许浏览器或者客户端来主动交流它的需求,或者是硬件约束的信息给服务端。
  • Cookie 头中引入安全相关的的前缀
    • 可以保证一个安全的 Cookie 没被更改过。

HTTP/2——为了更优异的表现

HTTP/1.1 链接需要请求以正确的顺序发送,理论上可以用一些并行的链接(尤其是 5 到 8 个),带来的成本和复杂性堪忧。比如,HTTP 管线化(pipelining)就成为了 Web 开发的负担。

在 2010 年,谷歌通过实践了一个实验性的 SPDY 协议。明确了响应数量的增加和解决复杂的数据传输,SPDY 成为了 HTTP/2 协议的基础。

在2015 年 5 月正式标准化

在 2022 年 1 月达到峰值,占所有网站的 46.9%

  • HTTP/2 在 HTTP/1.1区别
    • HTTP/2 是二进制协议而不是文本协议。
      • 不可读,
      • 不可无障碍的手动创建,改善的优化技术现在可被实施。
    • HTTP/2 是多路复用协议。
      • 并行的请求可以在同一个链接中处理
      • 移除了 HTTP/1.x 中顺序和阻塞的约束。
    • 压缩标头。
      • 因为标头在一系列请求中常常是相似的,移除了重复和传输重复数据的成本。
    • 允许服务器在客户端缓存中填充数据,通过服务器推送的机制来提前请求。

HTTP/3——基于 QUIC 的 HTTP

HTTP/3在传输层部分使用 QUIC (en-US)。QUIC 旨在为 HTTP 连接设计更低的延迟。QUIC 通过 UDP 运行多个流,并为每个流独立实现数据包丢失检测和重传。如果发生错误,只有该数据包中包含数据的流才会被阻止。文章来源地址https://www.toymoban.com/news/detail-815533.html

到了这里,关于HTTP 第二章 发展历史的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据仓库发展历史

    数据仓库是企业中用于存储、整合和分析数据的关键组件。随着时间的推移,数据仓库经历了三代演化: 从需求驱动到平台化、从平台化到智能(AI)化 第一代数据仓库演化:需求驱动的分层架构 第一代数据仓库的核心思想是根据需求分析和业务模型构建分层架构,使用工

    2024年02月15日
    浏览(48)
  • 手机的发展历史

    目录 一.人类的通信方式变化 二.手机对人类通信的影响 三.手机的发展过程 四.手机对现代人的影响         人类通信方式的变化是一个非常广泛和复杂的话题,随着技术的进步和社会的发展,人类通信方式发生了许多重大的变化。下面是一些主要的变化趋势:       

    2024年02月12日
    浏览(30)
  • StableDiffusion模型发展历史

    参考资料: 相应的github和huggingface LDM [github] StableDiffusion v1.1 ~ v1.4 [github] [huggingface] StableDiffusion v1.5 [huggingface] [github] StableDiffusion v2 v2.1 [github] [huggingface] 首先说一下,这篇文章的目的是让你清晰地了解StableDffusion这个模型的发展脉络,由于目前开源AIGC模型基本上都是基于SD的

    2024年02月13日
    浏览(45)
  • Hadoop发展历史

    1)Hadoop是一个由Apache基金会所开发的 分布式系统基础架构 2)主要解决,海量数据的 存储 和海量数据的 分析计算 问题。 3)广义上来说,Hadoop通常是指一个更广泛的概念—— Hadoop生态圈 。 1)Hadoop创始人 Doug Cutting ,为 了实 现与Google类似的全文搜索功能,他在Lucene框架基

    2024年02月11日
    浏览(68)
  • Excel的发展历史

           1982年,Microsoft推出了它的第一款电子制表软件──Multiplan,并在CP/M系统上大获成功,但在MS-DOS系统上,Multiplan败给了Lotus 1-2-3。这个事件促使了Excel的诞生,正如Excel研发代号Doug Klunder:做Lotus 1-2-3能做的,并且做的更好。1985年,第一款Excel诞生,它只用于Mac系统;

    2024年02月13日
    浏览(29)
  • docker发展历史

    2008年,Solomon Hykes 和他的朋友 Kamel Founadi、Sebastien Pahl 共同创立了一家名为 DotCloud 的公司,目标是利用一种叫做容器的技术来创建他们称作是“大规模的创新工具”:任何人都可以使用的编程工具。 2010年,dotCloud获得了创业孵化器Y Combinator的支持,并开始吸引到一些真正的投

    2024年02月13日
    浏览(30)
  • 密码学发展历史介绍

      稍微介绍一下密码学,密码学是研究编制密码和破译密码的学科,就是研究防与攻。密码学的发展历程可分三个阶段:古典密码、近代密码、现代密码。   古典密码阶段:从密码的产生到发展成为近代密码之间的这段时期密码的发展历史。主要特点是手工加解密,叫手

    2023年04月17日
    浏览(38)
  • ARM简介及其发展历史

    ARM名声很大,最近在学习STM32,也借机梳理一下关于ARM的各种概念和信息。 本文主要内容:ARM一词的含义,ARM的发展历史,ARM cortex系列处理器简介与ARM在不同市场的应用情况。 1.1 ARM公司 ARM第一种意思是指ARM公司。 ARM公司成立于1990年,是一家英国半导体设计公司,总部位于

    2023年04月10日
    浏览(33)
  • 计算机视觉发展历史

    目录 1.视觉对于生物界的重要作用 2.人类对于计算机视觉的探索 2.1 20世纪50年代——研究生物视觉的工作原理 2.2 20世纪60年代——计算机视觉萌芽 2.3 20世纪70年代——开创性提出识别流程 2.4 20世纪80年代——着眼于提取特征 2.5  20世纪90年代——图像分割 2.6  21世纪初——各

    2024年02月07日
    浏览(38)
  • 神经网络的发展历史

    神经网络的发展历史可以追溯到上世纪的数学理论和生物学研究。以下是神经网络发展史的详细概述: 1943年,Warren McCulloch和Walter Pitts提出了一种神经元模型,被称为MCP神经元模型,它模拟了生物神经元的基本功能。 这一模型使用二进制逻辑来描述神经元的激活和抑制过程,

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包