覆盖互联网大厂程序员面试中常见的计算机网络高频知识点,按模块整理出核心考点、典型问法、易错点和方便背诵的记忆口诀。


目录


高频考点总览

分类 高频考点 面试频率 记忆关键词
分层模型 OSI、TCP/IP、各层职责 ⭐⭐⭐⭐ 分层、解耦、逐层封装
传输层 TCP vs UDP ⭐⭐⭐⭐⭐ 可靠/无连接/快
TCP 连接管理 三次握手、四次挥手、TIME_WAIT ⭐⭐⭐⭐⭐ 建连三次、断连四次
TCP 机制 重传、滑动窗口、流量控制、拥塞控制 ⭐⭐⭐⭐⭐ 可靠传输四件套
应用层 HTTP 方法、状态码、长连接、缓存 ⭐⭐⭐⭐⭐ 请求响应、无状态
安全 HTTPS、TLS 握手、证书 ⭐⭐⭐⭐⭐ 先认证,再加密
基础设施 DNS、CDN、负载均衡 ⭐⭐⭐⭐ 找地址、就近访问、分流
会话管理 Cookie、Session、Token、JWT ⭐⭐⭐⭐ 状态放哪儿
综合题 输入 URL 到页面显示 ⭐⭐⭐⭐ DNS -> TCP -> HTTP -> 渲染

复习建议

  1. 第一遍先背结论,能说出每个名词的“一句话定义”。
  2. 第二遍重点背区别题,比如 TCP vs UDPHTTP vs HTTPSSession vs JWT
  3. 第三遍按场景串起来说,比如“从输入 URL 到页面显示”这种综合大题。

网络分层与基础概念

面试出现频率:⭐⭐⭐⭐

这部分常考什么

考点 常见问法 记忆点
OSI 七层 / TCP/IP 四层 为什么要分层?每层做什么? 分层是为了职责单一、便于替换
IP、MAC、端口 它们分别标识什么? IP 找主机,MAC 找网卡,端口找进程
封装与解封装 数据怎么一层层传下去? 发送时加头,接收时拆头

OSI 七层模型

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

TCP/IP 四层模型

1
2
3
4
应用层
传输层
网络层
网络接口层

各层一句话记忆

  • 应用层:直接给应用程序提供网络服务,比如 HTTPDNSFTP
  • 传输层:负责端到端传输,比如 TCPUDP
  • 网络层:负责寻址和路由,比如 IP
  • 数据链路层:负责局域网内相邻节点通信,比如 MAC、帧。
  • 物理层:负责比特流在物理介质上传输。

面试可直接背的说法

网络分层的核心价值是“复杂问题分层处理”。每一层只关心本层职责,对上提供服务,对下依赖能力,这样协议可以独立演进,也方便排错和替换。

高频易错点

  • HTTP 属于应用层,不属于传输层。
  • IP 地址定位主机,端口定位进程。
  • MAC 地址主要用于局域网链路转发,不能替代 IP 做跨网络路由。

记忆口诀

1
2
IP 找主机,端口找进程,MAC 找网卡;
发送层层加头,接收层层拆头。

TCP 与 UDP

面试出现频率:⭐⭐⭐⭐⭐

高频对比表

对比项 TCP UDP
是否连接 面向连接 无连接
是否可靠 可靠传输 尽力而为,不保证可靠
是否有序 保证有序 不保证有序
是否有拥塞控制 没有
传输速度 相对慢 相对快
首部开销 较大 较小
适用场景 文件传输、网页、数据库 音视频、直播、游戏、DNS

面试高频问法

  1. TCP 为什么可靠?
  2. 为什么视频会议、直播更偏向 UDP
  3. UDP 能不能实现可靠传输?

标准回答

TCP 为什么可靠

TCP 的可靠性来自以下机制:

  • 序列号与确认应答
  • 超时重传
  • 滑动窗口
  • 流量控制
  • 拥塞控制

