Skip to main content

http

番风About 4 min

模板

#carad

  • 关键词
  • 简要描述
  • 坑点

面试官:什么是HTTP? HTTP 和 HTTPS 的区别? | web前端面试 - 面试官系列open in new window

  • 关键词: 安全,http 使用 SSL/TLS 进行加密处理**,默认端口(80/443)**,性能
  • http: 无连接,无状态
  • https: 使用对称加密 + 非对称加密,也就是混合加密
    image.png

面试官:为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的? | web前端面试 - 面试官系列open in new window

  • 关键词: 混合加密, 摘要算法确保数据没有被篡改,
    HTTPS 连接建立过程
  1. 客户端请求 HTTPS 连接
    • 客户端(浏览器)向服务器发送 HTTPS 连接请求。
  2. 服务器返回证书
    • 服务器返回包含公钥的数字证书。
  3. 客户端验证证书
    • 客户端验证服务器的证书是否合法。如果证书可信,客户端生成一个随机的对称密钥。
  4. 客户端加密对称密钥
    • 客户端使用服务器的公钥对对称密钥进行加密,并将加密后的对称密钥发送给服务器。
  5. 服务器解密对称密钥
    • 服务器使用自己的私钥解密客户端发送的对称密钥。
  6. 使用对称密钥加密通信
    • 客户端和服务器都拥有相同的对称密钥,之后的通信使用对称加密进行,加密和解密速度更快。

TCP 和 UDP 的使用场景

image.png

面试官:如何理解CDN?说说实现原理? | web前端面试 - 面试官系列open in new window

关键词: 边缘节点,
原理分析:
无 CDN: 用户提交域名→浏览器对域名进行解释→DNS 解析得到目的主机的 IP 地址→根据 IP 地址访问发出请求→得到请求数据并回复
应用 CDN 后,DNS 返回的不再是 IP 地址,而是一个 CNAME(Canonical Name) 别名记录,指向 CDN 的全局负载均衡,这个负载均衡根据访问者信息来进行调度到 CDN 服务器上。

面试官:说说 HTTP1.0/1.1/2.0 的区别? | web前端面试 - 面试官系列open in new window

http1.0: 一次传输一个文件
http1.1: 可以在一个 tcp 链接上传多个 http 请求 但是同一个 TCP 连接里面,所有的数据通信是按次序进行的,服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着
http2.0: 完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行

面试官:说说 HTTP 常见的请求头有哪些? 作用? | web前端面试 - 面试官系列open in new window

Cache-Control 控制缓存时间

面试官:说说地址栏输入 URL 敲下回车后发生了什么? | web前端面试 - 面试官系列open in new window

  • URL 解析
  • DNS 查询
  • TCP 连接
  • HTTP 请求
  • 响应请求
  • 页面渲染

面试官:说说TCP为什么需要三次握手和四次挥手? | web前端面试 - 面试官系列open in new window

费曼: 1. 三次握手是什么;2.四次挥手是什么;3. 为什么
问题: 什么是握手? 什么是挥手?
握手是指双方建立链接,挥手是指双方断开链接。
关键词: 客户端 服务端
握手

  1. 客户端给服务端发起一个请求
  2. 服务端表示收到请求了,确认可以链接
  3. 客户端再给服务端发个 ok,ACK 确认包,表示链接建立成功
    挥手
  4. 主动终止的一方发送一个终止包给对方 FIN
  5. ACK,另一方收到 FIN 表示确认断开。
  6. FIN: 服务端向客户端发送一个 Fin,表示服务器没有数据发送了,但会继续接受
  7. ACK:客户端收到服务器的 FIN 包后,向服务器发送一个 ACK(确认)包,确认收到了断开请求。
    为什么不是两次握手?
    如果是两次握手,发送端可以确定自己发送的信息能对方能收到,也能确定对方发的包自己能收到,但接收端只能确定对方发的包自己能收到 无法确定自己发的包对方能收到
    并且两次握手的话, 客户端有可能因为网络阻塞等原因会发送多个请求报文,延时到达的请求又会与服务器建立连接,浪费掉许多服务器的资源