浏览器、网络层面试常见问题汇总

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

おすすめ

転載: blog.csdn.net/yiyueqinghui/article/details/121502455