前端常用面试问题的疑难解惑(1)

624 阅读7分钟

这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

1、说一下http 和https

参考回答: https 的SSL 加密是在传输层实现的。

(1)http 和https 的基本概念

http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW 服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 ​ https: 是以安全为目标的HTTP 通道,简单讲是HTTP 的安全版,即HTTP 下加入SSL层,HTTPS 的安全基础是SSL,因此加密的详细内容就需要SSL。 https 协议的主要作用是:建立一个信息安全通道,来确保数组的传输,确保网站的真实 性。

(2)http 和https 的区别?

http 传输的数据都是未加密的,也就是明文的,网景公司设置了SSL 协议来对http 协议传输的数据进行加密处理,简单来说https 协议是由http 和ssl 协议构建的可进行加密传输和身份认证的网络协议,比http 协议的安全性更高。 主要的区别如下: Https 协议需要ca 证书,费用较高。 http 是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl 加密传输协议。 使用不同的链接方式,端口也不同,一般而言,http 协议的端口为80,https 的端口为 443 http 的连接很简单,是无状态的;HTTPS 协议是由SSL+HTTP 协议构建的可进行加密传 输、身份认证的网络协议,比http 协议安全。

(3)https 协议的工作原理

客户端在使用HTTPS 方式与Web 服务器通信时有以下几个步骤,如图所示。 客户使用https url 访问服务器,则要求web 服务器建立ssl 链接。 web 服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),返回或 者说传输给客户端。 客户端和web 服务器端开始协商SSL 链接的安全等级,也就是加密等级。 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加 密会话密钥,并传送给网站。 web 服务器通过自己的私钥解密出会话密钥。 web 服务器通过会话密钥加密与客户端之间的通信。

(4)https 协议的优点

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

HTTPS 协议是由SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 http 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。 HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻 击的成本。 谷歌曾在2014 年8 月份调整搜索引擎算法,并称“比起同等HTTP 网站,采用HTTPS 加密的网站在搜索结果中的排名将会更高”。

(5)https 协议的缺点

https 握手阶段比较费时,会使页面加载时间延长50%,增加10%~20%的耗电。 https 缓存不如http 高效,会增加数据开销。 SSL 证书也需要钱,功能越强大的证书费用越高。 SSL 证书需要绑定IP,不能再同一个ip 上绑定多个域名,ipv4 资源支持不了这种消耗。

2、tcp 三次握手,一句话概括

参考回答: 客户端和服务端都需要直到各自可收发,因此需要三次握手。 简化三次握手: img 从图片可以得到三次握手可以简化为:C 发起请求连接S 确认,也发起连接C 确认我们 再看看每次握手的作用:第一次握手:S 只可以确认自己可以接受C 发送的报文段第 二次握手:C 可以确认S 收到了自己发送的报文段,并且可以确认自己可以接受S 发 送的报文段第三次握手:S 可以确认C 收到了自己发送的报文段

3、TCP 和UDP 的区别

参考回答: (1)TCP 是面向连接的,udp 是无连接的即发送数据前不需要先建立链接。 (2)TCP 提供可靠的服务。也就是说,通过TCP 连接传送的数据,无差错,不丢失, 不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付。并且因为tcp 可靠, 面向连接,不会丢失数据因此适合大数据量的交换。 (3)TCP 是面向字节流,UDP 面向报文,并且网络出现拥塞不会使得发送速率降低(因 此会出现丢包,对实时的应用比如IP 电话和视频会议等)。 (4)TCP 只能是1 对1 的,UDP 支持1 对1,1 对多。 (5)TCP 的首部较大为20 字节,而UDP 只有8 字节。 (6)TCP 是面向连接的可靠性传输,而UDP 是不可靠的。

4、Web Socket的实现和应用

参考回答: (1)什么是WebSocket?

WebSocket 是HTML5 中的协议,支持持久连续,http 协议不支持持久性连接。Http1.0 和HTTP1.1 都不支持持久性的链接,HTTP1.1 中的keep-alive,将多个http 请求合并为 1 个 (2)WebSocket 是什么样的协议,具体有什么优点? HTTP 的生命周期通过Request 来界定,也就是Request 一个Response,那么在Http1.0 协议中,这次Http 请求就结束了。在Http1.1 中进行了改进,是的有一个connection: Keep-alive,也就是说,在一个Http 连接中,可以发送多个Request,接收多个Response。 但是必须记住,在Http 中一个Request 只能对应有一个Response,而且这个Response 是被动的,不能主动发起。 WebSocket 是基于Http 协议的,或者说借用了Http 协议来完成一部分握手,在握手阶段 与Http 是相同的。我们来看一个websocket 握手协议的实现,基本是2 个属性,upgrade, connection。 基本请求如下: GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 Origin: example.com 多了下面2 个属性: 1 .Upgrade:webSocket

2.Connection:Upgrade 告诉服务器发送的是websocket 1.Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== 2.Sec-WebSocket-Protocol: chat, superchat 3.Sec-WebSocket-Version: 13

5、HTTP 请求的方式,HEAD 方式

参考回答: head:类似于get 请求,只不过返回的响应中没有具体的内容,用户获取报头 options:允许客户端查看服务器的性能,比如说服务器支持的请求方式等等。

6、一个图片url 访问后直接下载怎样实现?

参考回答: 请求的返回头里面,用于浏览器解析的重要参数就是OSS 的API 文档里面的返回http 头,决定用户下载行为的参数。 下载的情况下:

  1. x-oss-object-type: Normal
  2. x-oss-request-id: 598D5ED34F29D01FE2925F41
  3. x-oss-storage-class: Standard

7、说一下web Quality(无障碍)

参考回答: 能够被残障人士使用的网站才能称得上一个易用的(易访问的)网站。 残障人士指的是那些带有残疾或者身体不健康的用户。 使用alt 属性: 有时候浏览器会无法显示图像。具体的原因有: 用户关闭了图像显示 浏览器是不支持图形显示的迷你浏览器 浏览器是语音浏览器(供盲人和弱视人群使用) 如果您使用了alt 属性,那么浏览器至少可以显示或读出有关图像的描述。