计网相关知识

140 阅读4分钟

1. HTTP 常见状态码及使用场景

问题:请列举至少5个HTTP状态码及其适用场景。
答案

  • 200 OK:请求成功,常见于GET/POST请求。
  • 304 Not Modified:资源未修改,浏览器可直接使用本地缓存(协商缓存生效)。
  • 404 Not Found:请求的资源未找到。
  • 500 Internal Server Error:服务器内部错误。
  • 403 Forbidden:服务器拒绝请求(无权限)。
  • 301 Moved Permanently:永久重定向(SEO权重转移)。
  • 302 Found:临时重定向。

2. HTTPS 加密过程

问题:HTTPS 如何实现加密通信?简述SSL/TLS握手过程。
答案

  1. 客户端发送支持的加密算法列表和随机数(Client Hello)。
  2. 服务器返回选择的加密算法、随机数、数字证书(Server Hello)。
  3. 客户端验证证书有效性(CA机构验证),生成预主密钥并用证书公钥加密发送。
  4. 服务器用私钥解密预主密钥,双方通过随机数和预主密钥生成会话密钥。
  5. 后续通信使用对称加密(如AES)加密数据。

3. 跨域问题与解决方案

问题:什么是跨域?如何解决跨域问题?
答案

  • 跨域:因浏览器的同源策略(协议/域名/端口任一不同),限制跨域请求。

  • 解决方案

    1. CORS:服务器设置响应头 Access-Control-Allow-Origin
    2. JSONP:通过 <script> 标签跨域加载数据(仅支持GET)。
    3. 代理服务器:前端开发服务器或Nginx代理转发请求。
    4. WebSocket:协议本身支持跨域。

4. TCP 三次握手与四次挥手

问题:为什么TCP连接需要三次握手,断开需要四次挥手?
答案

  • 三次握手(建立连接):

    1. 客户端发送 SYN(同步序列号)。
    2. 服务器返回 SYN-ACK(确认+同步)。
    3. 客户端发送 ACK(确认)。
      确保双方都能确认收发能力。
  • 四次挥手(断开连接):

    1. 客户端发送 FIN
    2. 服务器返回 ACK
    3. 服务器处理完数据后发送 FIN
    4. 客户端返回 ACK
      因为TCP是全双工通信,需双方分别关闭通道。

5. WebSocket 协议特点

问题:WebSocket 和 HTTP 长轮询的区别是什么?
答案

  • WebSocket

    • 基于TCP的全双工通信协议,只需一次HTTP握手建立连接。
    • 服务端可主动推送数据,延迟低,适合实时应用(如聊天、游戏)。
  • HTTP长轮询

    • 客户端不断轮询请求,服务器在有数据时返回,否则保持连接挂起。
    • 频繁建立连接,资源消耗较高。

6. DNS 解析过程

问题:输入URL后,DNS解析的具体步骤是什么?
答案

  1. 浏览器缓存 → 2. 系统(hosts文件)缓存 → 3. 本地DNS服务器 →
  2. 若未找到,本地DNS向根DNS、顶级域(.com)、权威DNS逐级查询,直到获取IP。

7. CDN 的作用与原理

问题:CDN 如何加速网站资源加载?
答案

  • 作用:通过分布式边缘节点缓存静态资源,减少用户与源站的物理距离。

  • 原理

    1. 用户请求资源时,DNS解析返回最近的CDN节点IP。
    2. CDN节点若有缓存直接返回,否则回源站获取并缓存。

8. HTTP 缓存策略

问题:强缓存与协商缓存的区别?相关HTTP头部有哪些?
答案

  • 强缓存:直接使用本地缓存,不向服务器请求。

    • 头部:Cache-Control: max-age=3600 / Expires(绝对时间)。
  • 协商缓存:向服务器验证资源是否过期。

    • 头部:Last-Modified + If-Modified-Since,或 ETag + If-None-Match

9. HTTP/2 核心改进

问题:HTTP/2 相比 HTTP/1.1 有哪些优化?
答案

  • 二进制分帧:数据以二进制帧传输,解析更高效。
  • 多路复用:一个TCP连接并发处理多个请求,解决队头阻塞。
  • 头部压缩:HPACK算法压缩头部大小。
  • 服务器推送:服务器可主动推送资源(如CSS/JS)。

10. 安全相关:XSS 和 CSRF

问题:如何防御 XSS 和 CSRF 攻击?
答案

  • XSS(跨站脚本攻击)

    • 转义用户输入(如 < → &lt;)。
    • 使用CSP(内容安全策略)限制资源加载。
  • CSRF(跨站请求伪造)

    • 使用Token验证(如JWT)。
    • 设置SameSite Cookie属性。

附加题:RESTful API 设计原则

问题:什么是RESTful API?设计时需要注意哪些原则?
答案

  • 核心原则:以资源为中心,使用HTTP方法表达操作(GET/POST/PUT/DELETE)。

  • 规范

    • URI使用名词(如 /users),而非动词。
    • 状态码符合语义(如200成功,201创建)。
    • 版本控制(如 /api/v1/users)。