本文已参与「新人创作礼」活动,一起开启掘金创作之路
前言
在面试和复习过程中总结的一些前端知识点,记录下来,风格较简洁,尽量涵盖内容要点和简单例子。本文是前端面试系列第八篇:网络,持续更新...
一、七层网络模型
从下到上:物理层 -> 数据链路层 -> 网络层 -> 传输层 -> 会话层 -> 表示层 -> 应用层
二、https 加密过程
https 的 优势:内容保密性、内容准确性、来源可靠性。
https 其实是 http 披上了一层加密的外壳(SSL)。
加密过程:
- 客户端申请 https 通信;
- 服务器响应并向客户端传递证书;
- 客户端验证证书,获取公钥,生成对称密钥,用公钥加密后把对称密钥传给服务器;
- 服务器收到消息,用私钥解密,拿到对称密钥,SSL 通道建立完成;
- 客户端和服务器用对称密钥进行通信;
- 客户端断开连接。
三、三次握手过程
- 第一次握手:客户端给服务器发送一个 SYN 报文;
- 第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文;
- 第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文,服务端收到后建立连接。
四、四次挥手过程
- 第一次挥手:客户端发送一个 FIN 报文;
- 第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文;
- 第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文;
- 第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,服务端收到后断开连接。
五、http2.0 做了哪些改进
- 采用二进制传输数据,而不是文本格式,提升了传输速度;
- 多路复用,1.x 实现并发需要建立多个 TCP 连接,2.0 让所有通信都在一个 TCP 连接上完成;
- 对头部进行压缩
六、http2.0 有哪些不足,http3.0 做了哪些改进
不足:
- TCP 队头阻塞问题(由于单个数据包丢失而造成的阻塞)
- TCP 建立连接延时(TCP 握手也会影响传输效率)
http3.0 基于 UDP,实现了类似 TCP 的多路数据流、传输可靠性等功能,称为 QUIC 协议。
七、webSocket 的建立过程
webSocket 的出现,使得浏览器具备了实时双向通信的能力。
建立过程: webSocket 复用了 HTTP 的握手通道,具体指的是,客户端通过 HTTP 请求与 WebSocket 服务端协商升级协议,协议升级完成后,后续的数据交换则遵照 WebSocket 的协议。