1. 数据通信复习题的核心知识框架拆解
1.1 为什么复习题要从“框架”而不是“题目”入手
很多人拿到“数据通信复习题(二)”这种材料,第一反应就是从头到尾刷题,刷完对答案,错的记下来,然后继续刷下一套。我试过这种方式,说实话,效率很低。原因很简单:数据通信这门课的知识点之间是有强依赖关系的,物理层的编码没搞懂,到了数据链路层的帧同步你就会卡住;TCP的滑动窗口没理解透,到了拥塞控制你就只能死记硬背。
所以我的建议是,先花二十分钟把整个知识框架搭起来,再往里面填题目。数据通信的核心框架其实就四层:物理层、数据链路层、网络层、传输层。每一层解决的核心问题不同,复习题的出题逻辑也完全不同。
物理层解决的是“比特怎么在介质上传输”,复习题通常考编码方式(曼彻斯特、差分曼彻斯特、NRZ)、调制方式(ASK、FSK、PSK)、信道容量(奈奎斯特、香农公式)、传输介质特性。数据链路层解决的是“相邻节点之间怎么可靠传输”,复习题集中在帧同步、差错控制(CRC、海明码)、流量控制(停等协议、滑动窗口)、介质访问控制(CSMA/CD、CSMA/CA)。网络层解决的是“数据怎么从源到目的地跨网络传输”,复习题围绕IP编址、子网划分、路由算法(距离矢量、链路状态)、ICMP。传输层解决的是“端到端的可靠传输”,复习题重点是TCP三次握手、四次挥手、滑动窗口、拥塞控制、UDP特性。
你把这四层的核心问题想清楚了,再看复习题,就会发现每道题都能归到某个层的某个知识点上。这种“归类”的能力,比单纯刷题重要得多。
1.2 复习题(二)通常覆盖的重点章节
“复习题(二)”这个编号本身就暗示了一个信息:它大概率是系列复习材料中的第二份,通常对应课程的中后段内容。根据我的经验,第一份复习题往往覆盖物理层和数据链路层的基础,第二份则集中在数据链路层的高级话题、网络层、传输层。
具体来说,以下几个知识点几乎是必考的:
- CRC校验的计算:给你一个生成多项式和一个数据比特串,让你算CRC余数。这道题考的是模2除法的操作,看起来简单,但每年都有大量人因为对齐错误或者异或运算搞错而丢分。
- 滑动窗口协议的信道利用率计算:给你窗口大小、帧长、传播时延、传输速率,让你算利用率。这道题的关键是分清“发送时延”和“往返时延”,以及窗口是否足够大。
- IP子网划分与CIDR聚合:给你一个IP地址块,让你划分成若干子网,或者反过来把多个子网聚合成一个超网。这道题考的是二进制运算的熟练度。
- TCP拥塞控制的窗口变化:给你一个初始阈值和一系列事件(超时、三个重复ACK),让你画出拥塞窗口随时间的变化曲线。这道题考的是对慢启动、拥塞避免、快重传、快恢复四个阶段的理解。
- 路由算法的迭代计算:距离矢量算法中,给你初始路由表,让你模拟几轮交换后的结果。这道题考的是Bellman-Ford方程的迭代。
这些题目有一个共同特点:它们都不是靠背诵能解决的,必须动手算。我见过太多人复习的时候看着答案觉得“我会了”,一到考场就发现算不对。所以下面我会针对每一类题目,给出具体的操作步骤和避坑指南。
1.3 复习题背后的“出题意图”分析
站在出题人的角度想问题,你会发现复习题的设计是有套路的。一道好的数据通信题目,通常考察三个层次的能力:记忆、理解、应用。
记忆层次的题目,比如“TCP报文头中序号字段占几个字节”,这种题占比不会太高,因为太简单,区分度低。理解层次的题目,比如“为什么TCP需要三次握手而不是两次”,这种题需要你用自己的话解释机制背后的原因。应用层次的题目,比如“给定网络拓扑和参数,计算某个协议的性能”,这种题占比最高,也是最能拉开分数的。
“复习题(二)”作为系列材料,通常会在应用层次上加大力度。也就是说,你光知道CRC的定义没用,你得会算;光知道滑动窗口的原理没用,你得会算利用率;光知道子网划分的规则没用,你得能在三十秒内把一个/24的网段切成四个/26的子网。
我的建议是:复习的时候,每看完一个知识点,立刻找一道对应的计算题动手做一遍。做不出来就看答案,看完答案合上,再从头做一遍。这个“合上答案重做”的步骤,是区分“真会”和“假会”的关键。
2. 核心计算题型的实操拆解与避坑指南
2.1 CRC校验:模2除法的手算技巧与常见错误
CRC校验是数据链路层最常考的计算题之一。题目通常长这样:给定生成多项式G(x) = x^4 + x + 1,数据比特串为1101011011,求CRC校验码。
第一步,从生成多项式提取除数。G(x) = x^4 + x + 1对应的二进制是10011,因为x^4对应第4位,x对应第1位,1对应第0位,中间缺的x^3、x^2系数为0。这一步很多人会搞错,尤其是当多项式写成x^4 + x^2 + x + 1这种形式时,要仔细对应每一位。
第二步,在数据比特串后面补r个0,r是生成多项式的最高次幂。这里r=4,所以数据变成11010110110000。
第三步,用补零后的数据对除数做模2除法。模2除法的规则是:不借位,只做异或。具体操作是:取被除数的前5位(因为除数是5位),如果首位是1,则商1,用这5位与除数异或;如果首位是0,则商0,不做异或,直接右移一位。每一步异或后,把结果的下一位拉下来,继续判断。
我手算一遍:被除数11010110110000,除数10011。
- 前5位11010,首位1,商1,异或10011得01001,拉下下一位1,得010011
- 前5位01001,首位0,商0,右移,拉下下一位0,得10010
- 前5位10010,首位1,商1,异或10011得00001,拉下下一位1,得000011
- 前5位00001,首位0,商0,右移,拉下下一位1,得000111
- 前5位00011,首位0,商0,右移,拉下下一位0,得001100
- 前5位00110,首位0,商0,右移,拉下下一位0,得011000
- 前5位01100,首位0,商0,右移,拉下下一位0,得110000
- 前5位11000,首位1,商1,异或10011得01011,拉下下一位0,得010110
- 前5位01011,首位0,商0,右移,拉下下一位0,得101100
- 前5位10110,首位1,商1,异或10011得00101,拉下下一位0,得001010
- 前5位00101,首位0,商0,右移,拉下下一位0,得010100
- 前5位01010,首位0,商0,右移,拉下下一位0,得101000
- 前5位10100,首位1,商1,异或10011得00111,拉下下一位0,得001110
- 前5位00111,首位0,商0,右移,拉下下一位0,得011100
- 前5位01110,首位0,商0,右移,拉下下一位0,得111000
- 前5位11100,首位1,商1,异或10011得01111,此时没有更多位可拉,余数就是01111。
所以CRC校验码是01111,发送的帧是110101101101111。
注意:模2除法中,每一步异或后,如果结果的首位是0,下一步商0,但仍然要把下一位拉下来,而不是跳过。这是最常见的错误。
我踩过的坑:有一次考试,我在某一步异或后得到的结果是00000,我直接跳过了好几步,结果余数算错了。后来才明白,即使结果是全零,也要老老实实一步一步拉位,因为拉下来的位会影响后续的异或结果。
另一个技巧:如果你不确定自己的计算,可以用“发送帧除以生成多项式余数为零”来验证。把算出来的CRC码拼到数据后面,再做一次模2除法,如果余数是0,说明算对了。这个验证方法在考场上非常实用,花三十秒验证一下,比事后后悔强。
2.2 滑动窗口利用率:分清三种时延是关键
滑动窗口协议的信道利用率计算,是数据链路层的另一道高频考题。题目通常给出:窗口大小W、帧长L、传输速率R、传播时延tp,让你算最大信道利用率。
核心公式是:利用率 = (W × L / R) / (L / R + 2 × tp),前提是W × L / R ≥ L / R + 2 × tp,也就是窗口足够大,能连续发送。如果窗口不够大,发送方发完窗口内的帧后必须等ACK,利用率就要另算。
这里的关键是分清三个时间:
- 发送时延= L / R,即把一帧的所有比特推上链路所需的时间。
- 传播时延= tp,即一个比特从发送方到接收方在介质上传播的时间。
- 往返时延= 2 × tp,即发送方从发出第一个比特到收到接收方ACK的时间。
很多人会把“发送时延”和“传播时延”搞混。打个比方:发送时延就像你把一列火车所有车厢装上车轨的时间,传播时延就像火车头从起点开到终点的时间。这两个时间是完全独立的,可以重叠。
我举个例子:帧长L=1000比特,传输速率R=10Mbps,传播时延tp=10ms,窗口W=5。
发送时延 = 1000 / 10^7 = 0.1ms。往返时延 = 20ms。窗口内发送时间 = 5 × 0.1 = 0.5ms。因为0.5ms < 0.1 + 20 = 20.1ms,所以窗口不够大,发送方发完5帧后要等ACK。利用率 = 0.5 / 20.1 ≈ 2.49%。
如果把窗口改成W=200,窗口内发送时间 = 20ms,仍然小于20.1ms,利用率 = 20 / 20.1 ≈ 99.5%。如果W=201,窗口内发送时间 = 20.1ms,刚好等于往返时延加发送时延,利用率 = 100%。
提示:当窗口足够大时,利用率趋近于1,但不会超过1。如果算出来大于1,说明你公式用错了。
避坑指南:题目中如果给出的是“数据速率”和“帧长”,直接算发送时延;如果给出的是“传播速率”和“距离”,传播时延 = 距离 / 传播速率。有时候题目会给出“处理时延”或“排队时延”,在基础题中通常忽略,但如果题目明确给出,就要加上。
2.3 IP子网划分:二进制运算是基本功
子网划分的题目,核心就一句话:借位。给你一个IP地址和子网掩码,让你划分成N个子网,你需要从主机位借log2(N)位给网络位。
比如,给定192.168.1.0/24,要划分成4个子网。4 = 2^2,所以借2位。新的子网掩码是/26,即255.255.255.192。四个子网分别是:
- 192.168.1.0/26,可用主机范围192.168.1.1到192.168.1.62,广播地址192.168.1.63
- 192.168.1.64/26,可用主机范围192.168.1.65到192.168.1.126,广播地址192.168.1.127
- 192.168.1.128/26,可用主机范围192.168.1.129到192.168.1.190,广播地址192.168.1.191
- 192.168.1.192/26,可用主机范围192.168.1.193到192.168.1.254,广播地址192.168.1.255
这里的关键是:每个子网的第一个地址是网络地址,最后一个地址是广播地址,都不能分配给主机。所以/26的子网有64个地址,但可用主机地址只有62个。
我见过很多人在这里犯错:把网络地址或广播地址当成可用地址算进去。比如题目问“每个子网最多能容纳多少台主机”,答案应该是62,不是64。
CIDR聚合是反过来的操作:给你多个连续的子网,让你聚合成一个超网。比如192.168.1.0/26、192.168.1.64/26、192.168.1.128/26、192.168.1.192/26,聚合成192.168.1.0/24。方法是找到这些子网掩码的最长公共前缀。四个子网的第三个字节分别是0、64、128、192,二进制前两位都是00、01、10、11,公共前缀是前24位,所以聚合结果是/24。
注意:CIDR聚合的前提是这些子网是连续的,且数量是2的幂。如果不是,就不能聚合成一个超网,只能聚合部分。
实操心得:做子网划分题的时候,我习惯先把掩码写成二进制,然后把IP地址也写成二进制,直接在上面划线。这样比十进制计算不容易出错。比如/26的掩码是11111111.11111111.11111111.11000000,主机位是最后6位,所以每个子网64个地址。这个“看主机位”的方法,比背公式快得多。
2.4 TCP拥塞控制:画图比背公式管用
TCP拥塞控制的题目,通常给你一个初始拥塞窗口cwnd=1 MSS,初始阈值ssthresh=16 MSS,然后描述一系列事件:超时、收到三个重复ACK等,让你画出cwnd随时间的变化。
我的建议是:不要背公式,直接画图。横轴是传输轮次,纵轴是cwnd。规则很简单:
- 慢启动阶段:cwnd从1开始,每收到一个ACK翻倍(1、2、4、8、16...),直到cwnd ≥ ssthresh。
- 拥塞避免阶段:cwnd每轮加1(线性增长)。
- 超时事件:ssthresh = cwnd / 2,cwnd重置为1,重新进入慢启动。
- 三个重复ACK事件:ssthresh = cwnd / 2,cwnd = ssthresh,进入快恢复(拥塞避免)。
我举个例子:初始cwnd=1,ssthresh=16。
- 第1轮:cwnd=1,慢启动
- 第2轮:cwnd=2
- 第3轮:cwnd=4
- 第4轮:cwnd=8
- 第5轮:cwnd=16,达到ssthresh,进入拥塞避免
- 第6轮:cwnd=17
- 第7轮:cwnd=18
- 第8轮:cwnd=19
- 第9轮:cwnd=20,假设此时发生超时
- 超时后:ssthresh = 20 / 2 = 10,cwnd = 1
- 第10轮:cwnd=1,慢启动
- 第11轮:cwnd=2
- 第12轮:cwnd=4
- 第13轮:cwnd=8
- 第14轮:cwnd=16,但ssthresh=10,所以cwnd=8时还没到阈值,下一轮翻倍到16,超过阈值,进入拥塞避免
- 第15轮:cwnd=16,拥塞避免
- 第16轮:cwnd=17
如果第9轮发生的是三个重复ACK而不是超时:
- 三个重复ACK后:ssthresh = 20 / 2 = 10,cwnd = 10,进入快恢复
- 第10轮:cwnd=10,拥塞避免
- 第11轮:cwnd=11
提示:快恢复和拥塞避免的区别在于,快恢复是把cwnd直接设为ssthresh,而不是从1开始。这个细节很多人会搞混。
避坑指南:题目中如果问“第几轮开始进入拥塞避免”,你要看cwnd是否达到或超过ssthresh。如果cwnd在慢启动阶段翻倍后超过了ssthresh,那么下一轮就进入拥塞避免,而不是等到cwnd等于ssthresh。比如ssthresh=10,cwnd从8翻倍到16,16 > 10,所以下一轮进入拥塞避免,cwnd=16。
2.5 距离矢量路由算法:迭代到收敛为止
距离矢量算法的题目,通常给你一个网络拓扑和初始路由表,让你模拟几轮交换后的结果。核心是Bellman-Ford方程:D(x, y) = min { c(x, v) + D(v, y) },其中x是当前节点,y是目的节点,v是x的邻居。
我举个例子:三个节点A、B、C,链路代价A-B=1,B-C=2,A-C=5。初始时每个节点只知道直连链路。
- A的初始路由表:到A=0,到B=1,到C=5
- B的初始路由表:到A=1,到B=0,到C=2
- C的初始路由表:到A=5,到B=2,到C=0
第一轮交换:每个节点把自己的路由表发给邻居。
- A收到B的表:到C可以通过B,代价1+2=3,比原来的5小,更新为3。
- B收到A的表:到C可以通过A,代价1+5=6,比原来的2大,不更新。
- B收到C的表:到A可以通过C,代价2+5=7,比原来的1大,不更新。
- C收到B的表:到A可以通过B,代价2+1=3,比原来的5小,更新为3。
第一轮后:
- A:到A=0,到B=1,到C=3
- B:到A=1,到B=0,到C=2
- C:到A=3,到B=2,到C=0
第二轮交换:
- A收到C的表:到B可以通过C,代价3+2=5,比原来的1大,不更新。
- C收到A的表:到B可以通过A,代价3+1=4,比原来的2大,不更新。
第二轮后路由表不变,算法收敛。
注意:距离矢量算法收敛后,每个节点的路由表应该是一致的。如果发现某个节点的路由表还在变化,说明还没收敛,需要继续迭代。
避坑指南:题目中如果问“经过几轮交换后收敛”,你要看路由表在哪一轮之后不再变化。有时候题目会设置“毒性逆转”或“水平分割”的规则,这时候路由表的更新逻辑会有所不同,要仔细读题。
3. 协议原理类题目的答题模板与深度理解
3.1 三次握手与四次挥手:为什么是三次和四次
“为什么TCP需要三次握手”是数据通信考试中几乎必考的一道简答题。很多人背的标准答案是“为了防止已失效的连接请求报文段突然又传到服务端”,但这个答案只说了表面,没有说到本质。
本质原因是:TCP是全双工通信,双方都需要确认对方的发送能力和接收能力。三次握手的过程是:
- 第一次:客户端发送SYN,服务端收到。服务端确认了客户端的发送能力正常。
- 第二次:服务端发送SYN+ACK,客户端收到。客户端确认了服务端的发送能力和接收能力都正常,同时也确认了自己的发送能力正常。
- 第三次:客户端发送ACK,服务端收到。服务端确认了客户端的接收能力正常。
如果只有两次握手,服务端发送SYN+ACK后就建立连接,那么服务端无法确认客户端是否收到了自己的SYN+ACK。如果客户端没收到,客户端不会发送数据,服务端却以为连接已建立,会一直等待,浪费资源。
四次挥手的原因是:TCP连接是全双工的,每个方向需要单独关闭。客户端发送FIN,表示“我没有数据要发了”,但还可以接收数据。服务端收到FIN后,发送ACK,表示“我知道了”,但服务端可能还有数据要发,所以不能立刻关闭。等服务端数据发完,再发送FIN,客户端收到后发送ACK,连接才完全关闭。
提示:四次挥手过程中,客户端在发送最后一个ACK后,需要等待2MSL(最大报文段生存时间)才能关闭连接。原因是:如果这个ACK丢失,服务端会重传FIN,客户端需要能够响应这个重传。
我个人的理解是:三次握手和四次挥手的本质区别在于,握手时双方都没有数据要发,所以可以把SYN和ACK合并;挥手时双方可能还有数据要发,所以ACK和FIN不能合并。
3.2 CSMA/CD与CSMA/CA:有线与无线的本质差异
CSMA/CD(载波监听多路访问/冲突检测)和CSMA/CA(载波监听多路访问/冲突避免)是数据链路层介质访问控制的两个核心协议。考试中经常问它们的区别。
核心区别在于:CSMA/CD用于有线网络,可以检测冲突;CSMA/CA用于无线网络,无法检测冲突,只能避免。
为什么无线网络无法检测冲突?因为无线信号的动态范围很大,发送方自己的信号强度远大于接收方信号的强度,如果发送方在发送的同时监听介质,它只能听到自己的信号,听不到是否有其他节点也在发送。这就是所谓的“隐蔽站”问题。
CSMA/CD的工作流程是:先听后发,边发边听,冲突停发,随机重发。具体来说,节点在发送前先监听信道,如果空闲就发送;发送过程中继续监听,如果检测到冲突,就立即停止发送,并发送一个干扰信号,然后等待一个随机时间后重试。
CSMA/CA的工作流程是:先听后发,冲突避免。节点在发送前先监听信道,如果空闲,等待一个帧间间隔(IFS),然后再等待一个随机退避时间,如果这段时间内信道仍然空闲,才发送。接收方收到数据后,发送ACK确认。如果发送方没有收到ACK,就认为发生了冲突,重传。
注意:CSMA/CA的退避机制和CSMA/CD的退避机制不同。CSMA/CD的退避时间是在检测到冲突后计算的,而CSMA/CA的退避时间是在发送前就计算好的,目的是减少多个节点同时发送的概率。
避坑指南:考试中如果问“为什么无线网络不采用CSMA/CD”,标准答案是“因为无线网络无法有效检测冲突”。如果问“CSMA/CA如何避免冲突”,答案是“通过帧间间隔和随机退避”。
3.3 路由算法:距离矢量与链路状态的对比
距离矢量(DV)和链路状态(LS)是两种核心的路由算法。考试中经常要求对比它们的优缺点。
距离矢量算法的核心是:每个节点只知道自己的邻居和到邻居的代价,通过与邻居交换路由表来逐步了解整个网络。它的优点是实现简单,缺点是收敛慢,容易出现路由环路。
链路状态算法的核心是:每个节点通过泛洪的方式获取整个网络的拓扑信息,然后独立计算最短路径。它的优点是收敛快,不会出现路由环路,缺点是实现复杂,需要更多的存储和计算资源。
我打个比方:距离矢量就像你问路,你只知道“往前走100米有个路口”,到了路口再问下一个人。链路状态就像你手里有一张完整的地图,你可以自己规划路线。
| 对比维度 | 距离矢量 | 链路状态 |
|---|---|---|
| 信息范围 | 只知道邻居 | 知道全网拓扑 |
| 交换内容 | 路由表 | 链路状态 |
| 收敛速度 | 慢 | 快 |
| 路由环路 | 容易出现 | 不会出现 |
| 资源消耗 | 低 | 高 |
| 典型协议 | RIP | OSPF |
提示:距离矢量算法中,路由环路的解决方法是“水平分割”和“毒性逆转”。水平分割是指不把从某个邻居学到的路由再发回给那个邻居。毒性逆转是指把从某个邻居学到的路由发回给那个邻居时,代价设为无穷大。
3.4 差错控制:CRC与海明码的分工
CRC和海明码都是差错控制编码,但它们的用途不同。CRC用于检错,海明码用于纠错。
CRC的原理是:发送方在数据后面附加一个校验码,接收方用同样的生成多项式去除,如果余数为零,说明没有错误。CRC能检测出所有单比特错误、所有双比特错误、所有奇数个错误,以及大多数突发错误。
海明码的原理是:在数据中插入多个校验位,每个校验位负责校验一组特定的数据位。接收方通过校验位的值可以定位出错的比特位置,从而纠正错误。海明码的纠错能力取决于校验位的数量。如果校验位有r个,那么可以纠正1位错误,检测2位错误,条件是2^r ≥ m + r + 1,其中m是数据位数。
我举个例子:数据位m=4,需要多少校验位?2^r ≥ 4 + r + 1,r=3时,2^3=8 ≥ 8,刚好满足。所以4位数据需要3位校验位,总码长7位。
注意:海明码只能纠正1位错误,如果发生2位错误,海明码可能会误纠。所以实际系统中,海明码通常和CRC结合使用,海明码纠错,CRC检错。
避坑指南:考试中如果问“CRC能否纠错”,答案是“不能,CRC只能检错”。如果问“海明码能否检错”,答案是“能,但主要用于纠错”。
4. 常见问题速查与考场实战技巧
4.1 计算题常见错误速查表
| 题型 | 常见错误 | 正确做法 |
|---|---|---|
| CRC计算 | 异或后跳过全零步骤 | 每一步都要拉下一位 |
| 滑动窗口利用率 | 混淆发送时延和传播时延 | 发送时延=L/R,传播时延=距离/速率 |
| 子网划分 | 把网络地址和广播地址算作可用 | 可用地址=2^主机位-2 |
| TCP拥塞控制 | 快恢复时cwnd从1开始 | 快恢复时cwnd=ssthresh |
| 距离矢量 | 忘记迭代到收敛 | 直到路由表不再变化 |
| 海明码 | 校验位数量算错 | 2^r ≥ m+r+1 |
4.2 简答题的答题模板
简答题的答题关键是:先给结论,再给理由,最后给例子。比如问“为什么TCP需要三次握手”,你可以这样答:
TCP需要三次握手是为了确保双方都确认了对方的发送能力和接收能力。第一次握手确认了客户端的发送能力,第二次握手确认了服务端的发送和接收能力,第三次握手确认了客户端的接收能力。如果只有两次握手,服务端无法确认客户端是否收到了自己的SYN+ACK,可能导致资源浪费。
这个模板的好处是:结构清晰,阅卷老师一眼就能看到得分点。
4.3 考场时间分配建议
数据通信考试的题量通常比较大,时间分配很重要。我的建议是:
- 选择题和填空题:控制在30%的时间内,不要纠结,不会就跳过。
- 计算题:控制在40%的时间内,每道题先写公式,再代入数据,最后计算结果。即使算不出来,公式写对了也能拿步骤分。
- 简答题:控制在20%的时间内,每道题写3到5个要点,不要写太多,点到为止。
- 检查:留10%的时间检查计算题的单位和符号。
提示:计算题一定要写单位。比如“利用率=80%”比“利用率=0.8”更清晰。如果题目要求保留小数,注意四舍五入。
4.4 复习节奏与心态调整
最后说一点复习节奏。数据通信这门课,突击复习的效果很差,因为计算题需要手感。我的建议是:考前两周开始,每天做5道计算题,保持手感。考前三天,把错题本翻一遍,重点看自己容易犯的错误。考前一天,不要再做新题,把公式和协议流程过一遍就行。
心态上,不要因为一道题不会就慌。数据通信的题目类型是有限的,你只要把上面说的几类计算题练熟,把几个核心协议的流程背熟,及格是没问题的。如果目标是高分,那就需要在简答题上多下功夫,把“为什么”说清楚。
我个人在实际考试中的体会是:计算题的分最好拿,因为答案唯一,算对了就是满分。简答题的分最难拿,因为需要组织语言,而且阅卷老师可能压分。所以复习的时候,计算题要练到“闭着眼睛都能算对”,简答题要练到“看到题目就能列出三个要点”。
这个内容后续还可以这样扩展:如果你对网络协议的实际抓包分析感兴趣,可以找一个模拟环境,用抓包工具观察TCP三次握手和四次挥手的实际报文,对照复习题中的理论,你会发现很多细节是书本上没有提到的。比如TCP报文头中的选项字段,在实际抓包中经常能看到MSS、窗口扩大因子等参数,这些在复习题中通常不会涉及,但理解它们对深入掌握TCP很有帮助。