HTTPS与HTTP的区别、HTTP1.0和1.1和2.0的区别

一、HTTPS 与 HTTP 的区别(超文本传输安全协议,端口443)

  1. 端口号不同:http 的端口号是80,而 https 的端口号是 443.
  2. 安全性不同:http 传输的数据是未加密的,而 https 是先用 ssl 建立安全的通信线路,然后再在这条线路上进行 http 通信,与 http 相比,https 具有加密(防窃听)、认证(防伪装)和完整性保护(防篡改)这三个功能。
  3. 开销不同:由于https会进行加密传输以及身份认证,所以会消耗cpu资源,效率相比http会低一些。而且https需要支付证书授权的费用。

二、https的加密、认证、完整性保护

  1.加密(有两种加密方式,对称密钥加密和非对称密钥加密,https采用的是混合的加密方式)

对称密钥加密: 加密和解密使用同一的密钥。

  • 优点:运算速度快;
  • 缺点:无法安全地将密钥传输给通信方。

非对称密钥加密: 又称公开密钥加密,加密和解密使用不同的密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。

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

HTTPS采用混合的加密方式: 使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密来保证通信过程的效率。
  
  2. 认证(数字证书认证机构 CA 是客户端与服务器双方都可信赖的第三方机构)

  • 通过使用 证书 来对通信方进行认证。也就是在进行 HTTPS 通信时,服务器会把证书发送给客户端,客户端取得其中的公开密钥后,使用数字签名进行验证,如果验证通过,就可以开始通信了。

  3. 完整性保护

  • SSL 提供报文摘要功能来进行完整性保护。
  • HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,都重新计算 MD5 的值,通信接收方无法意识到发生了篡改。
  • HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。

三、http1.0和http1.1的区别

  1. HTTP1.0使用的是非持续连接,HTTP1.1使用的是持续连接,支持流水线方式,可以在同一条长连接上连续发出请求,而不用等待响应返回,减少了TCP连接的空闲时间,提高了效率: 非持续连接指的是每次客户端接收到响应报文后就断开TCP连接,下一次再重新建立连接,会加重服务器的负担。由于这个特性,使用HTTP1.0时,每次请求文档都有两倍的 RTT 开销,一个 RTT 用于TCP连接,一个 RTT 用于请求和接收文档。HTTP1.1协议解决了这个问题,它使用的是持续连接,也就是在一段时间内保持TCP连接不断开,使同一个客户和该服务器能继续使用这条连接传送数据。持续连接有两种工作方式:非流水线方式和流水线方式。非流水线方式的特点是客户在收到前一个响应后才能发出下一个请求,每次访问对象会耗费一个 RTT 往返时间来请求和接收文档,相比非持续连接,节省了一个建立TCP连接的 RTT 时间。非流水线方式的缺点是服务器发送完一个对象后,TCP连接就处于空闲状态了,浪费了服务器资源。流水线方式的特点是客户收到响应前就能接着发送新的请求,服务器连续收到请求,然后连续返回响应,因此客户访问所有对象只需要花费一个 RTT 时间,于是减少了TCP连接的空闲时间,提高了效率。
  2. http1.0 需要 keep-alive 参数来告知服务器要建立一个长连接,而 http1.1 默认使用长连接,而且支持同时打开多个 TCP 连接
  3. HTTP1.1 支持只发送请求头而不发送请求体。 原因是先用请求头判断能否成功,若能成功再发数据,可以节约带宽,post 请求默认就是这样做的。
  4. HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了;HTTP1.1 则在请求头引入了 range头域,它允许只请求资源的某个部分,可以节约带宽。
  5. HTTP 1.1 新增状态码100,表示目前为止正常,客户端可以继续发送请求或者忽略这个响应。

四、 HTTP2.0与1.x的区别

多了四个新特性:二进制分帧层、服务端推送、首部压缩、多路复用

  1. 二进制分帧层: HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的。而 HTTP1.x 的解析是基于文本的。

  2. 服务端推送: HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。而 HTTP 1.0 需要请求一次 html,然后再请求一次 css,然后再请求一 次 js。

  3. 首部压缩: HTTP/1.1 的首部带有大量信息,而且每次都要重复发送。HTTP/2.0 进行了首部压缩,而且要求客户端和服务器同时维护和更新一个之前见过的首部字段表,从而避免了重复传输。

  4. 多路复用: HTTP2.0 支持多路复用,同一个连接可以并发处理多个请求,方法是把 HTTP数据包拆为多个帧,并发有序的发送, 然后根据序号在另一端进行重组, 而不需要一个个 HTTP请求顺序到达。
      

五、HTTPS建立连接的过程?HTTPS的工作过程?

  • 客户端向服务器端发起SSL连接请求
  • 服务器向客户端发送公钥,并且服务器端保存着唯一的私钥
  • 客户端收到公钥并用公钥对双方通信的对称秘钥进行加密,并发送给服务器端
  • 服务器收到客户端发来的对称秘钥后,利用自己唯一的私钥对其进行解密,中间方无法对其解密,这样保证了对称秘钥在收发过程中的安全,此时,服务器端和客户端拥有了一套完全相同的对称秘钥。
  • 然后进行数据传输,服务器和客户端用对称秘钥对数据进行加密解密,保证了数据收发过程中的安全,即使第三方获得数据包,也无法对其进行解密和篡改。

六、谈下你对 HTTP 长连接和短连接的理解?分别应用于哪些场景?

  • 长短连接指的是TCP连接。
  • HTTP/1.1 开始默认使用的长连接,只需要建立一次TCP连接就能进行多次HTTP通信。减少了TCP连接重复建立和断开所造成的开销。一般用于操作频繁、点对点的通讯,比如数据库连接采用的就是长连接,网络游戏这类应用也采用的长连接。
  • HTTP/1.0 默认使用的短连接。客户端每进行一次 HTTP 请求,就建立一次连接,任务结束就中断连接。WEB网站采用的短连接,因为网站上客户端的连接数会非常多,如果采用长连接,就会占用非常多的资源,所以一般采用短连接。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值