为什么 UDP 更快

  • 不需要建立连接
  • 没有确认重传等复杂机制
  • 头部更小
  • 更适合对实时性要求高、能容忍少量丢包的场景

UDP 能否实现可靠传输

可以,但可靠性要由应用层自己补,比如:

  • 加序列号
  • 超时重传
  • ACK 确认
  • 丢包重发

这也是很多实时音视频协议会做的事情。

记忆口诀

1
2
TCP 求稳,UDP 求快;
网页下载用 TCP,音视频直播偏 UDP。

TCP 三次握手与四次挥手

面试出现频率:⭐⭐⭐⭐⭐

三次握手过程

1
2
3
客户端 -> 服务端:SYN,发起连接
服务端 -> 客户端:SYN + ACK,同意连接
客户端 -> 服务端:ACK,连接建立

为什么是三次,不是两次

核心原因:双方都要确认“自己能发、对方能收;对方能发、自己能收”

  • 第一次:服务端知道客户端能发。
  • 第二次:客户端知道服务端能收、能发。
  • 第三次:服务端知道客户端能收。

如果只有两次,服务端无法确认客户端是否收到了自己的确认报文。

四次挥手过程

1
2
3
4
客户端 -> 服务端:FIN,我不发了
服务端 -> 客户端:ACK,知道了
服务端 -> 客户端:FIN,我也不发了
客户端 -> 服务端:ACK,知道了,连接关闭

为什么挥手要四次

因为 TCP 是全双工的,两个方向都要分别关闭。

  • 一方发 FIN,表示“我没数据发了”
  • 另一方可能还有数据要传,所以先回 ACK
  • 等它也发完,再单独发 FIN

TIME_WAIT 为什么存在

TIME_WAIT 出现在主动关闭连接的一方,主要有两个目的:

  1. 保证最后一个 ACK 能让对方收到。
  2. 让旧连接中的延迟报文在网络中自然消失,避免影响新连接。

CLOSE_WAIT 为什么过多

CLOSE_WAIT 过多通常说明:

  • 对方已经发来关闭请求
  • 本机也回了 ACK
  • 但应用程序没有及时调用 close

也就是说,往往是服务端代码没关连接

面试延伸问题

SYN Flood 是什么

攻击者不断发送大量 SYN 请求,但不完成三次握手,导致服务端半连接队列被占满,正常用户无法建立连接。

如何应对 SYN Flood

  • 增大半连接队列
  • 缩短超时时间
  • 开启 SYN Cookie
  • 接入防火墙或流量清洗

记忆口诀

1
2
3
建连三次:发起、确认、再确认;
断连四次:我关一次,你确认一次,你再关一次,我再确认一次;
TIME_WAIT 防丢 ACK,也防旧报文。

TCP 可靠传输机制

面试出现频率:⭐⭐⭐⭐⭐

可靠传输四件套

机制 作用 一句话记忆
序列号 + ACK 保证有序、确认收到 发一段,确认一段
超时重传 丢了就重发 超时没回就再来一次
滑动窗口 提高吞吐量 不必每发一条都停下来等
流量/拥塞控制 防止把接收方和网络打爆 一个看对方,一个看网络

序列号与确认应答

  • 每个字节都有序列号。
  • 接收方通过 ACK 告诉发送方“我下一个想收到哪个字节”。
  • 如果某段数据没收到,后续即使到了,也可能要等重传后才能按序交付。

超时重传

  • 发送方发出数据后会启动定时器。
  • 在超时时间内没收到确认,就触发重传。
  • 这是 TCP 可靠性的基础机制之一。

滑动窗口

为什么需要滑动窗口

如果每发一个包都停下来等确认,链路利用率很低。
滑动窗口允许发送方连续发送多个报文段,再统一接收确认。

核心作用

  • 减少等待时间
  • 提高吞吐量
  • 配合确认机制实现高效可靠传输

