1、说一下 http 和 https
https 的 SSL 加密是在传输层实现的。
1.1、http 和 https 的基本概念
- http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,用于从服务器传输超文本到本地浏览器的传输协议。
- https: 是
以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版
,即 HTTP + SSL 层,HTTPS 的安全基础是 SSL。
1.2、http 和 https 的区别
http 传输的数据都是未加密的,也就是明文的
,
https 协议是由 http 和 ssl 协议构建的可进行加密传输和身份认证的网络协议
,比 http 协议的安全性更高。
主要的区别如下:
安全性:
http 信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。默认端口也不同
,http 协议的默认端口为 80,https 的端口为 443
1.3、https 协议的工作原理
客户端在使用 HTTPS 方式与 Web 服务器通信时有以下几个步骤:
- 客户端使用 https 的url 访问服务器,则要求 web 服务器建立 ssl 链接。
- web服务器端接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),返回或者说传输给客户端。
- 客户端和 web 服务器端开始协商 SSL 链接的安全等级,也就是加密等级。
- 客户端浏览器通过双方协商一致的安全等级,建立会话密钥。
- 然后通过网站的公钥来加密会话密钥,并传送给服务器端。
- web 服务器端通过自己的私钥解密出会话密钥。
这也就完成了web 服务器通过会话密钥加密与客户端之间的通信
1.4、https 协议的优点
- 使用 HTTPS 协议可认证用户和服务器,
确保数据发送到正确的客户机和服务器
; - HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,
要比 http 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性
。 - HTTPS 是
现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本
。
1.5、https 协议的缺点
- https
握手阶段比较费时,会使请求时间延长 50%
。 - https
缓存不如 http 高效,会增加数据开销
。 SSL 证书也需要钱
,功能越强大的证书费用越高。- SSL 证书需要绑定 IP,不能再同一个 ip 上绑定多个域名。
2、tcp 三次握手,一句话概括
客户端和服务端都需要确认各自可收、发,因此需要三次握手。
具体流程如下:
- 第一次握手:客户端发送一段TCP报文,服务端收到报文。
这次握手,服务端可以确认自己可以接受到客户端发送的报文 - 第二次握手:服务器端返回一段TCP报文,客户端收到返回报文。
这次握手,客户端可以确认服务端收到了自己发送的报文段,并且可以确认自己可以接受 服务器发送的报文段 - 第三次握手:客户端将返回的报文返回给服务端
这次握手,服务端可以确认客户端收到了自己发送的报文
3、TCP 和 UDP 的区别 :
1)TCP 是面向连接的,UDP 是无连接的,即发送数据前不需要先建立链接。
2)TCP 连接传送的数据,不丢失, 不重复,且按序到达;
UDP 尽最大努力交付,即不保证可靠交付。
3)TCP 是面向字节流,UDP 面向报文,
4)TCP 只能是 1 对 1 的,UDP 支持 1 对 1,1 对多。
5)TCP 的首部较大为 20 字节,而 UDP 只有 8 字节。
4、WebSocket 的实现和应用
4.1、什么是 WebSocket
WebSocket 是 HTML5 中的协议,支持持久连续,
http 协议不支持持久性连接
4.2、WebSocket 是什么样的协议,具体有什么优点
websocket 握手协议的实现,基本是 2 个属性,upgrade, connection。 基本请求如下:
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
告诉服务器发送的是 websocket
5、一个图片 url 访问后直接下载怎样实现?
请求的返回头里面,用于浏览器解析的重要参数就是 OSS 的 API ,
文档里面的返回 http 头,决定用户下载行为的参数。
下载的情况下:
1. x-oss-object-type: Normal
2. x-oss-request-id: 598D5ED34F29D01FE2925F41
3. x-oss-storage-class: Standard
6、说几个很实用的 BOM 属性对象方法
什么是 Bom? Bom 是浏览器对象
。有哪些常用的 Bom 属性呢?
- location 对象
location.href-- 返回或设置当前文档的 URL
location.search -- 返回 URL?后面的内容(包括问号)
location.hash -- 返回 URL#后面的内容,如果没有#,返回空
location.host -- 返回 URL 中的域名部分,例如 www.dreamdu.com
location.hostname -- 返回 URL 中的主域名部分,例如 dreamdu.com
location.pathname -- 返回 URL 的域名后的部分
location.port -- 返回 URL 中的端口部分
location.protocol -- 返回 URL 中的协议部分,例如 http://www.dreamdu.com:8080/xhtml/ 返 回(//)前面的内容 http:
location.replace() -- 设置当前文档的 URL,并且在 history 对象的地址列表中移除这个 URL
location.reload() -- 重载当前页面
- history 对象
history.go() -- 前进或后退指定的页面数 history.go(num);
history.back() -- 后退一页
history.forward() -- 前进一页
- Navigator 对象
navigator.userAgent -- 返回用户代理头的字符串表示(就是 **包括浏览器版本信息** 等的字 符串)
navigator.cookieEnabled -- 返回浏览器是否支持(启用)cookie