柳嘉希

硕士研究生毕业生

软件工程师 | 可扩展的API · 网络爬虫 · 数据集成 · Vibe代码清理专家

计算机网络复习:OSI、TCP/UDP、HTTP、DNS、CDN 与 WebSocket

网络知识是后端、前端和云计算都绕不开的基础。

OSI 与 TCP/IP

OSI 七层模型:

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

TCP/IP 常简化为四层:网络接口层、网络层、传输层、应用层。

TCP 与 UDP

TCP 面向连接,可靠传输,有三次握手和四次挥手。适合文件传输、网页请求、数据库连接。

UDP 无连接,开销小,不保证可靠。适合实时音视频、游戏、DNS 等场景。

HTTP 与 HTTPS

HTTP 是明文传输,HTTPS 在 HTTP 之上加入 TLS 加密。

常见方法:

  • GET 查询
  • POST 创建
  • PUT 全量更新
  • PATCH 部分更新
  • DELETE 删除

常见状态码:

  • 200 成功
  • 301/302 重定向
  • 400 请求错误
  • 401 未认证
  • 403 无权限
  • 404 不存在
  • 500 服务端错误

DNS 与 CDN

DNS 把域名解析为 IP 地址。CDN 把静态资源缓存到离用户更近的边缘节点,提高访问速度。

WebSocket

WebSocket 是长连接协议,适合实时聊天、通知、协同编辑等场景。

HTTP/2

HTTP/2 相比 HTTP/1.1 支持多路复用、头部压缩和更高效的连接复用。

延伸理解

复习这篇时,不要只记住名词,要把重点放在 OSI/TCP-IP、TCP/UDP、HTTP/HTTPS、DNS、CDN、WebSocket 和 HTTP/2。这类知识如果只停留在定义层面,很容易在面试或项目中答得很散。更好的理解方式是把它放进一个具体场景:谁在调用它,输入从哪里来,失败后谁负责恢复,数据或状态会不会被重复处理。

  • 网络知识要从一次请求的完整链路理解:DNS、连接建立、TLS、HTTP、缓存、代理和服务端响应。
  • 面试中常见问题往往考察边界条件:丢包、重传、拥塞、长连接、跨域和证书信任。
  • 实际排查时要分层定位,先判断是 DNS、网络连通、TLS、HTTP 状态码还是应用逻辑问题。

在真实项目中,可以把它当成一个判断框架:先确认输入、约束、失败场景和可观测性,再决定具体工具或写法。 如果一个方案看起来很简单,要继续追问它在规模扩大、权限变化、异常恢复和团队协作下是否仍然成立。

实践检查清单

  • 明确这个知识点在系统中的位置:是开发时约束、运行时能力、基础设施能力,还是协作流程。
  • 写出一个最小可运行例子,并补一个失败例子;只会写 happy path 说明理解还不够稳。
  • 记录常见误用:例如边界条件、权限假设、性能假设、同步/异步差异或环境差异。
  • 把概念和项目经历关联起来:如果面试被追问,可以用自己的项目说明为什么这样选。
  • 最后用一句话总结取舍:它牺牲了什么,换来了什么。

自测问题

  1. 这个主题解决的核心问题是什么?
  2. 如果不用当前方案,还有哪些替代方案?代价是什么?
  3. 最容易出错的边界条件在哪里?
  4. 如何在代码、测试或监控中验证它真的可靠?

项目化应用场景

可以把这类知识放到一次网页访问中理解:浏览器先 DNS 解析域名,再建立 TCP/TLS 连接,发送 HTTP 请求,中间可能经过 CDN、代理、负载均衡,最后服务端返回响应。排查问题时不要直接猜代码 bug,而要分层定位:域名是否解析、端口是否通、证书是否有效、状态码是否正确、响应体是否符合预期。

常见误区:

  • 把所有访问失败都归因于后端代码。
  • 忽略 DNS 缓存、代理和 CDN。
  • 不区分 401、403、404、502、504 的含义。