HTTP的前生今世

it2025-12-14  8

HTTP的前生今世

一、HTTP是什么

老样子,先来介绍一下今天的主角,HTTP。

HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)的 HTTP协议处于TCP/IP协议体系的应用层。HTTP协议属于应用层的协议

HTTP的三点特性:

HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。 1、协议对于事务处理没有记忆能力 2、对同一个url请求没有上下文关系 3、每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况 4、服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器

二、HTTP的版本迭代

到现在为止HTTP一共有四个版本

HTTP 0.9

0.9协议是适用于各种数据信息的简洁快速协议,但是远不能满足日益发展的各种应用的需要。0.9协议就是一个交换信息的无序协议,仅仅限于文字。由于无法进行内容的协商,在双发的握手和协议中,并有规定双发的内容是什么,也就是图片是无法显示和处理的

HTTP 1.0

到了1.0协议阶段,也就是在1982年,TimBerners-Lee提出了HTTP/1.0。在此后的不断丰富和发展中,HTTP/1.0成为最重要的面向事务的应用层协议。该协议对每一次请求/响应建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用

HTTP 1.1

在1.0协议中,双方规定了连接方式和连接类型,这已经极大扩展了HTTP的领域,但对于互联网最重要的速度和效率,并没有太多的考虑。毕竟,作为协议的制定者,当时也没有想到HTTP协议会有那么快的普及速度。

HTTP 2.0

HTTP2.0大幅度的提高了web性能,在HTTP1.1完全语义兼容的基础上,进一步减少了网络的延迟。实现低延迟高吞吐量。对于前端开发者而言,减少了优化工作。 主要有以下几个特点: 二进制分帧 首部压缩 多路复用 请求优先级 服务器推送

三、http协议各个版本之间的区别

3.1、HTTP各个版本的区别

HTTP/0.9 仅支持GET请求,不支持请求头HTTP/1.0 默认短连接(一次请求建立一次TCP连接,请求完就断开),支持GET、POST、 HEAD请求HTTP/1.1 默认长连接(一次TCP连接可以多次请求);支持PUT、DELETE、PATCH等六种请求 增加host头,支持虚拟主机;支持断点续传功能HTTP/2.0 多路复用,降低开销(一次TCP连接可以处理多个请求) 服务器主动推送(相关资源一个请求全部推送); 解析基于二进制,解析错误少,更高效(HTTP/1.X解析基于文本); 报头压缩,降低开销。

四、HTTPS

什么是HTTPS?

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 [2] 。

在了解HTTPS传输方式之前先了解一些小的知识点。

对称加密:加密和解密都是用同一个密钥 非对称加密:加密用公开的密钥,解密用私钥 (私钥只有自己知道,公开的密钥大家都知道) 数字签名:验证传输的内容是对方发送的数据和发送的数据没有被篡改过 数字证书(Certificate Authority)简称CA:认证机构证明是真实的服务器发送的数据。

HTTPS请求过程:(一次HTTPS请求要进行两次HTTP传输)

1.客户端发出https请求,请求服务端建立SSL连接;

2.服务端收到https请求,申请或自制数字证书,得到公钥和服务端私钥,并将公钥发送给客户端;

3.客户端验证公钥,不通过验证则发出警告,通过验证则产生一个随机的客户端私钥;

4.客户端将公钥与客户端私钥进行对称加密后传给服务端;

5.服务端收到加密内容后,通过服务端私钥进行非对称解密,得到客户端私钥;

6.服务端将客户端私钥和内容进行对称加密,并将加密内容发送给客户端;

7.客户端收到加密内容后,通过客户端私钥进行对称解密,得到内容。    HTTPS怎么校验证书的有效性? 证书里面包含了公钥+各种信息+签名,公钥加密私钥解,私钥加密公钥解,通过私钥将签名解密后得到的信息和证书里面的信息比对就可以验证证书的合法性了。   签名是私钥和各种信息加密后形成的签名。

写在最后:如果文章有错的地方,希望大家可以在评论区指正,一起学习交流~

来自:一位喜欢前端的杰迷

最新回复(0)