计算机网络期末复习核心考点:从物理层到应用层一网打尽
1. 复习思路与整体框架这篇笔记我拖到第十篇才肯动笔写不是因为懒是计算机网络这门课的知识点实在串得厉害。前面发的那几篇笔记都是从单一章节切入但复习到后半段你会发现真正难的不是某个协议本身而是协议之间的协作关系——TCP怎么感知拥塞、IP层怎么选路、应用层怎么打架这些全是链路。先说清楚这篇笔记的定位。它不是教材的复读机也不是PPT的搬运工而是我刷完历年题、啃完实验报告之后按“考点出现频率理解难度”重新梳理过的一份硬核提纲。简单说如果你只想考前三天突击看这篇就够了如果你想把网络这课吃透这篇能帮你把散装知识点焊成一张网。我当时的复习节奏是三轮第一轮通读教材和PPT标记出所有“我看不懂但好像要考”的地方第二轮集中攻克计算题和协议状态机这一轮最痛苦但收获最大第三轮纯刷题重点看简答题和综合题的答题套路。这篇笔记就是第二轮结束后的产物里面记录了大量我踩过的坑和总结出来的解题模板。适合谁看呢一是期末考前想快速建立知识框架的同学二是实验课做完了一头雾水、想弄明白自己到底在操作什么的同学三是准备考研复试、需要系统梳理计算机网络核心概念的考生。如果你是这三类人之一往下读不会亏。2. 物理层与数据链路层的核心考点2.1 物理层的计算题套路从奈奎斯特到香农一通百通物理层这一章说穿了就是两个公式反复用奈奎斯特采样定理和香农公式。很多人一看到公式就头大但其实这两条东西在考题里几乎是送分题关键是搞清楚它们各自管什么。奈奎斯特定理说的是无噪声情况下的极限数据速率R 2W × log2(V)其中W是带宽V是信号电平的个数。它想告诉我们的是就算线路再好你每秒能采多少个点、每个点能表示几比特信息是有物理上限的。香农公式则是在有噪声的情况下计算信道容量C W × log2(1 S/N)这里的S/N是信噪比通常给的是分贝值需要先换算S/N 10^(dB/10)。我见过最经典的坑是题目给了一个信噪比为30dB的信道带宽3kHz问最大数据传输速率是多少。很多同学直接把30当S/N代进去算算出来一个离谱的小数。正确做法是先把30dB换算成S/N 1000再代进香农公式C 3000 × log2(1001) ≈ 3000 × 10 ≈ 30kbps。这个坑我踩过一次之后凡是看见dB第一反应就是先换算绝不含糊。还有个常考的点是奈奎斯特和香农的对比题。比如题目说“带宽4kHz信噪比40dB若用8种电平编码实际能达到的最大速率是多少”这其实是在考你会不会先算香农上限再算奈奎斯特速率然后取较小值。步骤分解一下信噪比换算40dB 10^4代入香农公式C 4000 × log2(10001) ≈ 4000 × 13.3 ≈ 53.2kbps奈奎斯特速率R 2 × 4000 × log2(8) 8000 × 3 24kbps取较小值24kbps这类题的关键就一句话香农是理论上限奈奎斯特是实际可达上限两者取交集才是答案。把这句话记牢物理层的计算题基本通杀。2.2 数据链路层的封装与透明传输数据链路层在复习时最容易让人烦因为它内容又多又碎。但如果你把它理解成“在一条可能出错的物理链路上确保帧能正确送达的协议层”思路就清爽多了。先看帧封装。以太网帧的格式必须背清楚前导码8字节不算在帧长度里、目的MAC地址6字节、源MAC地址6字节、类型字段2字节、数据部分46到1500字节、帧校验FCS4字节。这里最常考的是最小帧长与MTU的关系为什么以太网帧最短64字节这跟CSMA/CD的冲突检测机制绑定在一起。最短帧长 2 × 信号在链路上往返的传播时延 × 数据传输速率。十年前的老题喜欢让你算这个现在改成了简答“说明最小帧长与冲突检测的关系”。透明传输这个点很多教材讲得云里雾里。说白了就是当数据部分出现了跟帧定界符一模一样的比特组合你怎么区分这是数据还是边界PPP协议用的方法是字节填充法在数据里遇到0x7E就写成0x7D 0x5E。HDLC用的是比特填充法看到连续五个1就自动插入一个0。这个点考得不多但有一年真题直接出了一个“请解释PPP协议如何处理透明传输问题”值得背一背。2.3 CRC校验不背多项式但要会算循环冗余校验CRC是数据链路层计算题里的保留项目。考试一般不让你背生成多项式但会给你一个比如G(x) x^3 x 1让你对某个数据帧计算CRC校验码。计算流程其实不复杂记住四步先在原始数据后面补生成多项式最高次的位数个0这个例子是三次多项式补3个0然后做模2除法注意这是按位异或不是普通除法得到的余数就是CRC校验码不够位数的前面补0最后把校验码拼到原始数据后构成完整发送帧。我举个例子。原始数据是1011001G(x) x^3 x 1 1011。补三个0后是1011001000。模2除法的过程是1011 ) 1011001000 1011 0110 0000 1100 1011 01110 1011 01010 0000 10100 1011 0011余数是001所以CRC校验码是001完整发送帧是1011001001。接收方收到后做同样的模2除法余数为0则判定无误非0则丢弃。这里要注意CRC只能检错不能纠错考试如果问“能不能定位是哪一位出错”答案是CRC本身不具备这个能力需要配合其他机制。3. 网络层IP编址与路由协议的解题模型3.1 IP地址与子网划分三步解题法网络层这章子网划分是绝对的高频大题。很多同学觉得这里难是因为题目一换花样就懵。我复习到最后总结出一套三步解题法什么变体都能套。第一步先把点分十进制转成二进制。比如192.168.45.0/24前24位是网络号后8位是主机号。第二步看题目要划分成几个子网、每个子网要容纳多少台主机确定借几位。第三步根据子网掩码算出每个子网的可用地址范围。举个例子某单位有一个192.168.45.0/24的网段要求划分成4个子网每个子网能容纳至少50台主机。4个子网需要借2位2^2 4子网掩码变成/26也就是255.255.255.192。每个子网的地址范围是子网1192.168.45.0到192.168.45.63可用主机地址1到62子网2192.168.45.64到192.168.45.127可用主机地址65到126子网3192.168.45.128到192.168.45.191可用主机地址129到190子网4192.168.45.192到192.168.45.255可用主机地址193到254每个子网可用主机数是2^6 - 2 62台满足50台的要求。这就是标准解法。特别提醒每一段的第一个地址是网络号最后一个地址是广播地址都不能分配给主机。这俩地址考填空、考计算、考简答都有可能出现是全年段的钉子户考点。3.2 CIDR与路由聚合最长前缀匹配是灵魂CIDR这块考试喜欢考两件事一是给一堆路由表项让你查某个IP该转发到哪个端口二是给一堆子网让你算能不能聚合成一个更短的前缀。先记结论查路由表永远遵守最长前缀匹配原则。什么意思就是如果有多个路由条目都跟目标IP匹配选前缀最长也就是网络号位数最多的那个。你可以把它类比成寄快递时填地址写了“某某省某某市某某街道”肯定比只写“某某省”更好定位路由器也是一样的逻辑匹配得越精细越能判断准确路径。路由聚合的解题方法是把要聚合的几个子网地址都写成二进制找出共同的最长前缀然后用这个前缀作为聚合后的路由条目。举例192.168.1.0/24、192.168.2.0/24、192.168.3.0/24要聚合它们的第三个八位组对应的二进制分别是从00000001到00000011共同前缀从右边看是00也就是这两个位的长度为22所以聚合结果是192.168.0.0/22。这里有个细节我一开始老犯迷糊聚合后的地址是所有子网地址中保留共同前缀、其余位全置0得到的不是随便取一个子网地址当聚合地址。3.3 路由协议选型RIP、OSPF、BGP一表打天下路由协议这部分考试几乎不会让你深挖细节但一定会在简答或选择题里让你对比。我的建议是直接做一张表把三个协议的核心特征列出来一劳永逸对比项RIPOSPFBGP类型距离向量链路状态路径向量工作范围自治系统内部自治系统内部自治系统之间度量标准跳数上限15代价/带宽多种属性AS路径等路由更新方式周期性广播整个路由表触发式洪泛链路状态增量更新收敛速度慢可能出现环路快无环较慢策略性强核心协议UDP端口520IP协议号89TCP端口179背这张表的时候我给自己编了一个助记口诀“RIP数跳、OSPF算代价、BGP看政策”。考试如果问你“RIP为什么不适合大型网络”答案核心就是它最多支持15跳超过就视为不可达而且周期性全表广播特别浪费带宽。3.4 ARP与ICMP两个“工具人”协议的考点ARP地址解析协议是网络层里最容易被忽略但在大题里反复客串的协议。它的工作流程你必须能用自然语言顺畅描述主机A要发给主机B发现自己的ARP缓存里没有B的IP对应的MAC地址于是在本网段内广播一个ARP请求主机B收到后发现IP是自己单播回复自己的MAC地址A收到后更新缓存然后正常发送数据帧。考点一般有三个ARP缓存何时更新、代理ARP怎么工作路由器替其他网段设备回应ARP请求、免费ARP的作用检测IP冲突。ICMP互联网控制报文协议常考的是报文类型。Ping就是ICMP回显请求和回显应答Traceroute靠的是ICMP超时报告。有一年计算分析题给了一大段traceroute的输出问每个TTL字段代表什么其实就是在考你对TTL逐跳递减机制的理解。这个知识点和IP数据报头部字段是绑定的复习的时候最好一起看。4. 传输层TCP状态机与拥塞控制全解4.1 TCP与UDP不只差一个“可靠”TCP和UDP的区别是基础和简答必考。但我建议你不仅背区别还理解背后的设计逻辑。TCP用三次握手建立连接、确认应答、超时重传、流量控制这一整套机制换来了“可靠传输”代价是复杂度和首部开销TCP首部至少20字节UDP固定8字节。UDP则把所有可靠性的包袱全扔掉换来的是低延迟和低开销适合DNS查询、视频流、实时游戏这类能容忍丢包但不能容忍延迟的场景。对比记忆的表格我在笔记里写了无数遍这里给你一份精简版特征TCPUDP连接面向连接无连接可靠性可靠有确认、重传不可靠不确认首部大小20字节起8字节传输方式字节流报文拥塞控制有无典型应用HTTP、FTP、SMTPDNS、RTP、DHCP4.2 三次握手与四次挥手状态迁移图必须默写TCP连接管理是简答题的最爱没有之一。三次握手客户端发SYN、seqx服务器回SYNACK、seqy、ackx1客户端再发ACK、acky1。四次挥手主动关闭方发FIN被动关闭方回ACK被动关闭方再发FIN主动关闭方最后回ACK然后等待半分钟到两分钟的TIME_WAIT状态。考试标配问题是“为什么挥手要四次第三次握手为什么需要”第一个的答案是因为TCP是全双工两个方向的数据通路要分别关闭所以RST和FIN各来一次不能像握手一样合并了事。第二个的答案是如果第三次握手丢了服务器会超时重传SYNACK客户端需要靠第三次ACK确认双方状态同步防止历史连接残留造成资源浪费。TIME_WAIT这个状态特别爱考问答形式一般是“为什么主动关闭方要等待2MSL”要点有两个一是确保最后一次ACK能到达对方如果丢了对方会重发FIN你还能再回一次二是让本连接产生的所有报文在网络中消失避免干扰后续新连接。答出这两点这道题就是满分的。4.3 拥塞控制慢启动、拥塞避免、快重传、快恢复拥塞控制是传输层大题的核心你不仅要懂原理还得能根据图/表推算调整过程。四个机制按顺序记住慢启动cwnd从1开始每轮RTT翻倍指数增长直到达到ssthresh。 拥塞避免超过ssthresh后cwnd每轮只加1线性增长。 快速重传连续收到3个重复ACK直接重传丢失报文不等超时。 快速恢复执行快重传后ssthresh降为当前cwnd的一半cwnd也从一半开始继续走拥塞避免。考题常见形式给一段拥塞窗口随时间变化的描述问你哪些阶段是慢启动、哪些是拥塞避免、某次丢包后ssthresh怎么变。这种题目只要画一张cwnd坐标图把每一次丢包事件标记出来做题速度能快一倍。我个人的习惯是先在草稿纸上画出阶梯状的增长曲线然后把每个转折点标注上“超时”或“3个ACK”的字样再分析ssthresh的变化就不容易乱。至于流量控制和拥塞控制的区别一句话总结流量控制管的是接收方缓冲区不要溢出拥塞控制管的是整条链路不要太挤。一个是“家门口的水龙头别开太大”一个是“整条水管都堵了大家得自觉放慢”。4.4 可靠传输原理停止等待与滑动窗口的递进关系很多教材会把停止等待协议Stop-and-Wait放在最前面讲然后过渡到GBN和SR协议。考试里这三者的对比也是一道常见简答。我只拎三个考点说穿停止等待的效率低在哪儿发送方发一个等一个信道利用率 TD / (TD RTT TA)其中TD是发送时延RTT是往返时延TA是确认发送时延。只要RTT大利用率就惨不忍睹。GBN后退N帧的窗口机制核心是接收方只允许按序接收一旦中间丢一个之后全丢。它的考点是窗口大小必须小于2^m - 1m是序号位数不然无法区分新旧窗口。SR选择重传允许接收方缓存乱序帧代价是接收方也要维护窗口复杂度高。它的窗口大小限制是小于等于2^(m-1)。考试常挖的坑是“SR协议中接收方收到重复帧后怎么办”——答案是丢弃并重新发送ACK帮助发送方意识到自己的某个帧已经正确到达。5. 应用层协议与经典实验复盘5.1 HTTP全流程从URL输入到页面渲染的一次旅行应用层最核心的就是HTTP它也是最容易出综合题的章节。一道完整的HTTP大题可能会串起DNS解析、TCP三次握手、HTTP请求报文、响应状态码、Cookie机制等一堆知识点。我建议你按这样一条链路去理解用户在浏览器输入网址后先做DNS解析拿到IP地址本地缓存没命中就逐级向上迭代查询然后浏览器与服务器建立TCP连接三次握手接着发HTTP请求请求行、请求头、请求体服务器回HTTP响应状态行、响应头、响应体浏览器解析HTML并继续请求静态资源然后渲染页面最后连接按Keep-Alive策略决定是保持还是关闭。近几年经常考的有几个点单独拎出来说GET和POST的区别GET是幂等的、参数在URL里POST是非幂等的、参数在请求体里。还有人说GET有长度限制这个说法在大多数浏览器和服务器环境下是对的但不是HTTP协议规范强制的。状态码200 OK、301永久重定向、302临时重定向、304未修改、403禁止、404没找到、500服务器内部错误。选择题和简答填空的高频。Cookie和Session的关系Cookie存在客户端Session存在服务器SessionID通过Cookie带到服务器服务器据此识别用户。5.2 DNS解析递归与迭代一个比喻就懂DNS这章的知识点不难但有一道题特别爱考请描述浏览器访问某网站时DNS解析的完整过程并说明本地DNS服务器的查询方式是递归还是迭代。我一般用一个比喻来讲清楚你要找一个人目标域名对应的IP你问你的同事本地DNS服务器同事如果不认识他会帮你层层往上问最后拿到答案给你这是递归查询而如果你直接去问根服务器根服务器告诉你去问顶级域服务器你再自己去问顶级域服务器顶级又让你去问权威服务器你自己一直跑腿这是迭代查询。题目如果问“本地DNS服务器向根服务器查询时用的是递归还是迭代”答案是通常本地服务器对根是迭代查询对用户是递归查询。但有些教材可能把角度反过来考最好是两个方向都准备一下表述答题时明确主语就不会错。5.3 实操作业复盘抓包与分析的关键动作实验课做Wireshark抓包几乎是这门课的标配。我希望你在复习时别只顾着交报告把几个关键实验动作的意图搞清楚考到分析题时才能答到点子上。抓TCP三次握手设置过滤条件为tcp然后访问一个HTTP网站你能看到SYN、SYNACK、ACK三连包。检查SEQ和Acknowledgment number的变化特别注意SYN包本身也要占一个序号。抓HTTP请求访问网站后过滤http点开请求报文你能看到Host、User-Agent、Accept-Encoding这些头字段。实验报告里常问“为什么请求头里没有Referer”答案可能是从地址栏直接输入或刷新页面导致Referer为空。抓DNS报文清空DNS缓存后再解析域名Wireshark里会出现查询和响应的两条记录响应的Answers里能看到解析出的IP和TTL值。5.4 电子邮件与文件传输SMTP、POP3、IMAP、FTP的边界应用层剩下的几个协议考得相对简单但容易混淆。SMTP管的是邮件发送POP3和IMAP管的是邮件接收其中IMAP支持在服务器端管理文件夹POP3则是把邮件下载到本地再删除服务器副本。FTP的要点是双通道控制连接端口21和按需建立的数据连接主动模式用端口20被动模式让客户端连接服务器的某个随机端口。考试如果让你对比POP3和IMAP或者问你SMTP能不能直接接收邮件答案是只能发接收需要POP3/IMAP这些题都是送分的别丢分就是赢。6. 网络安全考点从对称加密到防火墙6.1 加密体制对比对称与非对称的互补关系网络安全章节如果考加密通常就考两个大类的对比对称加密DES、AES和非对称加密RSA、ECC。对称加密快但密钥分发难非对称加密慢但能解决密钥分发问题。实际应用中通常是两者结合用非对称加密安全地交换对称密钥再用对称加密加密实际数据流量。考试里有一个高频简答说明数字签名的过程及作用。过程是发送方用自己私钥加密消息摘要接收方用发送方公钥解密验证。它提供了完整性消息摘要变化就会验证失败、真实性私钥只有发送方有、不可否认性发送方无法否认自己签过名。这三个性质答全简答就稳了。6.2 HTTPS原理SSL/TLS握手的关键几步HTTPS在应用层考试里越来越重要毕竟现在全网都在推。核心就是HTTP跑在TLS之上TLS在TCP之上增加了一层加密会话。握手流程的简单版本是客户端发ClientHello列出支持的协议版本和加密套件服务器选好协议和套件发ServerHello再发证书客户端验证证书信任链、域名、有效期然后协商出预主密钥用证书里的公钥加密发给服务器双方各自算出会话密钥之后的所有通信都走对称加密。简答题如果问“为什么HTTPS比HTTP安全”答它提供了机密性加密传输、完整性消息认证码防止篡改、身份认证证书验证服务器身份而HTTP这三样全没有。6.3 防火墙与人侵检测规则与告警的边界防火墙按技术分类有包过滤、状态检测、应用代理三类。包过滤查头部字段五元组状态检测额外维护连接状态能识别回包应用代理站在中间彻底转发检查。入侵检测系统IDS和防火墙的区别是防火墙是执行器的思路直接阻断IDS只有观察的大脑发现异常后报警并不直接干预流量。这章考试几乎都是概念题和场景题比如“公司想统计攻击来源应该部署什么设备”。你只要记住目的选型就不难要阻断就防火墙要发现就在网络出口镜像流量部署IDS。7. 易错点与踩坑记录这部分我写的是自己复习时容易错、考试时容易踩的典型坑。有些坑其实不难但出题人特别喜欢拿它们埋人。端口号与协议绑定有个经典错误是把FTP的数据端口记成20但主动模式和被动模式下端口不一样。FTP控制端口固定21数据端口主动模式20、被动模式随机。考判断题时这个点极坑。TCP序列号的起始值三次握手里SYN包会消耗一个序号所以第二次握手的ACK确认号必须是第一次握手的seq1。很多人画图时把这个细节忽略综合题里一步错后面全错。子网掩码与可用主机数的关系有个同学考后找我复盘说子网掩码/26明明能放62台主机为什么题目说只能放60台仔细看发现题目写的是“和子网本身广播地址不分配”那就是60。做题时看到“满足多少台主机”这种表述先问问它包含不包含网络号和广播号。RIP的“15跳”陷阱RIP最大跳数是1516视为不可达。题目如果问“从A到B经过15个路由器RIP能发现路径吗”答案是能但刚好是极限值16跳就宣告不可达。CONGESTION窗口的初始值慢启动阶段cwnd通常从1开始但也可能从2或者更大取决于具体实现。考试如果没有特别说明按默认1处理。把这些坑写在开头比放在结尾更容易在复习时形成条件反射。我自己就是靠着“临考前翻一遍自己的踩坑清单”这种习惯在考场上避开了不少失分点。8. 考场答题策略与时间分配考场上的时间管理也很重要尤其这门课的综合分析题常常要画图没规划好很容易前紧后松。我的策略是先快速扫一遍整张卷子把所有“看一眼就能写”的题标记出来比如概念填空、端口号、状态码。然后用15分钟把计算题全做了因为计算题分值大但过程短通常一个公式一套就出结果趁头脑清醒时做正确率最高。之后再回头啃简答和综合题这类题不怕写得慢但一定要分点作答标注1、2、3方便阅卷老师找答案也防止自己漏采分点。另外画图题不要空着不画TCP状态迁移图、子网划分示意图、UDP报文格式图只要你好歹画出骨架就能拿到辛苦分。所有题目答完后必须留10分钟检查——重点查单位、换算、ACK确认号这类细节。我期末考就是靠检查揪出来一个信噪比没换算出错的题硬是捡回5分。9. 后续还能怎么学笔记写到这正文的干货该讲的都讲了。最后分享一个我自己的复习小技巧我当时是把整本教材的课后习题做了两遍第一遍只看思路第二遍完整写步骤。然后拿近五年的样题做模拟每次做完都把错题对应的知识点回到笔记里标注。这样刷到最后你会发现知识点之间不再是孤立的而是能自然串起来子网划分可以连到路由聚合路由聚合又可以引出最长前缀匹配再往深处就是BGP属性。这种“串知识点”的复习方式比单纯背题高效得多。如果你复习时也遇到了“单个知识点都会综合题目就懵”的情况建议你试试画一张跨层级的知识地图物理层负责比特运输数据链路层负责帧的可靠交付网络层负责端到端选路传输层负责进程间可靠通信应用层负责用户服务。五个层级像接力赛每一棒交接到位整个网络才能顺利跑起来。理解了这层逻辑考场上哪怕遇到没见过的题你也能靠推理答出七八成。