计算机网络基础知识 - 第二梯队(高频)

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

三次握手(建立连接)

  • SYN:客户端发送 SYN 包请求建立连接。
  • SYN-ACK:服务器收到 SYN 包后,回复 SYN-ACK 包。
  • ACK:客户端收到 SYN-ACK 包后,回复 ACK 包,建立连接。

四次挥手(断开连接)

  • FIN:客户端发送 FIN 包,表示请求关闭连接。
  • ACK:服务器收到 FIN 包后,回复 ACK 包。
  • FIN:服务器准备好关闭连接后,发送 FIN 包。
  • ACK:客户端收到服务器的 FIN 包后,回复 ACK 包,连接关闭。

2. 为什么会出现 TCP 的队头阻塞?

队头阻塞 (Head-of-Line Blocking) 是指当一个 TCP 连接中的一个数据包丢失或延迟,后续的数据包必须等到这个数据包被正确接收后才能继续处理。即使其他数据包已经到达,仍需要等待队头的数据包。

  • 根本原因
    • 可靠性:TCP 为了确保数据的可靠传输,会等待丢失的数据包被重新传输并按顺序接收,从而导致后续数据的延迟。
  • 解决方案
    • HTTP/2:通过多路复用和流优先级来缓解,但仍然受到 TCP 固有问题的影响。
    • HTTP/3:通过 QUIC 协议利用 UDP 彻底解决了 TCP 层的队头阻塞。

3. DNS 解析的过程

  1. 浏览器缓存:首先查看浏览器的 DNS 缓存中是否有该域名的解析记录。
  2. 操作系统缓存:如果浏览器没有缓存,再查看操作系统的 DNS 缓存。
  3. 本地 DNS 服务器查询:如果操作系统缓存中也没有,查询配置的本地 DNS 服务器。
  4. 递归查询流程
    • 根域名服务器:本地 DNS 服务器首先向根域名服务器查询,根服务器知道顶级域(TLD)服务器的地址。
    • TLD 服务器:根域名服务器返回 TLD 服务器地址,本地 DNS 服务器向 TLD 服务器查询(如 .com、.cn)。
    • 权威 DNS 服务器:TLD 服务器返回权威 DNS 服务器地址,本地 DNS 服务器向该服务器查询最终的 IP 地址。
  5. 返回结果:解析完成后,本地 DNS 服务器将结果返回给客户端。

Cookie 是服务器存储在用户浏览器上的小段文本信息。其核心属性如下:

  • Name / Value:存储数据的键值对。
  • Domain:指定 Cookie 在哪个域名下有效。
  • Path:指定 Cookie 的有效路径。
  • Expires / Max-age
    • Expires:过期时间戳(GMT 格式)。
    • Max-age:失效倒计时(秒)。0 立即失效,负数或未设置则关闭浏览器失效(默认值为 -1)。
  • Size:Cookie 的字节大小。
  • HttpOnly:若为 true,则脚本无法通过 document.cookie 访问,有效防止 XSS 攻击。
  • Secure:仅通过 HTTPS 协议传输。
  • SameSite:防御 CSRF 攻击。
    • Strict:完全禁止第三方 Cookie。
    • Lax:部分限制,允许导航到目标网址的 GET 请求发送。
    • None:不限制。

[!NOTE] 导航到目标网址的 GET 请求:指用户直接输入 URL、点击链接或通过脚本触发的页面跳转。


5. 对称加密与非对称加密

1. 对称加密

加密和解密使用同一个密钥

  • 过程:密钥共享 → 发送方加密 (AES/DES) → 传输 → 接收方用相同密钥解密。
  • 特点:速度快,适合加解密大量数据;但密钥交换过程存在安全风险。

2. 非对称加密

使用一对密钥:公钥(公开)和私钥(保密)。公钥加密,私钥解密。

  • 过程:接收方生成密钥对 → 公开公钥 → 发送方用公钥加密 (RSA/ECC) → 传输 → 接收方用私钥解密。
  • 特点:安全性极高,密钥管理简便;但计算开销大,速度较慢。

6. 核心总结与对比

加密方式对比表

特性对称加密非对称加密
密钥使用使用相同的密钥加密和解密使用一对密钥(公钥和私钥)
加密速度较快,效率高较慢,消耗计算资源大
安全性较低,依赖密钥管理高,私钥不泄露即安全
密钥交换需安全的密钥交换方式公钥公开,密钥交换较为安全
应用场景大量数据加密(文件、磁盘)身份验证、数字签名、HTTPS 握手

典型应用场景汇总

  • 对称加密:适用于大规模数据加密,如文件系统、数据库加密。
  • 非对称加密:广泛应用于 SSL/TLS 加密通信、数字证书验证和安全认证。
Node.js 基础教程
计算机网络基础知识 - 第一梯队(极高频)
Valaxy v0.28.0-beta.1 驱动|主题-Yunv0.28.0-beta.1