小刘刘の第一篇博客-----前端面试(http)

2021-5-26-----小刘刘第一篇博客文章~啦啦啦(ps:早就想发博客了,一直没有时间整理)

通过这几次整理前端的笔记,发现自己的知识体系更加系统,发出来和各位博友共勉,欢迎大家点评补充

一起学习~共同进步

前端面试重中之重 http和https的区别(基本必问,快快收藏)

  •  首先,我们需要知道什么是http,我们知道,两方之间通信必须遵守相同的协议,我们学习英语交流,就必须遵守英语的语法规定(也即隐式的协议),互联网之间的通信(即浏览器和服务器之间的通信)也是要遵循一定的规则,即http协议。

http简介:

http(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。

http协议特点:

http是一种无状态的协议,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。

http是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

 http协议工作原理总结:

一次HTTP操作称为一个事物,其工作过程可分为四步

1、Client与Server建立连接,单击某个超链接,HTTP的工作开始。

2、连接建立后,Client发送一个请求给Server,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符,Client信息和可能的内容。

3、Server接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括Server信息、实体信息和可能的内容。

4、Client接收Server返回的信息通过浏览器显示在用户的显示屏上,然后Client和Server断开连接。 

http请求:

HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。

HTTP请求第一行为请求行,由三部分组成,第一部分说明了该请求是POST请求;第二部分是一个斜杠(/login.php),用来说明请求是该域名根目

录下的login.php;第三部分说明使用的是HTTP1.1版本。

http请求方法:

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1 新增了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

http状态码:

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。

当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

五种状态码:

1xx:信息提示,表示请求已被成功接收,继续处理。
2xx:操作被成功接受并处理
3xx:客户端被重定向到其他资源。
4xx:客户端错误状态码,格式错误或者不存在资源。
5xx:描述服务器内部错误。

常见的状态码描述如下:

200:客户端请求成功,是最常见的状态。
302:重定向。
404:请求资源不存在,是最常见的状态。
400:客户端请求有语法错误,不能被服务器所理解。
401:请求未经授权。
403:服务器收到请求,但是拒绝提供服务。
500:服务器内部错误,是最常见的状态。
503:服务器当前不能处理客户端的请求。  

  •  互联网通信必须需要考虑安全性问题,因此,在http协议之上更具安全性在HTTPS协议映入眼帘

https协议:

Https协议是以安全为目标的 HTTP 通道,是 HTTP 的安全版。

HTTPS 的安全基础是 SSL。SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

SSL 协议可分为两层:SSL 记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密

等基本功能的支持。

SSL 握手协议(SSL Handshake Protocol),它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算

法、交换加密密钥等。
 

 https协议工作原理总结 :


1、Client使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接。

2、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

3、客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

4、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

5、Web服务器利用自己的私钥解密出会话密钥。

6、Web服务器利用会话密钥加密与客户端之间的通信。

  • http协议和https协议的比较 

  • HTTPS  协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)
  • HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无

   状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

HTTPS 相对于 HTTP 的改进:

  • 双向的身份认证

客户端和服务端在传输数据之前,会通过基于X.509证书对双方进行身份认证 。

具体过程如下:

客户端发起 SSL 握手消息给服务端要求连接。

服务端将证书发送给客户端。

客户端检查服务端证书,确认是否由自己信任的证书签发机构签发(客户端内置了所有受信任 CA 的证书)。

如果不是,将是否继续通讯的决定权交给用户选择 ( 注意,这里将是一个安全缺陷 )。

如果检查无误或者用户选择继续,则客户端认可服务端的身份。

服务端要求客户端发送证书,并检查是否通过验证。失败则关闭连接。

  • 注意:

(1) 采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以

继续访问。这套证书其实就是一对公钥和私钥。

(2) 互联网有太多的服务需要使用证书来验证身份,以至于客户端(操作系统或浏览器等)无法内置所有证书,需要通过服务端将证书发送给客户端。

(3) 客户端内置的是 CA 的根证书(Root Certificate),HTTPS 协议中服务器会发送证书链(Certificate Chain)给客户端。

  • 数据传输的机密性
  1. 客户端和服务端在开始传输数据之前,会协商传输过程需要使用的加密算法。
  2. 客户端发送协商请求给服务端, 其中包含自己支持的非对成加密的密钥交换算法 ( 一般是RSA),数据签名摘要算法 ( 一般是SHA或者MD5) ,加密传
  3. 输数据的对称加密算法 ( 一般是DES),以及加密密钥的长度。
  4. 服务端接收到消息之后,选中安全性最高的算法,并将选中的算法发送给客户端,完成协商。
  5. 客户端生成随机的字符串,通过协商好的非对称加密算法,使用服务端的公钥对该字符串进行加密,发送给服务端。
  6. 服务端接收到之后,使用自己的私钥解密得到该字符串。在随后的数据传输当中,使用这个字符串作为密钥进行对称加密。
  • 防止重放攻击
  1. SSL 使用序列号来保护通讯方免受报文重放攻击。这个序列号被加密后作为数据包的负载。
  2. HTTPS 的改进点在于创造性的使用了非对称加密算法,在不安全的网路上,安全的传输了用来进行非对称加密的密钥,综合利用了非对称加密的安全性和对称加密的快速性。

HTTPS 的优点:

1、使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。

2、HTTPS 协议是由SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全

3、HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

HTTPS 的缺点(对比优点)

1、HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近。

2、HTTPS 连接缓存不如 HTTP 高效,会增加数据开销,甚至已有的安全措施也会因此而受到影响。

3、HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。

4、SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗。

5、成本增加。部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。

6、HTTPS 协议的加密范围也比较有限。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。

补充点:SSL 工作流程

(摘自其他优秀博友) 

服务器认证阶段:

(1) 客户端向服务器发送一个开始信息 "Hello" 以便开始一个新的会话连接;

(2) 服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的 "Hello" 信息时将包含生成主密钥所需的信息;

(3) 客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

(4) 服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值