面试常问:HTTPS与HTTP的区别

最近是秋招季节,很多前端的同学都在面试,既然是前端面试。那么必然逃不过的一前端问题就是HTTPS和HTTP的区别?那如果你遇到这个问题你能回答出来吗?

接下来将让我们详细分析一下HTTPS与HTTP的区别?

老规矩,先上定义,先从定义下手

什么是HTTP?

定义:HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网
(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP 是一个基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于 1990 年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在 WWW 中使用的是 HTTP/1.0 的第六版,HTTP/1.1 的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP 协议工作于客户端-服务端架构为上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务
端即 WEB 服务器发送所有请求。Web 服务器根据接收到的请求后,向客户端发送响应信
息。

好了,定义十分抽象与复杂。总结一句话就是:基于 TCP/IP 的超文本传输协议

那什么是HTTPS呢?

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

总结:HTTPS 在HTTP 的基础下加入SSL的超文本传输协议

那好了,看完了定义,很多同学又会懵。什么是SSL啊?这里就不给大家继续展开讲解了。因为这是涉及到很多网络传输的原理知识,感兴趣的同学可以去查阅相关资料。这里大家只需要记住,SSL是会对从我们的数据进行加密,使我们的数据传输更加安全。

那我们了解了HTTPS与HTTP的的定义之后,HTTPS与HTTP的到底由什么区别呢?

HTTPS与HTTP的区别

要了解他们区别,首先要了解它们的特点。

HTTP的特点

  1. HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.
  2. 传输稳定,因为HTTP 基于 TCP/IP协议,所以HTTP的传输是相对稳定可靠的
  3. 灵活:通过http协议中头部的Content-Type标记,可以传输任意数据类型的数据对象(文本、图片、视频等等),非常灵活
  4. 简单快速:发送请求访问某个资源时,只需传送请求方法和URL就可以了,使用简单,正由于http协议简单,使得http服务器的程序规模小,因而通信速度很快

缺点

  1. 无状态:请求不会记录任何连接信息,没有记忆,就无法区分多个请求发起者身份是不是同一个客户端的,意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大
  2. 不安全:明文传输可能被窃听不安全,缺少身份认证也可能遭遇伪装,还有缺少报文完整性验证可能遭到篡改
  3. 明文传输:报文(header部分)使用的是明文,直接将信息暴露给了外界,WIFI陷阱就是复用明文传输的特点,诱导你连上热点,然后疯狂抓取你的流量,从而拿到你的敏感信息
  4. 队头阻塞:开启长连接(下面有讲)时,只建立一个TCP连接,同一时刻只能处理一个请求,那么当请求耗时过长时,其他请求就只能阻塞状态

HTTPS的特点

  1. 比较安全:通过 SSL\TLS 对传输的内容进行了加密。
  2. 成本较高:需要申请CA 证书,需要交费

缺点

  1. HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
  2. https连接缓存不如http高效,如果是大流量网站,则会造成流量成本太高。
  3. https连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本,如果全部采用https,基于大部分计算资源闲置的假设的VPS的平均成本会上去。
  4. SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
  5. SSL证书通常需要绑定IP,不能再同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗(SSL有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持,Windows XP就不支持这个扩展,考虑到XP的装机量,这个特性几乎没用)。

HTTPS主要作用是:

  1. 对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全
  2. 对网站服务器进行真实身份认证

HTTP和HTTPS的区别

  1. HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密
  2. HTTP 的端口号是 80,HTTPS 是 443
  3. HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费
  4. HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

那我们该如何去弥补HTTPS的缺点呢?

HTTPS接入优化

CDN接入

HTTPS 增加的延时主要是传输延时 RTT,RTT 的特点是节点越近延时越小,CDN 天然离用户最近,因此选择使用 CDN 作为 HTTPS 接入的入口,将能够极大减少接入延时。CDN 节点通过和业务服务器维持长连接、会话复用和链路质量优化等可控方法,极大减少 HTTPS 带来的延时。

会话缓存

虽然前文提到 HTTPS 即使采用会话缓存也要至少1*RTT的延时,但是至少延时已经减少为原来的一半,明显的延时优化;同时,基于会话缓存建立的 HTTPS 连接不需要服务器使用RSA私钥解密获取 Pre-master 信息,可以省去CPU 的消耗。如果业务访问连接集中,缓存命中率高,则HTTPS的接入能力讲明显提升。当前TRP平台的缓存命中率高峰时期大于30%,10k/s的接入资源实际可以承载13k/的接入,收效非常可观。

硬件加速

为接入服务器安装专用的SSL硬件加速卡,作用类似 GPU,释放 CPU,能够具有更高的 HTTPS 接入能力且不影响业务程序的。测试某硬件加速卡单卡可以提供35k的解密能力,相当于175核 CPU,至少相当于7台24核的服务器,考虑到接入服务器其它程序的开销,一张硬件卡可以实现接近10台服务器的接入能力。

远程解密

本地接入消耗过多的 CPU 资源,浪费了网卡和硬盘等资源,考虑将最消耗 CPU 资源的RSA解密计算任务转移到其它服务器,如此则可以充分发挥服务器的接入能力,充分利用带宽与网卡资源。远程解密服务器可以选择 CPU 负载较低的机器充当,实现机器资源复用,也可以是专门优化的高计算性能的服务器。当前也是 CDN 用于大规模HTTPS接入的解决方案之一。

SPDY/HTTP2

前面的方法分别从减少传输延时和单机负载的方法提高 HTTPS 接入性能,但是方法都基于不改变 HTTP 协议的基础上提出的优化方法,SPDY/HTTP2 利用 TLS/SSL 带来的优势,通过修改协议的方法来提升 HTTPS 的性能,提高下载速度等。

你可能感兴趣的:(前端,浏览器,网络传输,http,面试,https)