流量控制

流量控制关注的是:接收方来不来得及处理

  • 接收方会通过窗口大小告诉发送方“我还能收多少”
  • 发送方不能发得太快,否则会把接收方缓冲区撑爆

拥塞控制

拥塞控制关注的是:网络是否已经拥堵

常见算法关键词:

  • 慢启动
  • 拥塞避免
  • 快重传
  • 快恢复

流量控制 vs 拥塞控制

对比项 流量控制 拥塞控制
关注对象 接收方 网络整体
目的 别把对方撑爆 别把网络压垮
依据 接收窗口 拥塞窗口

面试话术

流量控制解决的是“对方处理不过来”,拥塞控制解决的是“网络吃不消”。一个看接收端能力,一个看网络承载能力。

记忆口诀

1
2
可靠靠四件:编号、确认、重传、窗口;
流控看对方,拥塞看网络。

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 没有请求体,实际规范上不是绝对禁止。
  • 不要简单说 POSTGET 安全,本质上是否安全主要看是不是 HTTPS
  • 最推荐的说法是:两者最核心区别在于语义和幂等性设计

常见状态码

状态码 含义 记忆点
200 请求成功 正常返回
301 永久重定向 旧地址永久搬家
302 临时重定向 临时跳转
304 资源未修改 告诉浏览器继续用缓存
400 请求有误 参数问题
401 未认证 你还没登录
403 已认证但没权限 你不能看
404 资源不存在 地址错了
500 服务端内部错误 后端异常
502 网关错误 上游服务异常
503 服务不可用 服务器忙或维护
504 网关超时 上游超时

HTTP 缓存

强缓存

浏览器不发请求,直接用本地缓存。

常见响应头:

  • Expires
  • Cache-Control

其中 Cache-Control: max-age=xxx 更常用。

协商缓存

浏览器会发请求问服务端“资源变了吗?”

常见字段:

  • Last-Modified / If-Modified-Since
  • ETag / 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
2
3
HTTP 无状态,请求加响应;
1.0 短,1.1 长,2 多路,3 上 QUIC;
缓存先看本地,再问服务端。

HTTPS 与 TLS 握手

面试出现频率:⭐⭐⭐⭐⭐

HTTPS 是什么

HTTPS = HTTP + TLS/SSL

本质上是在 HTTPTCP 之间加了一层安全协议,用来解决:

  • 数据被窃听
  • 数据被篡改
  • 身份无法确认

HTTPS 解决了什么问题

风险 HTTPS 如何解决
窃听 加密传输
篡改 完整性校验
冒充 数字证书认证

TLS 握手可以怎么讲

面试不要求把每个报文细节背到字节级,但要能说清主流程:

  1. 客户端发起 ClientHello,告诉服务端支持哪些加密套件。
  2. 服务端返回 ServerHello 和数字证书。
  3. 客户端验证证书是否合法。
  4. 双方协商出会话密钥。
  5. 后续应用数据使用会话密钥进行对称加密传输。

为什么 HTTPS 既有非对称加密,又有对称加密

  • 非对称加密适合做身份认证和密钥交换
  • 对称加密计算更快,适合传输大量数据

所以常见回答是:

HTTPS 用非对称加密解决“你是谁”和“密钥怎么安全给你”,再用对称加密解决“后续数据怎么高效传”。

证书的作用

数字证书的核心作用是:证明服务端身份

客户端会验证:

  • 证书是否过期
  • 证书是否由可信 CA 签发
  • 域名是否匹配

HTTP 和 HTTPS 区别

对比项 HTTP HTTPS
默认端口 80 443
是否加密
是否校验身份
性能开销 更低 略高
安全性 较低 更高

记忆口诀

1
2
HTTP 裸奔,HTTPS 穿盔甲;
先验明正身,再协商密钥,再加密通信。

DNS、CDN 与负载均衡

面试出现频率:⭐⭐⭐⭐

