一次性搞懂 HTTP、HTTPS、SPDY、HTTP2

本篇文章给大家带来的内容是关于一次性搞懂 HTTP、HTTPS、SPDYHTTP2,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

微信截图_20181113161157.png

作为互联网通信协议的一员老将,HTTP 协议走到今天已经经历了三次版本的变动,现在最新的版本是 HTTP2.0,相信大家早已耳熟能详。今天就给大家好好介绍一下 HTTP 的前世今生。

HTTP/0.9

HTTP 的最早版本诞生在 1991 年,这个最早版本和现在比起来极其简单,没有 HTTP 头,没有状态码,甚至版本号也没有,后来它的版本号才被定为 0.9 来和其他版本的 HTTP 区分。HTTP/0.9 只支持一种方法—— Get,请求只有一行。

GET /hello.html
响应也是非常简单的,只包含 html 文档本身。

Hello world

当 TCP 建立连接之后,服务器向客户端返回 HTML 格式的字符串。发送完毕后,就关闭 TCP 连接。由于没有状态码和错误代码,如果服务器处理的时候发生错误,只会传回一个特殊的包含问题描述信息的 HTML 文件。这就是最早的 HTTP/0.9 版本。

HTTP/1.0

1996 年,HTTP/1.0 版本发布,大大丰富了 HTTP 的传输内容,除了文字,还可以发送图片、视频等,这为互联网的发展奠定了基础。相比 HTTP/0.9,HTTP/1.0 主要有如下特性:

请求与响应支持 HTTP 头,增加了状态码,响应对象的一开始是一个响应状态行

协议版本信息需要随着请求一起发送,支持 HEAD,POST 方法

支持传输 HTML 文件以外其他类型的内容

一个典型的 HTTP/1.0 的请求像这样:

GET /hello.html HTTP/1.0User-Agent:NCSA_Mosaic/2.0(Windows3.1)200 OKDate: Tue, 15 Nov 1996 08:12:31 GMTServer: CERN/3.0 libwww/2.17Content-Type: text/html一个包含图片的页面

HTTP/1.1

在 HTTP/1.0 发布几个月后,HTTP/1.1 就发布了。HTTP/1.1 更多的是作为对 HTTP/1.0 的完善,在 HTTP1.1 中,主要具有如下改进:

可以复用连接

增加 pipeline:HTTP 管线化是将多个 HTTP 请求整批提交的技术,而在传送过程中不需先等待服务端的回应。管线化机制须通过永久连接(persistent connection)完成。浏览器将HTTP请求大批提交可大幅缩短页面的加载时间,特别是在传输延迟(lag/latency)较高的情况下。有一点需要注意的是,只有幂等的请求可以使用 pipeline,如 GET,HEAD 方法。

chunked 编码传输:该编码将实体分块传送并逐块标明长度,直到长度为 0 块表示传输结束, 这在实体长度未知时特别有用(比如由数据库动态产生的数据)

引入更多缓存控制机制:如 etag,cache-control

引入内容协商机制,包括语言,编码,类型等,并允许客户端和服务器之间约定以最合适的内容进行交换

请求消息和响应消息都支持 Host 头域:在 HTTP1.0 中认为每台服务器都绑定一个唯一的 IP 地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个 IP 地址。因此,Host 头的引入就很有必要了。

新增了 OPTIONS,PUT, DELETE, TRACE, CONNECT 方法

虽然 HTTP/1.1 已经优化了很多点,作为一个目前使用最广泛的协议版本,已经能够满足很多网络需求,但是随着网页变得越来越复杂,甚至演变成为独立的应用,HTTP/1.1 逐渐暴露出了一些问题:

在传输数据时,每次都要重新建立连接,对移动端特别不友好

传输内容是明文,不够安全

header 内容过大,每次请求 header 变化不大,造成浪费

keep-alive 给服务端带来性能压力

为了解决这些问题,HTTPS 和 SPDY 应运而生。

