关于HTTP、HTTPS、HTTP1.1、HTTP2.0、HTTP3.0的介绍及区别

发布时间:2024年01月13日

HTTP与HTTPS的区别

一、HTTP的简介

? ? ? ?HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵循这个标准。设计初衷是为了提供一种发布和接收HTML页面的方法。

二、HTTPS的简介

? ? ? ?HTTPS(超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用?SSL/TLS?来加密数据包。HTTPS开发的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

其中,

SSL(安全套接层)是基于HTTPS下的一个协议加密层,它是一项标准技术,可确保互联网连接安全,保护两个系统发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。两个系统可指服务器和客户端,或两个服务器之间。该协议由两层组成:SSL记录协议和SSL握手协议。

TLS(安全传输层协议)是更为安全的升级版SSL,用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。TLS的最大优势在于:TLS是独立于应用协议。高层协议可以透明地分布在TLS协议上面。

三、HTTP与HTTPS的区别

  • HTTP明文传输,数据都是未加密的,安全性较差。HTTPS(SSL+HTTP)数据传输过程是加密的,安全性较好。(HTTPS=HTTP+加密+认证+完整性保护)
  • HTTPS需要CA(数字证书认证机构)申请证书,HTTP不需要。
  • HTTP页面响应速度比HTTPS快,主要是因为HTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包,而HTTPS除了TCP的三个包,还要加上SSL握手需要的9个包,所以一共是12个包。
  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样。HTTP使用80端口,HTTPS默认使用443端口。
  • HTTPS其实就是建构在SSL/TLS之上的HTTP协议,所以,HTTPS比HTTP要更耗费服务器。

HTTPS的工作原理

1.客户端发起HTTPS请求

? ? ? ? 用户在浏览器输入一个 https 网址,然后俩街道server的443端口。

2.服务端的配置

? ? ? ?采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl 就是个不错的选择,有 1 年的免费服务)。

3.传送证书

? ? ? ?这个证书其实就是公钥,只是包含了很多信息,如如证书的颁发机构,过期时间等。

4.客户端解析证书

? ? ? ?这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

? ? ? ?如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5、传送加密信息

? ? ? ?这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6、服务端解密信息

? ? ? ?服务端用私钥解密后,得到了客户端传过来的随机值(对称秘钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7、传输加密后的信息

? ? ? ?这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8、客户端解密信息

? ? ? ?客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

HTTP1.0和HTTP1.1和HTTP2.0的区别

一、HTTP1.0和HTTP1.1的区别

1.长链接

? ? ? ??HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。

? ? ? ? HTTP是基于TCP/IP 协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新创建连接的话,对性能有一定影响、因此最好能维持一个长连接,可以用长连接来发送多个请求。

2.节约带宽

? ? ? ? HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送了过来,并且不支持断点续传(利用HTTP消息头,使用分块传输编码,将实体主题分块传输)。

? ? ? ? HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100 ,才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body,节约了带宽。

3.HOST域

? ? ? ?在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名,HTTP1.0没有host域。在一台物理服务器上可以存在多个虚拟主机,并且它们都共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误。

4.缓存控制

? ? ? ? HTTP1.0中主要使用header里的IF-Modified-Since(条件式请求首部,服务器只在所请求的资源在给定的日期时间之后对内容进行过修改的情况下才会将资源返回,状态码为 200 。),Expire(HTTP/1.0控制网页缓存的字段,其值为服务器返回该请求结果缓存的到期时间,即再次发起该请求时,如果客户端的时间小于Expires的值时,直接使用缓存结果。)是来作为判断标准。

? ? ? ? HTTP1.1则引入了更多的缓存控制策略和请求响应头。

5.错误通知的管理

? ? ? ? ?在HTTP1.1中新增了24个错误状态响应码。

二、HTTP1.1和HTTP2.0的区别

1.头部压缩

? ? ? ? HTTP1.1中的请求头携带大量信息,而且每次都要重复发送,即使是同样的内容,每次请求都需要附带,这会造成性能的损耗。HTTP2.0进行了优化,引入了头信息压缩机制。多个请求中,如果请求头相同,则后续请求只需要发送差异的部分,重复的部分无需再发送。

2.二进制帧

? ? ? ?HTTP1.1的报文为纯文本格式,而HTTP2.0的报文全面采用二进制格式,并将原始的报文拆分为头信息帧和数据帧。采用二进制格式有利于提升数据传输效率。

3.多路复用

? ? ? ?HTTP2.0使用了多路复用的技术,做到同一个连接并处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。当然HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

4.服务端推送

? ? ? ?在HTTP1.1中,只能客户端发起请求,服务器对请求进行响应。而在HTTP2.0中,服务器可以主动给客户端推送必要的资源,以减少请求延迟时间。

HTTP3相比于HTTP2性能上的改进

1.无队头阻塞

? ? ? ? HTTP2通过多路复用解决了HTTP1.1的队头阻塞问题,但其只是解决了HTTP这一层面的队头阻塞问题,底层仍然采用TCP连接,HTTP2并没有解决TCP的队头阻塞问题。TCP是可靠的,面向字节流的协议。HTTP2的多个请求虽然可以跑在同一个TCP连接中,但如果出现丢包现象,TCP就需要进行重传,这可能就会导致整个TCP连接上的所有流阻塞,直到丢的包重传成功,这就是TCP的丢头阻塞问题。

? ? ? ? HTTP3底层不再使用TCP,而是采用UDP!而UDP是无连接的多个流互相独立,之间不再有依赖,因而即使某个流发生了丢包,只会对该流产生影响,并不会使得其他流阻塞。

HTTP3在应用层之间重新实现了可靠性机制。也就是说,HTTP3将原先TCP协议提供的部分功能上移至QUIC(基于 UDP 的传输层协议),而且进行了改进。

2.优化重传机制

HTTP2使用的是TCP,HTTP3使用的是QUIC。

? ? ? ? TCP 采用序号+确认号+超时重传机制来保证消息的可靠性,即如果某条消息超过一定时间还没有得到确认,则重新发送此消息。由于网络拥堵情况不断变化,因而消息的超时事件并不是固定的,而是通过采样消息的往返时间不断调整的,但TCP超时采样存在不准确的问题。

? ? ? ? QUIC 定义了一个递增的序列号,每个序列号的包只发送一次,及时重传相同的包,其序列号也不一样。

3.连接迁移

? ? ? ? 一条TCP连接是由四元组标识的,分别是源IP、源端口、目的IP、目的端口。一旦其中一个元素发生了变化,就需要断开重连。

? ? ? ?QUIC采用一个64位的随机数作为ID来标识,通过此连接ID标记通信的两端,之后即使网络发生变化,IP或端口变了,但只要ID不变,则无需重连,只需要复用原先连接即可,时延低,减少了用户的卡顿感,只实现连接迁移。

总结

本篇文章简要阐述了http与http的区别,https的工作原理,http各种更新迭代版本之间的区别,通过查阅了大量资料,整理出这一篇,在帮助自己总结复习的同时,也能够让其他人参考学习。如果内容有什么问题和错误,可以私聊我提出来,感谢!

?更多详细的SSL、TLS的介绍与区别,请点击该条链接https://blog.csdn.net/enweitech/article/details/81781405

HTTPS原理部分参考了该链接的内容https://www.runoob.com/w3cnote/http-vs-https.html

文章来源:https://blog.csdn.net/weixin_61164359/article/details/135524578
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。