DNS

DNS 是什么

DNS 的作用是把域名解析成 IP 地址。

DNS 查询过程

典型回答顺序:

  1. 浏览器缓存
  2. 操作系统缓存
  3. 本地域名服务器
  4. 根域名服务器
  5. 顶级域名服务器
  6. 权威域名服务器

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
  • 存在浏览器端
  • 会随着同域请求自动发送到服务端
  • 常用来保存 session id

Session

  • 数据保存在服务端
  • 浏览器只保存一个 session id
  • 服务端通过 session id 找到对应会话数据

Token

  • 服务端登录成功后签发一个令牌给客户端
  • 客户端后续请求主动携带,比如放在 Authorization 头里
  • 服务端校验 token 后识别用户身份

JWT

JWT 一般由三部分组成:

1
Header.Payload.Signature

特点:

  • 无状态
  • 适合分布式系统
  • 服务端不一定需要保存会话

但也有缺点:

  • 签发后不方便主动失效
  • 载荷不宜放敏感信息
  • token 泄露风险需要特别注意

Session 和 JWT 怎么选

Session 适合

  • 服务端集中管理登录态
  • 需要强控制下线、踢人、失效
  • 单体或有统一会话存储系统

JWT 适合

  • 分布式系统
  • 微服务之间做统一认证
  • 希望服务端尽量无状态

高频面试问法

  1. Cookie 和 Session 区别是什么?
  2. Session 和 JWT 区别是什么?
  3. JWT 为什么适合分布式?

标准说法

Cookie 是浏览器侧存储机制,Session 是服务端会话机制;JWT 属于 Token 方案的一种,特点是无状态、自包含,分布式系统里更容易横向扩展。

记忆口诀

1
2
Cookie 放浏览器,Session 放服务端;
Token 靠前端带,JWT 自带信息但不好强制失效。

从输入 URL 到页面显示

面试出现频率:⭐⭐⭐⭐

这是最经典的综合题

建议按下面顺序回答:

  1. 浏览器先解析 URL
  2. 查询缓存和 DNS,把域名解析成 IP
  3. 浏览器与服务器建立 TCP 连接
  4. 如果是 HTTPS,还要进行 TLS 握手
  5. 浏览器发送 HTTP 请求
  6. 服务端处理请求并返回 HTTP 响应
  7. 浏览器解析 HTML,构建 DOM 树
  8. 解析 CSS,构建 CSSOM
  9. 合并形成渲染树,进行布局和绘制
  10. 遇到 JS 可能执行并影响页面结构
  11. 页面最终显示出来
  12. 连接根据情况复用或断开

这个题的高分回答技巧

  • 一定要有“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
2
TCP 求稳,UDP 求快;
下载网页用 TCP,直播通话偏 UDP。

4. 三次握手四次挥手

1
2
建连三次保可靠,断连四次因双工;
TIME_WAIT 防旧包,CLOSE_WAIT 多半没 close。

5. TCP 可靠性

1
编号确认保有序,超时重传补丢包,滑窗提升吞吐量,流控拥塞防打爆。

6. HTTP / HTTPS

1
2
HTTP 无状态,HTTPS 更安全;
先验身份,再协商钥匙,再加密传输。

7. 缓存

1
2
强缓存不发请求,协商缓存回来问一嘴;
没变就是 304。

8. 登录态

1
2
Cookie 在客户端,Session 在服务端;
Token 靠请求带,JWT 自包含。

9. 综合题

1
输入 URL:先 DNS,再 TCP,再 TLS,再 HTTP,最后浏览器渲染。

如果你是为了冲刺面试,建议把这篇内容分成三轮背诵:

  1. 第一轮背定义:每个名词一句话说清楚。
  2. 第二轮背区别:TCP/UDPHTTP/HTTPSSession/JWT
  3. 第三轮背流程:三次握手四次挥手输入 URL 到页面显示