网络知识是后端、前端和云计算都绕不开的基础。
OSI 与 TCP/IP
OSI 七层模型:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
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 说明理解还不够稳。
- 记录常见误用:例如边界条件、权限假设、性能假设、同步/异步差异或环境差异。
- 把概念和项目经历关联起来:如果面试被追问,可以用自己的项目说明为什么这样选。
- 最后用一句话总结取舍:它牺牲了什么,换来了什么。
自测问题
- 这个主题解决的核心问题是什么?
- 如果不用当前方案,还有哪些替代方案?代价是什么?
- 最容易出错的边界条件在哪里?
- 如何在代码、测试或监控中验证它真的可靠?
项目化应用场景
可以把这类知识放到一次网页访问中理解:浏览器先 DNS 解析域名,再建立 TCP/TLS 连接,发送 HTTP 请求,中间可能经过 CDN、代理、负载均衡,最后服务端返回响应。排查问题时不要直接猜代码 bug,而要分层定位:域名是否解析、端口是否通、证书是否有效、状态码是否正确、响应体是否符合预期。
常见误区:
- 把所有访问失败都归因于后端代码。
- 忽略 DNS 缓存、代理和 CDN。
- 不区分 401、403、404、502、504 的含义。