计算机网络高频考点记忆手册
覆盖互联网大厂程序员面试中常见的计算机网络高频知识点,按模块整理出核心考点、典型问法、易错点和方便背诵的记忆口诀。
目录
- 高频考点总览
- 网络分层与基础概念
- TCP 与 UDP
- TCP 三次握手与四次挥手
- TCP 可靠传输机制
- HTTP 高频考点
- HTTPS 与 TLS 握手
- DNS、CDN 与负载均衡
- Cookie、Session、Token、JWT
- 从输入 URL 到页面显示
- 高频场景题与面试话术
- 考前速背口诀
高频考点总览
| 分类 | 高频考点 | 面试频率 | 记忆关键词 |
|---|---|---|---|
| 分层模型 | OSI、TCP/IP、各层职责 | ⭐⭐⭐⭐ | 分层、解耦、逐层封装 |
| 传输层 | TCP vs UDP | ⭐⭐⭐⭐⭐ | 可靠/无连接/快 |
| TCP 连接管理 | 三次握手、四次挥手、TIME_WAIT | ⭐⭐⭐⭐⭐ | 建连三次、断连四次 |
| TCP 机制 | 重传、滑动窗口、流量控制、拥塞控制 | ⭐⭐⭐⭐⭐ | 可靠传输四件套 |
| 应用层 | HTTP 方法、状态码、长连接、缓存 | ⭐⭐⭐⭐⭐ | 请求响应、无状态 |
| 安全 | HTTPS、TLS 握手、证书 | ⭐⭐⭐⭐⭐ | 先认证,再加密 |
| 基础设施 | DNS、CDN、负载均衡 | ⭐⭐⭐⭐ | 找地址、就近访问、分流 |
| 会话管理 | Cookie、Session、Token、JWT | ⭐⭐⭐⭐ | 状态放哪儿 |
| 综合题 | 输入 URL 到页面显示 | ⭐⭐⭐⭐ | DNS -> TCP -> HTTP -> 渲染 |
复习建议
- 第一遍先背结论,能说出每个名词的“一句话定义”。
- 第二遍重点背区别题,比如
TCP vs UDP、HTTP vs HTTPS、Session vs JWT。 - 第三遍按场景串起来说,比如“从输入 URL 到页面显示”这种综合大题。
网络分层与基础概念
面试出现频率:⭐⭐⭐⭐
这部分常考什么
| 考点 | 常见问法 | 记忆点 |
|---|---|---|
| OSI 七层 / TCP/IP 四层 | 为什么要分层?每层做什么? | 分层是为了职责单一、便于替换 |
| IP、MAC、端口 | 它们分别标识什么? | IP 找主机,MAC 找网卡,端口找进程 |
| 封装与解封装 | 数据怎么一层层传下去? | 发送时加头,接收时拆头 |
OSI 七层模型
1 | 应用层 |
TCP/IP 四层模型
1 | 应用层 |
各层一句话记忆
- 应用层:直接给应用程序提供网络服务,比如
HTTP、DNS、FTP。 - 传输层:负责端到端传输,比如
TCP、UDP。 - 网络层:负责寻址和路由,比如
IP。 - 数据链路层:负责局域网内相邻节点通信,比如
MAC、帧。 - 物理层:负责比特流在物理介质上传输。
面试可直接背的说法
网络分层的核心价值是“复杂问题分层处理”。每一层只关心本层职责,对上提供服务,对下依赖能力,这样协议可以独立演进,也方便排错和替换。
高频易错点
HTTP属于应用层,不属于传输层。IP地址定位主机,端口定位进程。MAC地址主要用于局域网链路转发,不能替代IP做跨网络路由。
记忆口诀
1 | IP 找主机,端口找进程,MAC 找网卡; |
TCP 与 UDP
面试出现频率:⭐⭐⭐⭐⭐
高频对比表
| 对比项 | TCP | UDP |
|---|---|---|
| 是否连接 | 面向连接 | 无连接 |
| 是否可靠 | 可靠传输 | 尽力而为,不保证可靠 |
| 是否有序 | 保证有序 | 不保证有序 |
| 是否有拥塞控制 | 有 | 没有 |
| 传输速度 | 相对慢 | 相对快 |
| 首部开销 | 较大 | 较小 |
| 适用场景 | 文件传输、网页、数据库 | 音视频、直播、游戏、DNS |
面试高频问法
TCP为什么可靠?- 为什么视频会议、直播更偏向
UDP? UDP能不能实现可靠传输?
标准回答
TCP 为什么可靠
TCP 的可靠性来自以下机制:
- 序列号与确认应答
- 超时重传
- 滑动窗口
- 流量控制
- 拥塞控制
为什么 UDP 更快
- 不需要建立连接
- 没有确认重传等复杂机制
- 头部更小
- 更适合对实时性要求高、能容忍少量丢包的场景
UDP 能否实现可靠传输
可以,但可靠性要由应用层自己补,比如:
- 加序列号
- 超时重传
- ACK 确认
- 丢包重发
这也是很多实时音视频协议会做的事情。
记忆口诀
1 | TCP 求稳,UDP 求快; |
TCP 三次握手与四次挥手
面试出现频率:⭐⭐⭐⭐⭐
三次握手过程
1 | 客户端 -> 服务端:SYN,发起连接 |
为什么是三次,不是两次
核心原因:双方都要确认“自己能发、对方能收;对方能发、自己能收”。
- 第一次:服务端知道客户端能发。
- 第二次:客户端知道服务端能收、能发。
- 第三次:服务端知道客户端能收。
如果只有两次,服务端无法确认客户端是否收到了自己的确认报文。
四次挥手过程
1 | 客户端 -> 服务端:FIN,我不发了 |
为什么挥手要四次
因为 TCP 是全双工的,两个方向都要分别关闭。
- 一方发
FIN,表示“我没数据发了” - 另一方可能还有数据要传,所以先回
ACK - 等它也发完,再单独发
FIN
TIME_WAIT 为什么存在
TIME_WAIT 出现在主动关闭连接的一方,主要有两个目的:
- 保证最后一个
ACK能让对方收到。 - 让旧连接中的延迟报文在网络中自然消失,避免影响新连接。
CLOSE_WAIT 为什么过多
CLOSE_WAIT 过多通常说明:
- 对方已经发来关闭请求
- 本机也回了
ACK - 但应用程序没有及时调用
close
也就是说,往往是服务端代码没关连接。
面试延伸问题
SYN Flood 是什么
攻击者不断发送大量 SYN 请求,但不完成三次握手,导致服务端半连接队列被占满,正常用户无法建立连接。
如何应对 SYN Flood
- 增大半连接队列
- 缩短超时时间
- 开启
SYN Cookie - 接入防火墙或流量清洗
记忆口诀
1 | 建连三次:发起、确认、再确认; |
TCP 可靠传输机制
面试出现频率:⭐⭐⭐⭐⭐
可靠传输四件套
| 机制 | 作用 | 一句话记忆 |
|---|---|---|
| 序列号 + ACK | 保证有序、确认收到 | 发一段,确认一段 |
| 超时重传 | 丢了就重发 | 超时没回就再来一次 |
| 滑动窗口 | 提高吞吐量 | 不必每发一条都停下来等 |
| 流量/拥塞控制 | 防止把接收方和网络打爆 | 一个看对方,一个看网络 |
序列号与确认应答
- 每个字节都有序列号。
- 接收方通过
ACK告诉发送方“我下一个想收到哪个字节”。 - 如果某段数据没收到,后续即使到了,也可能要等重传后才能按序交付。
超时重传
- 发送方发出数据后会启动定时器。
- 在超时时间内没收到确认,就触发重传。
- 这是
TCP可靠性的基础机制之一。
滑动窗口
为什么需要滑动窗口
如果每发一个包都停下来等确认,链路利用率很低。
滑动窗口允许发送方连续发送多个报文段,再统一接收确认。
核心作用
- 减少等待时间
- 提高吞吐量
- 配合确认机制实现高效可靠传输
流量控制
流量控制关注的是:接收方来不来得及处理。
- 接收方会通过窗口大小告诉发送方“我还能收多少”
- 发送方不能发得太快,否则会把接收方缓冲区撑爆
拥塞控制
拥塞控制关注的是:网络是否已经拥堵。
常见算法关键词:
- 慢启动
- 拥塞避免
- 快重传
- 快恢复
流量控制 vs 拥塞控制
| 对比项 | 流量控制 | 拥塞控制 |
|---|---|---|
| 关注对象 | 接收方 | 网络整体 |
| 目的 | 别把对方撑爆 | 别把网络压垮 |
| 依据 | 接收窗口 | 拥塞窗口 |
面试话术
流量控制解决的是“对方处理不过来”,拥塞控制解决的是“网络吃不消”。一个看接收端能力,一个看网络承载能力。
记忆口诀
1 | 可靠靠四件:编号、确认、重传、窗口; |
HTTP 高频考点
面试出现频率:⭐⭐⭐⭐⭐
高频知识地图
| 考点 | 常见问法 | 记忆点 |
|---|---|---|
| HTTP 特点 | HTTP 是什么? | 应用层协议、请求响应、无状态 |
| GET vs POST | 区别是什么? | 语义不同,不是“一个安全一个不安全” |
| 状态码 | 301/302/304/401/403/404/500 | 按类别记 |
| 长连接 | Keep-Alive 有什么用? | 减少重复建连 |
| 缓存 | 强缓存和协商缓存 | 先看本地,再问服务端 |
| HTTP 版本 | 1.0 / 1.1 / 2 / 3 区别 | 多路复用、头部压缩、QUIC |
HTTP 的核心特点
- 属于应用层协议
- 基于请求-响应模型
- 本身是无状态的
- 常见于浏览器和服务器之间通信
GET 和 POST 的区别
| 对比项 | GET | POST |
|---|---|---|
| 语义 | 获取资源 | 提交资源 |
| 幂等性 | 通常幂等 | 通常不幂等 |
| 参数位置 | 常放在 URL | 常放在请求体 |
| 缓存 | 更容易被缓存 | 默认不强调缓存 |
面试时要避免的错误表达
- 不要简单说
GET没有请求体,实际规范上不是绝对禁止。 - 不要简单说
POST比GET安全,本质上是否安全主要看是不是HTTPS。 - 最推荐的说法是:两者最核心区别在于语义和幂等性设计。
常见状态码
| 状态码 | 含义 | 记忆点 |
|---|---|---|
| 200 | 请求成功 | 正常返回 |
| 301 | 永久重定向 | 旧地址永久搬家 |
| 302 | 临时重定向 | 临时跳转 |
| 304 | 资源未修改 | 告诉浏览器继续用缓存 |
| 400 | 请求有误 | 参数问题 |
| 401 | 未认证 | 你还没登录 |
| 403 | 已认证但没权限 | 你不能看 |
| 404 | 资源不存在 | 地址错了 |
| 500 | 服务端内部错误 | 后端异常 |
| 502 | 网关错误 | 上游服务异常 |
| 503 | 服务不可用 | 服务器忙或维护 |
| 504 | 网关超时 | 上游超时 |
HTTP 缓存
强缓存
浏览器不发请求,直接用本地缓存。
常见响应头:
ExpiresCache-Control
其中 Cache-Control: max-age=xxx 更常用。
协商缓存
浏览器会发请求问服务端“资源变了吗?”
常见字段:
Last-Modified/If-Modified-SinceETag/If-None-Match
如果资源没变,服务端返回 304 Not Modified。
HTTP1.0、1.1、2、3 区别
| 版本 | 核心特性 | 记忆点 |
|---|---|---|
| HTTP/1.0 | 默认短连接 | 用一次连一次 |
| HTTP/1.1 | 默认长连接,支持管线化 | 减少重复建连 |
| HTTP/2 | 二进制分帧、多路复用、头部压缩、服务端推送 | 重点是多路复用 |
| HTTP/3 | 基于 QUIC,底层使用 UDP | 解决队头阻塞更彻底 |
什么是队头阻塞
可以这样回答:
HTTP/1.1下,一个连接中前面的请求卡住,会影响后面的请求。HTTP/2虽然做了多路复用,但底层还是TCP,一旦丢包仍可能受传输层队头阻塞影响。HTTP/3基于QUIC,在这方面改进更明显。
Keep-Alive 的作用
- 复用同一条连接
- 减少频繁三次握手
- 降低时延
- 提高吞吐
记忆口诀
1 | HTTP 无状态,请求加响应; |
HTTPS 与 TLS 握手
面试出现频率:⭐⭐⭐⭐⭐
HTTPS 是什么
HTTPS = HTTP + TLS/SSL
本质上是在 HTTP 和 TCP 之间加了一层安全协议,用来解决:
- 数据被窃听
- 数据被篡改
- 身份无法确认
HTTPS 解决了什么问题
| 风险 | HTTPS 如何解决 |
|---|---|
| 窃听 | 加密传输 |
| 篡改 | 完整性校验 |
| 冒充 | 数字证书认证 |
TLS 握手可以怎么讲
面试不要求把每个报文细节背到字节级,但要能说清主流程:
- 客户端发起
ClientHello,告诉服务端支持哪些加密套件。 - 服务端返回
ServerHello和数字证书。 - 客户端验证证书是否合法。
- 双方协商出会话密钥。
- 后续应用数据使用会话密钥进行对称加密传输。
为什么 HTTPS 既有非对称加密,又有对称加密
- 非对称加密适合做身份认证和密钥交换
- 对称加密计算更快,适合传输大量数据
所以常见回答是:
HTTPS 用非对称加密解决“你是谁”和“密钥怎么安全给你”,再用对称加密解决“后续数据怎么高效传”。
证书的作用
数字证书的核心作用是:证明服务端身份。
客户端会验证:
- 证书是否过期
- 证书是否由可信 CA 签发
- 域名是否匹配
HTTP 和 HTTPS 区别
| 对比项 | HTTP | HTTPS |
|---|---|---|
| 默认端口 | 80 | 443 |
| 是否加密 | 否 | 是 |
| 是否校验身份 | 否 | 是 |
| 性能开销 | 更低 | 略高 |
| 安全性 | 较低 | 更高 |
记忆口诀
1 | HTTP 裸奔,HTTPS 穿盔甲; |
DNS、CDN 与负载均衡
面试出现频率:⭐⭐⭐⭐
DNS
DNS 是什么
DNS 的作用是把域名解析成 IP 地址。
DNS 查询过程
典型回答顺序:
- 浏览器缓存
- 操作系统缓存
- 本地域名服务器
- 根域名服务器
- 顶级域名服务器
- 权威域名服务器
CDN
CDN 是什么
CDN 是内容分发网络,核心作用是:
- 就近访问
- 降低时延
- 减轻源站压力
- 提高可用性
CDN 为什么更快
- 用户访问的是离自己更近的边缘节点
- 热门静态资源提前缓存到边缘
- 减少跨地域、跨运营商带来的延迟
负载均衡
负载均衡是做什么的
把请求分发到多台服务器,提高:
- 吞吐量
- 可用性
- 扩展性
常见负载均衡策略
- 轮询
- 加权轮询
- 最少连接
- 一致性哈希
- 按 IP Hash
DNS 与 CDN、负载均衡的关系
可以这样串起来说:
用户先通过 DNS 找到服务地址,DNS 可能直接把用户调度到合适的 CDN 节点或负载均衡入口,再由后者把流量分发到具体机器。
记忆口诀
1 | DNS 负责找地址,CDN 负责就近快,负载均衡负责把流量分散开。 |
Cookie、Session、Token、JWT
面试出现频率:⭐⭐⭐⭐
为什么会考这块
因为 HTTP 是无状态协议,但业务登录态需要“记住用户是谁”,所以一定要有会话管理方案。
核心对比表
| 概念 | 存储位置 | 核心作用 | 记忆点 |
|---|---|---|---|
| Cookie | 浏览器 | 存少量状态,自动随请求发送 | 放客户端 |
| Session | 服务端 | 保存用户会话数据 | 状态放服务端 |
| Token | 客户端保存 | 每次请求携带做认证 | 无状态认证常见 |
| JWT | Token 的一种 | 自包含用户信息的令牌 | Header + Payload + Signature |
Cookie
- 存在浏览器端
- 会随着同域请求自动发送到服务端
- 常用来保存
session id
Session
- 数据保存在服务端
- 浏览器只保存一个
session id - 服务端通过
session id找到对应会话数据
Token
- 服务端登录成功后签发一个令牌给客户端
- 客户端后续请求主动携带,比如放在
Authorization头里 - 服务端校验 token 后识别用户身份
JWT
JWT 一般由三部分组成:
1 | Header.Payload.Signature |
特点:
- 无状态
- 适合分布式系统
- 服务端不一定需要保存会话
但也有缺点:
- 签发后不方便主动失效
- 载荷不宜放敏感信息
- token 泄露风险需要特别注意
Session 和 JWT 怎么选
Session 适合
- 服务端集中管理登录态
- 需要强控制下线、踢人、失效
- 单体或有统一会话存储系统
JWT 适合
- 分布式系统
- 微服务之间做统一认证
- 希望服务端尽量无状态
高频面试问法
- Cookie 和 Session 区别是什么?
- Session 和 JWT 区别是什么?
- JWT 为什么适合分布式?
标准说法
Cookie 是浏览器侧存储机制,Session 是服务端会话机制;JWT 属于 Token 方案的一种,特点是无状态、自包含,分布式系统里更容易横向扩展。
记忆口诀
1 | Cookie 放浏览器,Session 放服务端; |
从输入 URL 到页面显示
面试出现频率:⭐⭐⭐⭐
这是最经典的综合题
建议按下面顺序回答:
- 浏览器先解析
URL - 查询缓存和
DNS,把域名解析成IP - 浏览器与服务器建立
TCP连接 - 如果是
HTTPS,还要进行TLS握手 - 浏览器发送
HTTP请求 - 服务端处理请求并返回
HTTP响应 - 浏览器解析 HTML,构建 DOM 树
- 解析 CSS,构建 CSSOM
- 合并形成渲染树,进行布局和绘制
- 遇到 JS 可能执行并影响页面结构
- 页面最终显示出来
- 连接根据情况复用或断开
这个题的高分回答技巧
- 一定要有“
DNS -> TCP -> HTTPS -> HTTP -> 渲染”这条主线。 - 如果是后端面试,可以多补一句“请求可能先经过 CDN、Nginx、负载均衡,再到应用服务器”。
- 如果是前端面试,可以多补“重排重绘、资源阻塞、缓存策略”。
一句话记忆
1 | 先找路,再建连,再加密,再请求,再渲染。 |
高频场景题与面试话术
1. 为什么 TCP 建立连接需要三次握手
三次握手的核心是让通信双方都确认收发能力正常。两次只能证明一部分,三次才能让双方都确认连接建立是可靠的。
2. 为什么断开连接需要四次挥手
因为 TCP 是全双工,双方都要分别关闭自己的发送通道,所以通常需要四次挥手。
3. 为什么 HTTPS 比 HTTP 安全
HTTPS 通过证书认证、防篡改校验和加密传输,解决了 HTTP 明文传输容易被窃听、篡改和伪装的问题。
4. 为什么会有 TIME_WAIT
主要是保证最后一个 ACK 能送达,以及让旧连接中的延迟报文自然消失,防止影响后续新连接。
5. 为什么 UDP 适合音视频
音视频更关心实时性,少量丢包通常比高延迟更容易接受,而 UDP 没有复杂的连接和重传机制,所以时延更低。
6. HTTP 是无状态的,登录态怎么实现
通常会借助 Cookie + Session,或者使用 Token / JWT 方案,把用户身份和会话状态交给额外机制维护。
7. 强缓存和协商缓存区别
强缓存命中时浏览器不发请求,直接用本地资源;协商缓存会发请求和服务端确认资源是否变化,没变就返回 304。
8. Session 和 JWT 的核心区别
Session 强调状态保存在服务端,JWT 强调状态由令牌自包含,更适合分布式,但主动失效控制更麻烦。
考前速背口诀
1. 网络分层
1 | 应用管业务,传输管端到端,网络管路由,链路管相邻,物理传比特。 |
2. 地址定位
1 | IP 找主机,端口找进程,MAC 找网卡。 |
3. TCP vs UDP
1 | TCP 求稳,UDP 求快; |
4. 三次握手四次挥手
1 | 建连三次保可靠,断连四次因双工; |
5. TCP 可靠性
1 | 编号确认保有序,超时重传补丢包,滑窗提升吞吐量,流控拥塞防打爆。 |
6. HTTP / HTTPS
1 | HTTP 无状态,HTTPS 更安全; |
7. 缓存
1 | 强缓存不发请求,协商缓存回来问一嘴; |
8. 登录态
1 | Cookie 在客户端,Session 在服务端; |
9. 综合题
1 | 输入 URL:先 DNS,再 TCP,再 TLS,再 HTTP,最后浏览器渲染。 |
如果你是为了冲刺面试,建议把这篇内容分成三轮背诵:
- 第一轮背定义:每个名词一句话说清楚。
- 第二轮背区别:
TCP/UDP、HTTP/HTTPS、Session/JWT。 - 第三轮背流程:
三次握手、四次挥手、输入 URL 到页面显示。