很多人复习计算机网络都有一个共同体验:书看完了,MAC 地址、三次握手、子网掩码这些名词好像都认识,但别人一问"从浏览器输入网址到页面显示出来,中间经历了什么",又讲不完整。这篇总结不是我临时翻书整理的,而是这些年为了期末、408、面试还有平时排查网络问题,反复沉淀下来的一套核心知识框架。它不追求把教材每句话都抄进来,而是把最常考、最常用、最容易混淆的考点串起来,适合期末复习、考研 408、软件测试面试这些场景,也希望帮你建立一张能随时调用的知识网。
我习惯先把整体框架搭出来,再往里面填协议细节,最后用一套问题清单来检验自己。下面按这个思路展开。
1. 先搭框架:分层模型与数据封装是后面所有内容的地基
1.1 OSI 七层和 TCP/IP 四层/五层:不要死背,要理解设计逻辑
教材里最常见的就是 OSI 七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。很多学生背顺序背得滚瓜烂熟,但真问他"为什么网络层要存在"就答不上来。我的建议是,不要把分层当成要背的七条,而是当成一封快递信件的处理流程:应用层是写信的人,传输层是决定用普通快递还是航空件,网络层是快递分拣中心在规划运输路线,数据链路层是同一辆货车在相邻两个站点之间交接,物理层是高速公路本身。
实际生产中用的 TCP/IP 模型更贴近现实,通常要么是四层(应用层、传输层、网络层、网络接口层),要么按教材拆成五层(应用层、传输层、网络层、数据链路层、物理层)。不管是哪个分层法,你只需要抓住一个核心逻辑:每一层只解决自己那一层的问题,同时为上层提供接口,和下层的具体实现解耦。应用层不用关心底层是光纤还是 WiFi,网络层也不用关心上层是 HTTP 还是 FTP,这就是分层带来的好处。
OSI 里的会话层和表示层在 TCP/IP 里没有单独成层,是因为实际工程中这两层职责被应用层自己消化了,比如 TLS 握手里协商加密参数的工作,严格说接近表示层,但我们习惯把它看作应用层的一部分。复习时不要纠结于分了多少层,而要能说清"每一层解决什么问题、典型协议有哪些"。
1.2 数据封装与解封装:从 HTTP 到比特流的旅程
一次完整的通信,数据每往下一层走,就会多一个头部(有些协议还会加尾部)。以访问一个网页为例:应用层生成 HTTP 请求报文,传输层把它装进 TCP 报文段,加上了源端口、目的端口和序号;网络层把 TCP 报文段放进 IP 数据报,加上源 IP、目的 IP;数据链路层再把 IP 数据报放进帧里,加上 MAC 地址和帧校验序列;最后物理层把帧变成比特流发送到线缆或空气中。
这个"每层加头"的过程叫封装。接收方反过来,每往上一层就剥掉一个头部,叫解封装。很多面试题会问:"一个 1500 字节的 IP 分片,在数据链路层要传输时,帧实际多大?"标准以太网帧的最大传输单元 MTU 是 1500 字节,指的是 IP 数据报的负载,不算以太网帧头(14 字节)和帧尾(4 字节 CRC)。所以加上 MAC 头、类型字段和 CRC 后,整个帧通常为 1518 字节。这些细节就是八股题的常见爆点,理解封装过程后就不会记混。
1.3 核心性能指标:带宽、时延、吞吐量、RTT 为什么总被一起考
网络性能指标看起来简单,但很多人没分清:带宽是链路能承载的最大数据传输速率,单位是 bit/s;吞吐量是实际传输的速率;时延包括发送时延、传播时延、处理时延和排队时延。有一个经典误区是"把数据放到网线上的一瞬间就能到对端吗",答案是不行,因为每段链路都有传播时延,光在光纤里的速度大约是真空中的三分之二,所以 1000 公里光纤的单向传播时延就有几毫秒。
RTT(往返时间)指从发送数据到收到确认总共的时间,它不仅包含传播时延,还包含处理、排队时间。在 TCP 里计算超时重传时间时,RTT 是非常重要的依据。期末和面试都很喜欢把"带宽大"和"时延低"并列,你要能解释哪怕带宽是 100Gbps,一次长距离传输的时延依然受物理距离限制,二者不是一回事。把这个观念理清了,后面的拥塞控制和 HTTP/2 多路复用都能更好理解。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 物理层与数据链路层:从比特到帧,最容易忽视的得分区
2.1 物理层的本质:用什么信号、怎么编码、怎么对抗噪声
物理层是整个网络的"地基",也是最容易被复习跳过的一层。它关注的问题很朴素:用电路上的电压变化表示 0 和 1,还是用光信号的有无?信号在铜线里衰减怎么办?无线信号怎么调制?典型考点包括奈氏准则和香农公式。奈氏准则说的是在无噪声信道下,码元传输速率有一个上限,超过后码间串扰会严重到无法识别;香农公式则给出了在有噪声信道下的信道容量极限,和信噪比 S/N 直接相关。
物理层的另一个常见考点是编码方式,例如不归零编码、曼彻斯特编码。曼彻斯特编码在每个比特中间都有一
