首页 > 编程知识 正文

http 0,HTTP/1.1

时间:2023-05-06 15:14:58 阅读:52434 作者:3381

目录1. HTTP1.0与HTTP1.1的区别2. HTTP与http S3.spdy :优化HTTP1.X4. http 2.0 :升级spdy5. http 2.0与http1. x的新功能6. HTTP2.0的复用

1. HTTP1.0与HTTP1.1的区别

HTTP1.0最初用于网页是在1996年,当时使用相对简单的网页和web请求,但HTTP1.1于1999年开始广泛用于当今大型浏览器的web请求,HTTP1.1也是目前使用最广泛的主要区别如下

1. 短连接和长连接

默认情况下,HTTP/1.0使用短连接。 这意味着必须为每个请求重新建立TCP连接。 HTTP基于TCP/IP协议,每次建立或断开连接都需要握手并挥手4次的开销,每次请求都会增加开销。 因此,期望维持一个长连接,并且能够在一个长连接上发送多个请求。

从HTTP 1.1开始,默认情况下使用长连接,默认情况下打开连接: keep-alive。 HTTP/1.1的持续连接有非流水线方式和流水线方式。 管线方案可在客户端收到来自HTTP的响应消息之前继续发送新的请求消息。 与此相对应的非流水线方式是在客户收到上一个响应后发送下一个请求。

2. 错误状态响应码

HTTP1.1中添加了24个错误状态响应代码。 例如,“确认”(conflict ) 409表示请求的资源与资源的当前状态冲突。 410(gone )表示服务器上的某个资源已永久删除。

3. 缓存处理

HTTP1.0主要使用header的If-Modified-Since、Expires作为缓存判断的标准,而HTTP1.1则使用实体标签、If-Unmodified-Since、If-Match、和

4. 带宽优化及网络连接的使用

在HTTP1.0中,客户端只需要对象的一部分,但服务器会发送整个对象,导致浪费带宽,例如不支持断点重发功能。 HTTP1.1在请求标头中引入了range标头域,以便只能请求部分资源。 也就是说,返回代码为206(partialcontent ),这增加了开发人员的自由度

5. Host头处理

在HTTP1.0中,请求消息中的URL没有传递主机名(hostname ),因为每个服务器都被认为绑定了唯一的IP地址。 但是,随着虚拟主机技术的发展,一台物理服务器上存在多个虚拟主机(多宿主web servers ),它们可以共享一个IP地址。 HTTP1.1请求消息和响应消息都需要支持主机标头区域,如果请求消息没有主机标头区域,则会报告错误。 (400 bad请求)。

2. HTTP和HTTPS 1. 端口

HTTP的URL以" http://"开头,默认使用端口80,HTTPS的URL以" https://"开头,默认使用端口443。

2. 安全性和资源消耗

HTTP协议在TCP上运行,传输的所有内容都是明文,不能在客户端和服务器端验证对方的身份。 HTTPS是在SSL/TLS上操作的HTTP协议,SSL/TLS是在TCP上操作的。 HTTPS不是新协议,而是HTTP先与安全套接字层(SSL )进行通信,SSL与TCP进行通信,即HTTPS通过隧道进行通信。 (下图)。 通过使用SSL,HTTPS具有加密(防窃听)和认证(防伪装置)和完整性保护(防篡改)。 HTTPS加密所有传输的内容。 虽然加密使用对称加密,但对称加密的密钥使用服务器端证书进行非对称加密。 因此,虽然HTTP的安全性不如HTTPS高,但HTTPS比HTTP消耗更多的服务器资源。

加密

1. 对称密钥加密

对称密钥加密(Symmetric-Key Encryption ),加密和解密使用同一密钥。

优点:运算速度快

缺点:无法安全地将密钥传输给通信对方。

2.非对称密钥加密

不对称密钥加密也称为公钥加密(Public-Key Encryption ),加密和解密使用不同的密钥。

任何人都可以得到公钥。 通信的发送方获得接收方的公钥后,可以使用公钥进行加密。 接收方收到通信内容后,使用私钥解密。

不对称密钥不仅可以用于加密,还可以用于签名。 因为私钥是别人不能使用的

人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。

优点:可以更安全地将公开密钥传输给通信发送方;
缺点:运算速度慢。

HTTPS 采用的加密方式

上面提到对称密钥加密方式的传输效率更高,但是无法安全地将密钥 Secret Key 传输给通信方。而非对称密钥加密方式可以保证传输的安全性,因此我们可以利用非对称密钥加密方式将 Secret Key 传输给通信方。HTTPS 采用混合的加密机制,正是利用了上面提到的方案:

使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性;获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。

补充:什么是SSL/TLS协议?

SSL“安全套接层”协议,TLS“安全传输层”协议,都属于是加密协议,在其网络数据传输中起到保护隐私和数据的完整性。保证该网络传输的信息不会被未经授权的元素拦截或修改,从而确保只有合法的发送者和接收者才能完全访问并传输信息。

 
 

3. SPDY:HTTP1.x的优化

2012年google如一声惊雷提出了SPDY的方案,优化了HTTP1.X的请求延迟,解决了HTTP1.X的安全性,具体如下:

1. 降低延迟

针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking的问题,降低了延迟同时提高了带宽的利用率。

2. 请求优先级(request prioritization)

多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,这样可以保证用户能第一时间看到网页内容。

3. header压缩

前面提到HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量。

4. 基于HTTPS的加密协议传输

大大提高了传输数据的可靠性。

5. 服务端推送(server push)

采用了SPDY的网页,例如我的网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了。

SPDY构成图:

SPDY位于HTTP之下,TCP和SSL之上,这样可以轻松兼容老版本的HTTP协议(将HTTP1.x的内容封装成一种新的frame格式),同时可以使用已有的SSL功能。
 
 

4. HTTP2.0:SPDY的升级版

HTTP2.0可以说是SPDY的升级版(其实原本也是基于SPDY设计的),但是,HTTP2.0 跟 SPDY 仍有不同的地方,如下:

HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPSHTTP2.0 消息头的压缩算法采用 HPACK ,而非 SPDY 采用的 DEFLATE
 
  5. HTTP2.0和HTTP1.X相比的新特性

1. 新的二进制格式(Binary Format)

HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

2. 多路复用(MultiPlexing

即连接共享,即每一个request都是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

3. header压缩

HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

4. 服务端推送(server push)

同SPDY一样,HTTP2.0也具有server push功能。

 
 

6. HTTP2.0的多路复用和HTTP1.X中的长连接复用有什么区别 HTTP/1.* 一次请求-响应,建立一个连接,用完关闭;每一个请求都要建立一个连接;HTTP/1.1 Pipeling 解决方式为:若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦ngdlq请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞;HTTP/2 多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行;


 
 

7. 服务器推送是什么

服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤。正因为没有发起请求,建立连接等操作,所以静态资源通过服务端推送的方式可以极大地提升速度。

普通的客户端请求过程


 
服务端推送的过程

 
 

参考:
https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。