您现在的位置是:亿华云 > IT科技
HTTP 的前世今生:一次性搞懂 HTTP、HTTPS、SPDY、HTTP2
亿华云2025-10-03 20:06:46【IT科技】8人已围观
简介作为互联网通信协议的一员老将,HTTP 协议走到今天已经经历了三次版本的变动,现在***的版本是 HTTP2.0,相信大家早已耳熟能详。今天就给大家好好介绍一下 HTTP 的前世今生。HTTP/0.9
作为互联网通信协议的前懂一员老将,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.0 User-Agent:NCSA_Mosaic/2.0(Windows3.1) 200 OK Date: Tue, 15 Nov 1996 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-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 应运而生。
HTTPS
HTTPS 是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
HTTPS 协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTPS 和 HTTP 的区别主要如下:
HTTPS 协议使用 ca 申请证书,由于免费证书较少,需要一定费用。 HTTP 是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。 HTTP 和 HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
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/2.0 的新特点和 SPDY 很相似,其实 HTTP/2.0 本来就是基于 SPDY 设计的,可以说是 SPDY 的升级版。
但是 HTTP/2.0 仍有和 SPDY 不同的地方,主要有如下两点:
HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS。 HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE。很赞哦!(8)