SPDY

其实 SPDY 并不是新的一种协议,而是在 HTTP 之前做了一层会话层。

在 2010 年到 2015 年,谷歌通过实践一个实验性的 SPDY 协议,证明了一个在客户端和服务器端交换数据的另类方式。其收集了浏览器和服务器端的开发者的焦点问题,明确了响应数量的增加和解决复杂的数据传输。在启动 SPDY 这个项目时预设的目标是:

页面加载时间 (PLT) 减少 50%。

无需网站作者修改任何内容。

将部署复杂性降至最低,无需变更网络基础设施。

与开源社区合作开发这个新协议。

收集真实性能数据,验证这个实验性协议是否有效。

为了达到降低目标,减少页面加载时间的目标,SPDY 引入了一个新的二进制分帧数据层,以实现多向请求和响应、优先次序、最小化及消除不必要的网络延迟,目的是更有效地利用底层 TCP 连接。

HTTP/2.0

时间来到 2015 年,HTTP/2.0 问世。先来介绍一下 HTTP/2.0 的特点吧:

使用二进制分帧层:在应用层与传输层之间增加一个二进制分帧层,以此达到在不改动 HTTP 的语义,HTTP 方法、状态码、URI 及首部字段的情况下,突破HTTP1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量。在二进制分帧层上,HTTP2.0 会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码,其中 HTTP1.x 的首部信息会被封装到 Headers 帧,而我们的 request body 则封装到 Data 帧里面。

二进制分帧

多路复用:对于 HTTP/1.x,即使开启了长连接,请求的发送也是串行发送的,在带宽足够的情况下,对带宽的利用率不够,HTTP/2.0 采用了多路复用的方式,可以并行发送多个请求,提高对带宽的利用率。

多路复用

数据流优先级:由于请求可以并发发送了,那么如果出现了浏览器在等待关键的 CSS 或者 JS 文件完成对页面的渲染时,服务器却在专注的发送图片资源的情况怎么办呢?HTTP/2.0 对数据流可以设置优先值,这个优先值决定了客户端和服务端处理不同的流采用不同的优先级策略。

服务端推送:在 HTTP/2.0 中,服务器可以向客户发送请求之外的内容,比如正在请求一个页面时,服务器会把页面相关的 logo,CSS 等文件直接推送到客户端,而不会等到请求来的时候再发送,因为服务器认为客户端会用到这些东西。这相当于在一个 HTML 文档内集合了所有的资源。

头部压缩:使用首部表来跟踪和存储之前发送的键值对,对于相同的内容,不会再每次请求和响应时发送。

以上就是对一次性搞懂 HTTP、HTTPS、SPDY、HTTP2的全部介绍,如果您想了解更多有关Html5教程,请关注PHP中文网。

以上就是一次性搞懂 HTTP、HTTPS、SPDY、HTTP2的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1547366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 19:07:14
下一篇 2025年12月21日 19:07:26

