1. 从一份复习题看计算机网络的知识骨架每年到了期末季后台总有人问我“计算机网络到底该怎么复习书翻了三遍合上还是啥也不会。”这个问题我太熟了。我带过几届学生的实验课也帮不少朋友做过考前突击发现一个特别普遍的现象大家把计算机网络当文科背背IP地址分类、背OSI七层名字、背TCP三次握手结果一到做题就懵。其实计算机网络是一门逻辑性极强的课它的知识点不是散落的珠子而是一根链条你只要抓住“数据怎么从一台机器走到另一台机器”这条主线大部分问题都能自己推出来。这篇内容就是围绕一份典型的“计算机网络复习题”展开的。我会把复习题里最常出现的那些考点拆开讲清楚它们背后的原理、为什么这么设计、做题时怎么快速判断以及我在实际教学和答疑中总结出来的避坑经验。不管你是正在准备期末考试的学生还是想系统梳理网络基础的开发者这份内容都能直接拿来当复习提纲用。我不会只给你答案我会告诉你答案是怎么想出来的这样你遇到变形题也不慌。复习题这个东西表面上看是一堆题目实际上它是一张知识地图。出题人把重点藏在题目里你顺着题目往回推就能摸到整门课的骨架。我习惯把计算机网络复习题分成四大块体系结构与分层思想、数据链路层与局域网、网络层与路由、传输层与应用层。这四块对应着数据从你的电脑出发经过交换机、路由器最终到达服务器并返回的完整过程。下面我就按这个顺序把每一块的核心考点和解题思路讲透。2. 体系结构与分层思想一切问题的起点2.1 为什么非要分层一个寄快递的类比复习题里第一类高频题就是问OSI七层模型和TCP/IP四层模型的对应关系或者问“为什么网络要分层”。很多同学死记硬背层名其实完全没必要。你想想寄快递的过程你把东西打包好应用层快递员上门取件传输层快递公司规划路线经过哪些中转站网络层最后一段路由小区快递员送到门口数据链路层而真正的货车、飞机这些运输工具就是物理层。每一层只关心自己那一摊事打包的人不用管货车走哪条高速货车司机也不用管箱子里装的是书还是衣服。分层最大的好处是“解耦”。应用层开发微信的人不需要知道底下用的是光纤还是网线网络层选路的人也不需要知道你在传的是视频还是文字。这种设计让每一层可以独立演进。复习题里经常问“OSI和TCP/IP的区别”标准答案是OSI有七层、TCP/IP有四层OSI是理论模型、TCP/IP是实际使用的。但我想补充一句OSI的会话层和表示层在实际中基本被应用层吞掉了所以TCP/IP把上面三层合并成应用层这不是偷懒而是实践检验后的简化。做题时有个小技巧凡是问“某一层负责什么”你就想这一层的数据单位是什么。应用层是报文传输层是报文段TCP或用户数据报UDP网络层是分组也叫数据报数据链路层是帧物理层是比特。单位记住了功能自然就清楚了。2.2 封装与解封装数据包的旅行日记复习题里必考的一道题是“描述数据从发送方到接收方的封装和解封装过程”。这道题看着简单但很多人写不全。我教你一个不会漏的写法从应用层开始每往下一层就加一个头有时候还加尾到了物理层变成电信号发出去接收方从物理层往上每往上一层就拆掉对应的头最后交给应用层。具体来说应用层的数据交给传输层传输层加上TCP头包含源端口、目的端口、序号、确认号等变成报文段到了网络层加上IP头包含源IP、目的IP、TTL等变成分组到了数据链路层加上帧头包含源MAC、目的MAC和帧尾FCS校验变成帧到了物理层变成比特流。接收方反过来操作每一层检查自己的头确认没问题就拆掉往上交。这里有个容易错的点MAC地址在每一段链路上都会变而IP地址在整个传输过程中基本不变除非经过NAT。为什么因为MAC地址是“这一跳”的地址IP地址是“最终目的地”的地址。就像你寄快递每一站中转站之间的运单号可能不同但收件人地址始终是你家。复习题里经常拿这个做文章问你“数据包经过路由器时源IP和目的IP变不变源MAC和目的MAC变不变”。记住经过路由器IP不变NAT除外MAC每跳都变。2.3 性能指标计算带宽、时延、吞吐量的那些坑复习题里计算题最爱考的就是时延。时延分四种发送时延、传播时延、处理时延、排队时延。发送时延等于数据长度除以发送速率传播时延等于距离除以传播速度电磁波在光纤里大约是2×10^8 m/s。很多同学把这两个搞混我打个比方发送时延就像你把一车货装上车的时间传播时延就像车在路上跑的时间。货多不多影响装车时间路远不远影响跑的时间。有个经典陷阱题问“带宽越大传播时延越小吗”答案是错。带宽只影响发送时延不影响传播时延。传播时延只跟距离和介质有关。另一个陷阱是“吞吐量”和“带宽”的区别。带宽是理论上限吞吐量是实际测到的速率。就像水管再粗你实际接水时可能因为水龙头没全开而流得慢。时延带宽积这个概念也常考它等于传播时延乘以带宽表示“管道里能容纳多少比特”。你可以理解成一条路上同时有多少辆车在跑。这个值在TCP窗口计算里会用到后面讲传输层时我再展开。3. 数据链路层与局域网从比特到帧的可靠传递3.1 差错检测CRC到底怎么算复习题里数据链路层最常考的就是CRC校验。很多同学看到多项式除法就头大其实步骤很固定。我给你一个不会错的流程先把生成多项式写成二进制形式比如G(x)x^4x1对应的比特串就是10011最高次幂是4所以有5位。然后在数据后面补上最高次幂个0也就是补4个0。接着用补零后的数据对生成多项式做模2除法异或运算不借位得到的余数就是FCS。把FCS附在原始数据后面发出去。接收方收到后用同样的生成多项式去除余数为0就认为没错。这里要注意CRC只能检测错误不能纠正错误。而且CRC的检错能力跟生成多项式的选择有关实际标准里用的多项式都是经过精心设计的能检测出奇数个错误、双比特错误等。我踩过的一个坑是模2除法里每次异或后要拉下一位直到余数位数小于生成多项式位数为止。很多同学算到一半就乱了建议你在草稿纸上把每一步的异或结果写清楚别跳步。考试时如果时间紧可以先检查余数位数对不对余数一定比生成多项式少一位。3.2 以太网与MAC地址为什么需要ARP复习题里经常问“ARP的作用是什么”以及“ARP请求是单播还是广播”。ARP解决的是“知道IP但不知道MAC”的问题。在同一局域网内主机A要给主机B发数据它知道B的IP但数据链路层需要B的MAC地址才能封装成帧。于是A发一个ARP请求问“谁是这个IP”这个请求是广播的目的MAC全F。B收到后单播回复自己的MAC。A把这对IP-MAC映射存到ARP缓存里下次直接用。这里有个细节ARP请求是广播ARP响应是单播。复习题里还爱考“跨网段通信时ARP怎么工作”。答案是如果目的IP不在同一网段主机A会ARP请求默认网关的MAC然后把数据发给网关由网关继续转发。所以跨网段时A的ARP缓存里存的是网关的IP-MAC映射而不是最终目的主机的。MAC地址有个特点它是烧录在网卡上的理论上全球唯一但实际可以通过软件修改。MAC地址长度是48位前24位是OUI厂商标识后24位由厂商分配。复习题里可能问你“MAC地址和IP地址的区别”你就从“身份标识”和“位置标识”的角度答MAC是身份跟着设备走IP是位置跟着网络走。3.3 交换机与VLAN广播域怎么隔离交换机工作在数据链路层它根据MAC地址表转发帧。复习题里常考“交换机收到一个帧后怎么处理”。流程是收到帧后先学习源MAC和对应端口写入MAC地址表然后查目的MAC如果表里有就单播转发没有就广播除了入端口。这里要注意交换机不会修改帧的内容只是转发。VLAN是复习题里的另一个重点。VLAN的作用是把一个物理交换机划分成多个逻辑局域网隔离广播域。比如一个公司里财务部和研发部接在同一台交换机上但通过VLAN划分财务部的广播不会传到研发部。VLAN的划分方式有基于端口、基于MAC、基于协议等最常用的是基于端口。Trunk链路和Access链路的区别也常考。Access链路连接终端设备只属于一个VLAN帧不带标签Trunk链路连接交换机可以承载多个VLAN帧带802.1Q标签。复习题里可能给你一个拓扑图让你判断某个帧从Trunk口出去时带不带标签。记住Access口进出都不带标签Trunk口默认只对Native VLAN不带标签其他VLAN都带标签。4. 网络层与路由IP地址与选路的核心逻辑4.1 IP地址与子网划分从分类到CIDR复习题里计算题的重灾区就是子网划分。很多同学看到“给定一个IP和掩码求网络地址、广播地址、可用主机数”就慌。我给你一个万能步骤先把IP和掩码写成二进制然后做与运算得到网络地址把网络地址的主机位全置1得到广播地址可用主机数等于2的主机位数次方减2减去网络地址和广播地址。举个例子192.168.10.130/26。掩码是26位即255.255.255.192。主机位是32-266位所以每个子网有64个地址可用62个。网络地址是192.168.10.128广播地址是192.168.10.191可用范围是129到190。这里的关键是找到“块大小”块大小等于256减去掩码最后一个非255或非0的字节。比如/26的掩码最后字节是192块大小就是256-19264。然后网络地址就是IP所在块的起始地址。CIDR无类别域间路由是现在实际使用的它打破了传统的A、B、C类划分。复习题里可能问你“192.168.1.0/24和192.168.1.0/25有什么区别”。/24有256个地址/25有128个地址。CIDR的好处是可以更灵活地分配地址减少浪费。VLSM可变长子网掩码允许在同一个网络里使用不同长度的掩码进一步节省地址。我踩过的一个坑是子网划分时网络地址和广播地址不能用但很多人忘了路由器接口也需要一个IP这个IP通常占用一个可用地址。所以在计算“能接多少台主机”时如果题目说“一个路由器接口连接一个子网”你要记得减去路由器接口占的那个地址。4.2 路由算法与协议RIP、OSPF、BGP的区别复习题里常考“RIP和OSPF的区别”。RIP是距离向量算法用跳数作为度量最大15跳16跳表示不可达。它每隔30秒广播一次完整路由表收敛慢容易产生路由环路。OSPF是链路状态算法用带宽作为度量收敛快支持大型网络。BGP是外部网关协议用于不同自治系统之间交换路由基于路径向量算法。距离向量算法的核心是“邻居告诉我什么我就信什么再加上到邻居的距离”。链路状态算法的核心是“每个人都画出全网地图然后自己算最短路径”。你可以把RIP想象成“问路”你问邻居怎么走邻居说他到目的地要3跳那你就记4跳。OSPF想象成“人手一份地图”每个人把自己周边的路况广播出去最后每个人手里都有完整地图用Dijkstra算法算最短路径。复习题里可能给你一个路由表让你根据收到的路由更新计算新的路由表。做这种题时记住RIP的更新规则如果下一跳是同一个无条件更新如果是新的目的地更新如果跳数更少更新否则不更新。还要注意水平分割和毒性逆转这些防环机制。4.3 NAT与DHCP地址不够用怎么办NAT网络地址转换是复习题里的常客。它的作用是让多台内网主机共享一个公网IP上网。NAT路由器维护一张转换表把内网IP端口映射到公网IP端口。复习题里常问“NAT对IPsec有什么影响”答案是NAT会修改IP头和端口而IPsec的AH协议要校验整个IP头所以会冲突。不过现在有NAT-TNAT穿透来解决。DHCP是动态主机配置协议用于自动分配IP地址。复习题里常考DHCP的四个步骤发现、提供、请求、确认。客户端广播DHCP Discover服务器回应DHCP Offer客户端广播DHCP Request服务器回应DHCP Ack。这里有个细节DHCP Discover和Request是广播Offer和Ack可以是单播也可以是广播取决于客户端是否设置了广播标志。DHCP中继代理也常考。如果DHCP服务器和客户端不在同一网段路由器不会转发广播所以需要在中继代理上配置把DHCP广播转成单播发给服务器。复习题里可能问你“为什么需要DHCP中继”你就答“因为路由器隔离广播域DHCP广播无法跨网段”。5. 传输层与应用层端到端的可靠与不可靠5.1 TCP三次握手与四次挥手为什么是三次和四次复习题里必考TCP三次握手和四次挥手。很多同学背了流程但说不清为什么。三次握手的目的是“双方都确认自己和对方的收发能力正常”。第一次客户端发SYN服务器收到后知道客户端发送能力正常第二次服务器回SYNACK客户端收到后知道服务器收发能力都正常第三次客户端回ACK服务器收到后知道客户端接收能力正常。所以三次是最少的两次不够四次浪费。四次挥手是因为TCP是全双工的每个方向要单独关闭。客户端发FIN表示“我没数据要发了”服务器回ACK表示“知道了”但服务器可能还有数据要发所以等服务器也发FIN表示“我也没数据要发了”客户端再回ACK。这里有个TIME_WAIT状态客户端在发完最后一个ACK后要等2MSL最大报文段生存时间才关闭。为什么一是确保服务器能收到最后的ACK如果服务器没收到会重发FIN客户端还能响应二是让本次连接的旧数据包在网络中消失避免影响新连接。复习题里常问“为什么TIME_WAIT是2MSL而不是1MSL”。因为一个MSL是数据包在网络中存活的最长时间一来一回就是2MSL。如果客户端发完ACK就关闭服务器没收到ACK会重发FIN但客户端已经关了服务器就卡在LAST_ACK状态。所以等2MSL是保险起见。5.2 TCP流量控制与拥塞控制滑动窗口与慢启动流量控制是“别发太快我处理不过来”靠滑动窗口实现。接收方在ACK里告诉发送方自己的接收窗口大小发送方根据这个窗口调整发送速率。拥塞控制是“别发太快网络扛不住”靠四个算法慢启动、拥塞避免、快重传、快恢复。慢启动是指数增长每收到一个ACK窗口翻倍拥塞避免是线性增长每个RTT窗口加1。当发生超时拥塞窗口降到1重新慢启动当收到三个重复ACK触发快重传和快恢复拥塞窗口减半然后线性增长。复习题里常给你一个拥塞窗口变化图让你判断在哪个阶段。记住超时是严重拥塞直接降到1三个重复ACK是轻微拥塞减半。这里有个易错点接收窗口和拥塞窗口是两回事发送方实际能发的数据量是两者中的较小值。复习题里可能问你“如果接收窗口是1000字节拥塞窗口是2000字节发送方能发多少”答案是1000字节。5.3 HTTP与DNS应用层的两大支柱HTTP是复习题里应用层最常考的。HTTP/1.1默认持久连接HTTP/1.0默认非持久。持久连接又分流水线和非流水线。流水线是客户端可以连续发多个请求不等响应非流水线是发一个等一个。HTTP/2支持多路复用解决了队头阻塞。HTTP/3基于QUIC用UDP实现可靠传输。DNS是域名解析系统复习题里常考递归查询和迭代查询。递归是“你帮我查到底”迭代是“你告诉我下一步问谁”。通常客户端到本地DNS服务器是递归本地DNS到根域名服务器是迭代。DNS缓存可以减少查询时间但要注意TTL过期问题。复习题里可能问你“在浏览器输入一个网址到页面显示发生了什么”。这是一道综合题你要把DNS解析、TCP握手、HTTP请求、服务器响应、浏览器渲染串起来。我建议你按时间顺序写先查DNS缓存没有就递归查询拿到IP后三次握手建立TCP连接然后发HTTP请求服务器处理并返回响应浏览器解析HTML并请求其他资源最后四次挥手关闭连接。6. 常见问题与排查技巧实录6.1 复习题里最容易错的十个点我在答疑时发现有些错误反复出现。我整理了一个速查表你考前过一遍能避开大部分坑。易错点正确理解常见错误发送时延与传播时延发送时延数据量/带宽传播时延距离/光速认为带宽越大传播时延越小MAC地址变化每经过一跳源和目的MAC都变认为MAC地址全程不变IP地址变化经过路由器时IP基本不变NAT除外认为IP每跳都变ARP请求与响应请求广播响应单播认为都是广播子网可用主机数2^主机位 - 2忘记减去网络地址和广播地址TCP三次握手第三次可以携带数据认为第三次不能带数据TIME_WAIT主动关闭方进入等2MSL认为被动关闭方进入拥塞控制超时降为1三重复ACK减半混淆两种情况的处理VLAN Trunk默认Native VLAN不带标签认为所有VLAN都带标签DNS查询客户端到本地递归本地到根迭代认为全程递归或全程迭代6.2 计算题的手算技巧与验算方法计算题最怕算错。我教你几个验算方法。子网划分算完后检查网络地址和广播地址是不是块大小的边界。比如/26的块大小是64网络地址应该是64的倍数。时延计算算完后检查单位是不是秒带宽是不是用bps而不是Bps。CRC算完后把余数附在数据后面再除一次余数应该为0。还有一个小技巧如果题目给的是十进制IP你可以先转成二进制再算但更快的办法是记住常见的块大小。比如/25是128/26是64/27是32/28是16/29是8/30是4。知道块大小后网络地址就是“小于等于IP的最大块边界”。比如192.168.1.100/26块大小64100以内的最大64倍数是64所以网络地址是192.168.1.64。6.3 简答题的答题模板与得分点简答题不是写得越多越好而是要踩中得分点。我总结了一个模板先给定义再说作用最后说特点或区别。比如问“TCP和UDP的区别”你先说TCP是面向连接的可靠传输UDP是无连接的不可靠传输然后说TCP有流量控制和拥塞控制UDP没有最后说TCP首部20字节UDP首部8字节。这样答阅卷老师一眼就能看到关键词。对于“描述过程”类的题比如“描述TCP三次握手”你要按时间顺序写每一步写清楚谁发什么、标志位是什么、序号是什么。不要跳步也不要把三次握手和四次挥手混在一起写。我见过有同学把SYN和FIN写反这种低级错误一定要避免。6.4 实验题与抓包分析的思路有些复习题会涉及Wireshark抓包分析。比如给你一个抓包截图问你“这是TCP握手还是挥手”。你看标志位SYN是握手FIN是挥手。如果看到SYN1, ACK0那是第一次握手SYN1, ACK1是第二次ACK1是第三次。挥手时FIN1, ACK1是第一次挥手ACK1是第二次FIN1, ACK1是第三次ACK1是第四次。抓包题还常问“这个包的源IP和目的IP是什么”“TTL是多少”“窗口大小是多少”。这些都在IP头和TCP头里你只要知道字段位置就能读出来。我建议你考前用Wireshark抓一次自己访问网页的包亲手看看三次握手和四次挥手比背十遍都管用。7. 复习策略与实战建议复习计算机网络我个人的经验是“先搭骨架再填血肉”。骨架就是数据流动的路径应用层产生数据传输层分段网络层选路数据链路层成帧物理层传输。你把这个路径画在纸上每学一个知识点就挂到对应的位置。比如学到ARP你就想它在数据链路层和网络层之间起作用学到DNS你就想它在应用层但依赖传输层和网络层。做题时我建议你按题型分类刷。计算题集中刷简答题集中背实验题集中看。计算题要动手算不能只看答案。简答题要自己先写一遍再对照答案找差距。实验题要理解原理不能死记截图。考前一周把错题过一遍重点看自己反复错的地方。还有一个特别有用的方法给别人讲。你找一个同学把三次握手讲给他听如果他听懂了说明你真懂了。如果讲着讲着自己卡住了那就是你的知识漏洞。我当年复习时就是靠给室友讲题把很多模糊的地方讲清楚了。最后说一句计算机网络不是背出来的是想出来的。你只要抓住“数据怎么走”这条主线大部分问题都能自己推导。复习题只是帮你检验哪里没想通不要把它当成负担。把每一道错题当成一次查漏补缺的机会你会发现这门课其实挺有意思的。