http
May 31, 2024About 4 min
模板
#carad
- 关键词
- 简要描述
- 坑点
面试官:什么是HTTP? HTTP 和 HTTPS 的区别? | web前端面试 - 面试官系列
- 关键词: 安全,http 使用 SSL/TLS 进行加密处理**,默认端口(80/443)**,性能
- http: 无连接,无状态
- https: 使用对称加密 + 非对称加密,也就是混合加密
面试官:为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的? | web前端面试 - 面试官系列
- 关键词: 混合加密, 摘要算法确保数据没有被篡改,
HTTPS 连接建立过程
- 客户端请求 HTTPS 连接:
- 客户端(浏览器)向服务器发送 HTTPS 连接请求。
- 服务器返回证书:
- 服务器返回包含公钥的数字证书。
- 客户端验证证书:
- 客户端验证服务器的证书是否合法。如果证书可信,客户端生成一个随机的对称密钥。
- 客户端加密对称密钥:
- 客户端使用服务器的公钥对对称密钥进行加密,并将加密后的对称密钥发送给服务器。
- 服务器解密对称密钥
- 服务器使用自己的私钥解密客户端发送的对称密钥。
- 使用对称密钥加密通信:
- 客户端和服务器都拥有相同的对称密钥,之后的通信使用对称加密进行,加密和解密速度更快。
TCP 和 UDP 的使用场景
面试官:如何理解CDN?说说实现原理? | web前端面试 - 面试官系列
关键词: 边缘节点,
原理分析:
无 CDN: 用户提交域名→浏览器对域名进行解释→DNS
解析得到目的主机的 IP 地址→根据 IP 地址访问发出请求→得到请求数据并回复
应用 CDN
后,DNS
返回的不再是 IP
地址,而是一个 CNAME
(Canonical Name) 别名记录,指向 CDN
的全局负载均衡,这个负载均衡根据访问者信息来进行调度到 CDN 服务器上。
面试官:说说 HTTP1.0/1.1/2.0 的区别? | web前端面试 - 面试官系列
http1.0: 一次传输一个文件
http1.1: 可以在一个 tcp 链接上传多个 http 请求 但是同一个 TCP 连接里面,所有的数据通信是按次序进行的,服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着
http2.0: 完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行
面试官:说说 HTTP 常见的请求头有哪些? 作用? | web前端面试 - 面试官系列
Cache-Control 控制缓存时间
面试官:说说地址栏输入 URL 敲下回车后发生了什么? | web前端面试 - 面试官系列
- URL 解析
- DNS 查询
- TCP 连接
- HTTP 请求
- 响应请求
- 页面渲染
面试官:说说TCP为什么需要三次握手和四次挥手? | web前端面试 - 面试官系列
费曼: 1. 三次握手是什么;2.四次挥手是什么;3. 为什么
问题: 什么是握手? 什么是挥手?
握手是指双方建立链接,挥手是指双方断开链接。
关键词: 客户端 服务端
握手:
- 客户端给服务端发起一个请求
- 服务端表示收到请求了,确认可以链接
- 客户端再给服务端发个 ok,ACK 确认包,表示链接建立成功
挥手: - 主动终止的一方发送一个终止包给对方 FIN
- ACK,另一方收到 FIN 表示确认断开。
- FIN: 服务端向客户端发送一个 Fin,表示服务器没有数据发送了,但会继续接受
- ACK:客户端收到服务器的 FIN 包后,向服务器发送一个 ACK(确认)包,确认收到了断开请求。
为什么不是两次握手?
如果是两次握手,发送端可以确定自己发送的信息能对方能收到,也能确定对方发的包自己能收到,但接收端只能确定对方发的包自己能收到 无法确定自己发的包对方能收到
并且两次握手的话, 客户端有可能因为网络阻塞等原因会发送多个请求报文,延时到达的请求又会与服务器建立连接,浪费掉许多服务器的资源