相关推荐

  • axios怎样基于Promise的HTTP请求客户端

    这次给大家带来axios怎样基于promise的http请求客户端,axios基于promise的http请求客户端的注意事项有哪些,下面就是实战案例,一起来看一下。 axios 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用 功能特性 在浏览器中发送XML…

    好文分享 2025年12月24日
    000
  • 404错误的原因和解决方法的深入研究

    探究HTTP状态码404的原因和解决途径 引言:在浏览网页的过程中,我们经常会遇到HTTP状态码404。这个状态码表示服务器未能找到请求的资源。在本文中,我们将探究HTTP状态码404的原因,并分享一些解决途径。 一、HTTP状态码404的原因:1.1 资源不存在:最常见的原因就是请求的资源在服务器…

    2025年12月22日
    000
  • HTTP502错误码解析及解决方法

    了解HTTP502错误码:为什么它会出现,如何解决? 引言:在使用互联网的日常生活中,我们经常会遇到各种网络错误,例如404 Not Found、403 Forbidden等。其中,HTTP502错误码也是常见的一种错误。本文将介绍HTTP502错误码出现的原因以及解决方法,帮助读者更好地理解和解决…

    2025年12月22日
    000
  • HTTP525状态码解析:详细解读其意义和使用场景

    HTTP状态码是用来表示客户端请求与服务器响应之间的状态的一种规范化的方式。其中,HTTP 525状态码是指SSL连接失败。本文将详细解析HTTP 525状态码的意义和使用场景。 首先,HTTP 525状态码表示SSL连接失败。SSL(Secure Sockets Layer)是一种用于保护网络通信…

    2025年12月22日
    000
  • HTTP状态码405解析:了解请求方法不被允许的原因

    HTTP状态码405解析:了解请求方法不被允许的原因 HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它定义了客户端和服务器之间的通信规则。在HTTP协议中,客户端发送请求给服务器,服务器根据请求做出相应的响应。 HTTP状态码用于标识请求的处理结果,其…

    2025年12月22日
    000
  • HTTP请求超时时返回的状态码是什么?

    如何判断HTTP请求超时的状态码是什么? 在进行网络通信过程中,我们常常会遇到网络请求超时的情况。当我们发出一个HTTP请求后,如果在设定的时间内没有收到服务器的响应,就会导致请求超时。那么如何判断HTTP请求超时的状态码是什么呢?本文将介绍一些常见的状态码以及如何判断请求超时的方法。 首先,我们需…

    2025年12月22日
    000
  • 探究HTTP状态码403:访问被拒绝的原因分析

    HTTP状态码403详解:为什么会出现禁止访问的情况? 引言:在使用互联网浏览器浏览网页时,有时会遇到HTTP状态码403,“禁止访问”的错误提示。这意味着用户无权限访问所请求的资源。本文将详细解释403错误的原因以及常见的解决方法。 一、HTTP协议与状态码:HTTP(Hypertext Tran…

    2025年12月22日
    000
  • 学习HTTP状态码301:理解网页重定向的重要性及实现方法

    了解HTTP状态码301:网页重定向的意义与实现方式 引言:在我们日常浏览网页时,有时会遇到网页找不到或被移动的情况。这种情况下,我们常常会看到网页跳转到一个新的页面。这种跳转就是通过HTTP状态码301来实现的。本文将介绍HTTP状态码301的意义以及实现方式。 节1:什么是HTTP状态码301?…

    2025年12月22日
    000
  • HTTP状态码405的解释和用途

    了解HTTP状态码405的含义及作用 HTTP(HyperText Transfer Protocol)是一种用于在网络上传输超文本的协议。在使用HTTP进行通信时,客户端(如浏览器)会向服务器发送请求,而服务器则会给予相应的回应。HTTP状态码是服务器通过回应的形式告诉客户端请求的处理情况的一种信…

    2025年12月22日
    000
  • 常见的HTTP重定向状态码及其应用场景

    HTTP状态码是用来表示HTTP请求和响应的结果的一种标准化的方式。在HTTP协议中,重定向是一种常见的请求处理方式。通过重定向,服务器可以将请求的URL指向新的位置,从而实现对资源的重新定位。本文将详细介绍常见的重定向类型及其应用场景。 301 Moved Permanently (永久重定向)当…

    2025年12月22日
    000
  • 理解网页重定向的常见应用场景并了解HTTP301状态码

    掌握HTTP301状态码的含义:网页重定向的常见应用场景 随着互联网的迅猛发展,人们对网页交互的要求也越来越高。在网页设计领域,网页重定向是一种常见且重要的技术,通过HTTP301状态码来实现。本文将探讨HTTP301状态码的含义以及在网页重定向中的常见应用场景。 HTTP301状态码是指永久重定向…

    2025年12月22日
    000
  • 揭示的语言之谜:HTTP状态码

    HTTP是现代计算机网络中最常用的协议之一,而其中的状态码则是HTTP通信过程中非常重要的一部分。通过状态码,服务器可以向客户端传递各种信息,包括请求成功与否、请求重定向、请求错误等。尽管状态码只是简单的3位数字,但它们背后隐藏着许多语言之谜。 首先,我们来探索一下HTTP状态码的基本分类。按照类别…

    2025年12月22日
    000
  • 揭秘HTTP状态码的含义

    HTTP状态码是用于表示HTTP请求的结果的三位数字代码。这些状态码由HTTP协议规定,并且在与服务器进行通信时,它们扮演着非常重要的角色。尽管每个状态码都有其特定的含义,但是很少有人知道这些代码背后隐藏的深意和故事。本文将探秘HTTP状态码背后的语言之谜。 首先,我们来了解一下最常见的HTTP状态…

    2025年12月22日
    000
  • HTTP状态码405解析:请求方法不被允许的原因何在?

    探秘HTTP状态码405:为何会出现不允许的请求方法? 引言: 在日常的网络使用中,我们经常会遇到HTTP状态码,它们是Web服务响应客户端请求时返回的一种标准化的三位数字代码。这些状态码能够提供有关请求的详细信息,帮助我们理解和处理HTTP请求过程中的问题。其中,HTTP状态码405表示不允许的请…

    2025年12月22日
    000
  • 探究HTTP状态码80的原因及解释

    HTTP状态码是在 HTTP 协议中用于标识服务器对客户端请求的响应状态的数字代码。它们告诉客户端的浏览器或其他应用程序服务器的处理结果。常见的状态码包括 200、301、404、500 等,每个状态码都有其特定的含义和用途。 然而,在 HTTP 状态码中,有一个相对较少被人们关注的状态码,它就是状…

    2025年12月22日
    000
  • 对于HTTP请求超时会返回哪种状态码?

    HTTP请求超时,服务器端常常会返回504 Gateway Timeout状态码。该状态码表示服务器在执行某个请求时,经过一段时间后仍未能获取到请求所需的资源或完成请求的处理。它是5xx系列的状态码,表示服务器端遇到了临时的问题或过载,导致无法正确处理客户端的请求。在HTTP协议中,各种状态码都有特…

    2025年12月22日
    000
  • 常见的HTTP协议状态码及其解释

    了解常见的HTTP协议状态码及其含义,需要具体代码示例 HTTP协议是现代网络通信中最重要的应用层协议之一。在进行Web开发过程中,我们经常会遇到各种各样的HTTP状态码。本文将详细介绍一些常见的HTTP状态码及其含义,并提供相应的代码示例。 200 OK200 OK是最常见的HTTP状态码之一,表…

    2025年12月21日
    000
  • 常见的HTTP 4xx状态码和错误解析

    了解HTTP协议中4xx状态码的含义及常见错误,需要具体代码示例 HTTP协议是互联网通信的基础协议,它定义了客户端和服务器之间的通信规范。在使用HTTP协议进行通信时,客户端发送请求,服务器返回响应。而HTTP状态码是服务器用来表示请求处理结果的一种机制。 HTTP状态码由三位数字组成,以便于划分…

    2025年12月21日
    000
  • HTTP 200 OK:了解成功响应的含义与用途

    HTTP状态码200:探索成功响应的含义与用途 HTTP状态码是用来表示服务器响应状态的数字代码。其中,状态码200表示请求已成功被服务器处理。本文将探索HTTP状态码200的具体含义与用途。 首先,让我们了解一下HTTP状态码的分类。状态码被分为五个类别,分别是1xx、2xx、3xx、4xx和5x…

    2025年12月21日
    000
  • http请求415错误解决方法

    解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。 HTTP请求415错误是指服务器拒绝接受客户端发送的请求,因为请求中包含的实体类型不受支持。这通常是由于客户端发送的请求中包含了不被支持的媒…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信