http与https区别,http1.0 http1.1 http2.0的主要特性

HTTP1.0

HTTP1.0是一种无状态无连接应用层协议。

无连接:浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接

无状态:服务器不跟踪每个客户端也不记录过去的请求

无状态可以借助cookie/session机制来做身份认证和状态记录。

缺点:

1.每次请求都要与服务器建立一个TCP连接(无法复用连接),每次发送请求的时候,都需要进行一次TCP的连接;

2.下一个请求必须在上一个请求响应到达之前才能发送(队头阻塞),假设前一个请求响应一直不到达,那么下一个请求就不发送,同样的后面的请求也给阻塞了。

HTTP1.1

1.长连接( keep alive模式)

HTTP1.1增加了一个Connection字段,通过设置Keep-Alive可以保持HTTP连接不断开,避免了每次客户端与服务器请求都要重复建立释放建立TCP连接,提高了网络的利用率。如果客户端想关闭HTTP连接,可以在请求头中携带Connection: false来告知服务器关闭请求。

2.管道化

HTTP1.1管道化可以让我们把先进先出队列从客户端(请求队列)迁移到服务端(响应队列),服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。

使用持久连接的情况下,某个连接上的消息传递类似于
请求1 -> 响应1 -> 请求2 -> 响应2 -> 请求3 -> 响应3
管道化,某个连接上的消息变成了类似下面这样 (相当于将请求打包一次传输过去,服务端也打包响应回来)
请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3

HTTP1.1还是无法解决队头阻塞的问题,那我们为什么在谷歌控制台看到的并行请求呢?

按照理论来说,HTTP响应理应当是前一个响应的资源下载完了,下一个响应的资源才能开始下载。而这里却出现了响应资源下载并行的情况。这又是为什么呢?

虽然HTTP1.1支持管道化,但是服务器也必须进行逐个响应的送回,这个是很大的一个缺陷。

现阶段的浏览器厂商采取做法:

在浏览器对同域下,允许我们打开多个TCP的会话,并行加载6~8个资源的限制。上图看到的并行,其实是不同的TCP连接上的HTTP请求和响应

3.缓存处理(强缓存和协商缓存)

在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如ETag(资源版本的标识符,类似MD5),If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

扩展:

4.支持断点传输

在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206,断点下载时才用到 Range 和 Content-Range 实体头

Range: bytes=start-end

Range: bytes=10- :第10个字节及最后个字节的数据

Range: bytes=40-100 :第40个字节到第100个字节之间的数据.

这个表示[start,end],即是包含请求头的start及end字节的,所以,下一个请求,应该是上一个请求的[end+1, nextEnd]

 

Content-Range: bytes 0-10/3103

表示服务器响应了前(0-10)个字节的数据,该资源一共有(3103)个字节大小

5..Host头处理

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

HTTP2.0

二进制分帧

HTTP2.0通过在应用层和传输层之间增加一个二进制分帧层,突破了HTTP1.1的性能限制、改进传输性能。把原来HTTP1.x的header和body部分用frame重新封装了一层。

多路复用(连接共享)

在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序一一对应,避免了“队头堵塞“,此双向的实时通信称为多工

头部压缩

在HTTP1.x中,头部元数据都是以纯文本的形式发送的,通常会给每个请求增加500~800字节的负荷。

比如说cookie,默认情况下,浏览器会在每次请求的时候,把cookie附在header上面发送给服务器。(由于cookie比较大且每次都重复发送,一般不存储信息,只是用来做状态记录和身份认证)

HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。高效的压缩算法可以很大的压缩header,减少发送包的数量从而降低延迟。

服务器推送

服务器除了对最初请求的响应外,服务器还可以额外的向客户端推送资源,而无需客户端明确的请求。

HTTP1.1和HTTP2.0的区别

版本HTTP1.1HTTP2.0
多路复用在HTTP/1.1协议中,浏览器客户端在同一时间针对同一域名的请求有一定数据限制。超过限制数目的请求会被阻塞HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。而这个强大的功能则是基于“二进制分帧”的特性。
首部压缩不支持header数据的压缩使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快
服务器推送 当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源

Http与Https的区别

1、https协议需要到CA 申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值