"软考网络工程师第二章数据通信基础"——这几个字,但凡备考过网络工程师的人都懂它的分量。上午题里那些关于波特率、曼彻斯特编码、CRC、海明码的题目,几乎全出自这一章。很多人第一次复习时被各种公式和概念绕晕,但等你真正吃透就会发现,这一章其实是全教材里最"讲道理"的部分:概念清楚了,公式记住了,计算题就是套模板,选择题基本不会失手。
这篇内容我在备考时反复翻过好几个月,把最容易踩坑的地方、最常见题的解法、以及那些教材里不会明说的复习顺序,一次性整理出来。新手第一遍看书时可以用它当提纲,做真题时也可以用它对答案、找错因。
1. 先认清这一章在考试里到底考什么
1.1 为什么大家都说第二章是"题源"
你有没有做过那种感觉"很基础却又算不出来"的题?比如:
- 一个码元有8种状态,波特率2000Baud,问比特率是多少。
- 带宽3000Hz、信噪比30dB,用香农定理求信道容量。
- 数据101001加上CRC校验后,发送的码字是什么。
- 信息位1100的海明码最后写成几位的二进制。
这些题全部来自数据通信基础这一章。它们有共同特点:题干不长、考点集中、计算量小,只要你概念准确,答案就是唯一确定的结果。这类题在上午卷中属于"固定送分题",复习到位的人能稳定拿到,没复习到位的人只能凭感觉蒙。
所以我不建议你把这章当成"背概念"来学,它更像一门"半数学课"——核心是公式怎么用、条件怎么判断、答案怎么算。弄清楚这一点,复习方向就对了。
1.2 这章的复习边界在哪里
第二章讲的是点对点通信问题,也就是两台设备之间怎么把比特流可靠地传过去。它不涉及路由、寻址、组网,那些是后续章节的事。你可以把这一章想象成"快递公司如何把一件包裹安全送到目的地"的底层作业流程,而后面学的网络层、传输层则是整个物流系统的调度规则。
话虽如此,第二章和后面第三章的广域网内容衔接非常紧密。比如E1/T1载波、帧中继、ATM这些知识点,本质都是复用和交换技术在广域网里的具体应用。第二章学扎实了,第三章很多内容会变得非常顺。
2. 信道、带宽、码元:先把最基础的概念盘清楚
2.1 一条数据链路上的五个要素
数据通信的基本过程可以归纳为五个要素:信源、变换器、信道、反变换器、信宿。
信源就是产生数据的设备,比如一台PC;它发出的是数字比特流。变换器的任务是把这些比特流转换成适合在当前信道中传输的信号——可能是电信号、光信号,也可能是无线电信号。信道就是信号传播的通道,分为有线和无线两类。反变换器负责把收到的信号还原成数字比特流。信宿则是最终接收数据的设备。
我最初看这个模型觉得太简单了,后来才意识到它很重要:后面学到的编码、调制、多路复用,本质上都是"变换器"这个环节在做文章;而差错控制则是保证"信源到信宿"之间即使遇到干扰,也能正确还原数据。整个第二章就是围绕这条链路的发送端和接收端展开的。
2.2 带宽、码元、波特率、比特率——四个词一套公式
这四个词如果不刻意区分,很容易混在一起。它们其实分属两个层面。
带宽说的是信道的能力范围,单位是Hz。带宽越宽,能承载的信号频率越高,信息传输能力越强。这就像一条公路的可通行速度上限越高,单位时间通过的车辆越多。
码元说的是信号层面上的一个基本波形单元。你可以把一个码元理解为一个"装着信息的包裹"。每个包裹里能装多少比特,取决于码元有多少种状态。如果一个码元只有高、低两个电平状态,那就是2种状态,一个码元携带1比特;如果有4种状态,一个码元就携带2比特。
波特率(Baud)是每秒传输的码元数,也叫码元速率。比特率(bps)才是每秒传输的比特数,是真正的信息速率。两者的换算公式是:
比特率 = 波特率 × log2(码元状态数)
举个例子:某线路的波特率是2000Baud,每个码元有8种状态,那么比特率 = 2000 × log2(8) = 2000 × 3 = 6000bps。反过来,如果题目告诉你比特率是6000bps,问波特率,用6000除以log2(8)就得到波特率2000Baud。
这个公式几乎每年都会在上午卷出现,我建议直接把它当成"条件反射"来练。
2.3 奈奎斯特与香农:两条公式千万别混用
这两条公式是第二章最核心的计算题来源,也是最容易出错的地方。
奈奎斯特公式给出的是"无噪声理想信道"下的信道容量上限:
C = 2W × log2(V)
其中W是带宽(Hz),V是码元的离散电平数(状态数)。它强调的是带宽和编码状态数共同限制信道容量。
香农公式给出的则是在"噪声信道"下的信道容量上限:
C = W × log2(1 + S/N)
其中S/N是信号功率与噪声功率的比值。注意:题目给出的信噪比往往是以dB为单位的,必须先换算成比值再代入公式。换算关系是:信噪比(dB) = 10 × log10(S/N)。所以30dB意味着S/N = 1000。
经典题型是这样的:一条带宽为3000Hz的信道,信噪比为30dB,求最大数据传输速率。正确做法是:
C = 3000 × log2(1 + 1000) ≈ 3000 × log2(1001) ≈ 3000 × 9.97 ≈ 30000bps
很多人在这一步偷懒,直接把30当成S/N代入,结果得到约14300bps,差距非常大。考场上看到"信噪比"三个字,第一反应永远是检查单位。
至于什么时候用奈奎斯特、什么时候用香农,我的判断方法是:题目里提到噪声、信噪比,就用香农;题目里提到码元状态数、离散电平数,大概率是奈奎斯特。如果题目既给了电平数又给了信噪比,那就要分别算两个上限并想想哪个才是实际约束,这种题在往年卷子里出现过,属于综合题,碰到也别慌,分开算再比较大小即可。
3. 编码与调制:让数字比特变成能传的信号
3.1 四种必会编码:NRZ、曼彻斯特、差分曼彻斯特
数字数据要在数字信道中传输,最常见的手段是直接编码。软考里最常考的是下面几种。
不归零码(NRZ):高电平表示1,低电平表示0。实现最简单,但致命缺点是接收方没有同步时钟时,连续多个相同比特会出现"不知道从哪里切分"的问题。所以它更适合短距离传输。
曼彻斯特编码:每个比特的中间一定有一次跳变,这个跳变既携带数据又提供时钟。一种常见规定是"从高到低的跳变表示0,从低到高的跳变表示1",有些教材规定相反,考试会说明规则。它的特点是自带同步信号,所以被早期的以太网采用。缺点也明显:一个比特需要两次电平变化,编码效率只有50%。
差分曼彻斯特编码:同样每个比特中间有跳变,但数据的表示方式变成了"比特开始处是否有跳变":有跳变表示0,无跳变表示1(也可能相反)。因为它判断的是跳变的有无而不是方向,抗干扰能力更强。
这里特别提醒:很多资料说"曼彻斯特编码和差分曼彻斯特编码的中间必然有跳变",这句话没毛病。区别在于普通曼彻斯特的跳变方向定了就定了,差分曼彻斯特看的是位开始处。记不住的话就死记一句口诀:普通曼彻斯顿看中间方向,差分曼彻奇顿看开头跳不跳。
3.2 数字数据上模拟信道:ASK、FSK、PSK、QAM
当信道是模拟信道,比如无线信道或电话线,数字比特流就要调制到正弦载波上。四种基础调制方式必须分清。
ASK(幅移键控)用载波幅度的变化表示0和1,实现简单但抗噪声能力弱。FSK(频移键控)用频率变化表示0和1,比ASK强一些。PSK(相移键控)用相位变化表示0和1,抗干扰能力更强,常见的BPSK、QPSK就属于这一类。QAM(正交振幅调制)则同时改变幅度和相位,让一个码元携带更多比特。
考试里最常见的问题是"某种调制每个码元携带多少比特",答案是log2(状态数)。例如16-QAM有16种调制状态,每个码元携带4比特;64-QAM携带6比特。另一种考法是结合波特率算比特率:波特率2400Baud,采用QPSK(4种相位状态),那么比特率 = 2400 × log2(4) = 4800bps。
3.3 模拟信号数字化:PCM的三步走
当要传输的是语音这类模拟信号,但信道是数字信道时,需要先做脉冲编码调制(PCM)。过程分为三步:采样、量化、编码。
采样是每隔一定时间取一个信号幅值,依据采样定理,采样频率必须不低于信号最高频率的2倍。语音信号的最高频率按4kHz算,采样频率就需要8kHz。
量化是把采样得到的连续幅值划分成若干等级,四舍五入到最近的等级。编码则是把量化等级用二进制表示。比如256个量化等级需要8位二进制编码。
于是标准PCM话路的速率是:8000Hz × 8位 = 64kbps。这个64kbps在后来的E1/T1、ISDN等知识里反复出现,是第三章的重要基础。
4. 多路复用:让一条物理线路干更多活
4.1 频分、时分、波分:三种复用方式横向对比
多路复用的核心思想,就是用一条物理线路同时承载多路信号。
频分复用(FDM)让各路信号占用不同的频带,就像收音机里不同电台各占各的频率,互不干扰,适合模拟信号。时分复用(TDM)则是各路信号在不同时间片轮流占用整条信道,适合数字信号。时分复用里又分同步TDM和统计TDM:同步TDM固定分配时隙,某路没数据时隙也空着,浪费;统计TDM动态分配时隙,有数据才给,利用率明显提高。
波分复用(WDM)本质上是光通信里的频分复用,每束不同波长的光就是一条独立通道。考试常出这样的判断:FDM偏模拟,TDM偏数字,WDM用于光纤。记住这条主线,选择基本不会错。
| 复用方式 | 应用场景 | 核心特点 | 主要缺点 |
|---|---|---|---|
| FDM | 模拟信号 | 各信号占用不同频带 | 频带利用率有限 |
| TDM | 数字信号 | 各信号轮流使用时隙 | 同步TDM浪费时隙 |
| WDM | 光纤通信 | 不同波长承载不同信号 | 设备成本较高 |
4.2 码分复用CDMA:一道计算题拆开看
CDMA不按频率分、不按时间分,而是让每个用户使用一个正交码片序列,同时发送数据。接收方通过"内积"运算正确区分出自己想要的那路信号。
软考里的典型题是给出某个用户的码片序列,比如(1, -1, -1, 1, -1, 1, 1, -1),并告诉你发送比特1时直接发该序列,发送比特0时发它的反码。然后让你判断接收到的某个混合向量中,这个用户发送的是0还是1。
做法其实很机械:用目标用户的码片序列和收到的向量做内积(对应位置相乘后相加)。内积大于0表示发送的是比特1,小于0表示发送的是比特0。如果内积正好为0,那说明该用户当前没有发数据或者码片正交。
这种题看起来很吓人,但只要做过两三道,就会发现它考查的不是高深算法,而是内积计算和正负判断。真正容易失分的地方反而是计算马虎,比如把某个比特的符号看反、乘积加错。我建议做完后用"逐对相乘、逐项相加"的笨办法检查一遍,宁可慢半分钟,也别丢一分。
5. 数据交换:电路、报文、分组三兄弟
5.1 电路交换为什么是"独占"
电路交换的流程是:先建立连接,再传输数据,最后释放连接。打电话就是最好的例子。从拨号开始,交换机就在主叫和被叫之间建立了一条专用通路,整个通话过程该通路被独占,哪怕双方都不说话,别人也不能占用这条通路。
这个机制的优点是时延小且稳定,数据按序到达,特别适合实时通信;缺点是建立连接需要时间,而且线路利用率低。考试常把它和分组交换放一起对比,核心就是"独占资源"四个字。
5.2 报文交换和分组交换:存储转发的两种姿势
报文交换不需要提前建立连接,而是把整条报文作为一个整体,在每个中间节点上存下来再转出去,所以叫"存储转发"。由于报文可能很大,中间节点需要很大的缓存,时延也不稳定,现代数据网络基本不再使用。
分组交换是把报文切成一个个小分组,每个分组独立做存储转发。因为分组短,需要的缓存小,传输时延也远低于报文交换,所以成为主流。
分组交换内部又分两种模式。数据报方式中,每个分组独立选路,前后分组可能走不同路径、乱序到达,网络层不维护连接状态,IP网络就是这种思路。虚电路方式则是先建立一个逻辑连接,所有分组沿着同一条虚电路按序到达,虽然也要建连开销,但沿序性好,帧中继和ATM就是典型应用。
考试最爱问"数据报和虚电路的区别"。我的记忆办法是:数据报就像一叠信件各走各的邮路,可能先寄的后到;虚电路就像一支车队统一上高速,前后顺序不会乱。
5.3 为什么现代网络几乎都用分组交换
这里多说一句:电路交换保证质量但浪费资源,报文交换节省资源但时延太大,分组交换在两者之间找到了平衡点——它既不用独占信道,又把传输单元控制得很小,让网络在共享和时延之间做到最优。理解了这个逻辑,碰到"某场景该用什么交换方式"的题目,你就能自己推断,而不是死记结论。
6. 差错控制:传输不靠谱,校验来兜底
6.1 检错和纠错:先搞清楚目的是什么
数据在信道中传输时,噪声可能把比特从0变成1或从1变成0,所以必须有差错控制机制。
检错重发的思路是:接收方发现错误后,要求发送方重新传输。它适合误码率不高的信道,身边的例子就是TCP协议配合ARQ做可靠传输。
前向纠错的思路是:接收方不仅能发现错误,还能直接纠正错误,不需要重传。它适合误码率高或无法及时重传的场景,比如深空通信。这两个目标决定了后面CRC和海明码的设计取向:CRC主要用来检错,海明码则具备纠错能力。
6.2 CRC循环冗余校验:手算一次就不怕了
CRC(循环冗余校验)的原理是:发送方在数据后面附加冗余比特,使整个二进制序列能被生成多项式整除。接收方用同一多项式去除收到的序列,余数为0表示无错,非0则出错。
手算步骤可以这样记:
- 把生成多项式转成二进制。比如G(x) = x^3 + x^2 + 1,转成二进制是1101。
- 在原始数据末尾补r个0,r等于生成多项式位数减1。1101是4位,所以r=3。
- 用模2除法(异或)算出余数。
- 余数就是CRC校验位,拼到原始数据后面。
举个例子:数据是101001,生成多项式是1101。先在数据后补3个0得到101001000,然后用1101做模2除法,余数为010。最终发送的码字就是101001010。
我在备考时经常在第二步出错:补0的个数等于生成多项式的最高次幂数。x^3的生成多项式,最高次幂是3,所以补3个0。如果你写成"补3位",但生成多项式对应的是1001(x^3+1)这种,补零个数仍然是3,千万别被多项式的项数干扰。
6.3 海明码:能定位错误位置的纠错码
海明码比CRC更进一步,它能在接收端发现错误后直接告诉你是第几位错了,从而纠正一位错误。
计算校验位数r使用的公式是:2^r ≥ m + r + 1,其中m是信息位个数。比如信息位有4位,r=3时,8≥4+3+1=8成立,所以需要3位校验。
校验位放在2的幂次位置,也就是第1、2、4、8位。每个校验位负责的位置,由位置编号的二进制表示决定。用信息位1100来举例:
位置安排:位置1、2、4是校验位,位置3、5、6、7是数据位。 位置3填第1个信息位1,位置5填第2个信息位1,位置6填第3个信息位0,位置7填第4个信息位0。
计算校验值: P1负责位置1、3、5、7:1 ⊕ 1 ⊕ 0 = 0 P2负责位置2、3、6、7:1 ⊕ 0 ⊕ 0 = 1 P4负责位置4、5、6、7:1 ⊕ 0 ⊕ 0 = 1
所以最终海明码为0 1 1 1 1 0 0,写成二进制是0111100。
接收方收到后重新计算三个校验位,如果三个校验位全为0,说明无错;如果组合不为0,组合的二进制值就是出错的位置。比如重新计算得到P1P2P4=011,即3,说明第3位出错,把它取反就能纠正。
这个"算出错误位置"的能力是海明码的精华,也是考试的高频考点。我强烈建议你亲手写两三遍这个过程,把校验位的分工彻底搞清楚。第一次算错很正常,多算两次就会发现规律非常机械。
7. 复习阶段的坑与心法
7.1 我在复习时踩过的几个坑
第一个坑是信噪比的单位换算。上面已经讲过,30dB要换成1000倍后再代入香农公式。我最初做真题时,连续两道题都因为直接代入30而算错,一度怀疑自己公式记得不对,翻书才发现问题出在单位上。从那时起,我养成一个习惯:看到"dB"两个字,先在草稿纸上写一行"30dB = 1000倍",再开始计算。
第二个坑是曼彻斯特编码的效率。很多人记住了"每个比特中间有跳变",却忽略了它需要两倍的信号变化次数。如果题目问:10Mbps的以太网采用曼彻斯特编码,信号波特率是多少?答案不是10MBaud,而是20MBaud。这个问题我曾在一套模拟题里见过,当时完全没意识到,差点丢分。
第三个坑是海明码校验位的摆放位置。我第一次做海明码计算时,图省事把校验位放在数据后面,结果怎么算都对不上。后来才意识到校验位必须放在1、2、4、8这些2的幂次位置上。这是规则,不是习惯,不能随意调整。
7.2 针对这章的高效复习顺序
我给这套复习方法起名叫"四层过法"。
第一层,先把概念名词全部过一遍:码元、波特率、比特率、带宽、单工半双工全双工、同步传输异步传输。这些不需要背,但要能用自己的话说清楚。
第二层,把公式全部默写出来:奈奎斯特公式、香农公式、比特率与波特率换算关系、PCM速率公式、海明码校验位公式。默写错了就翻书重来,直到闭着眼睛都能写对。
第三层,把历年真题里的计算题分类整理,亲手算。尤其要重视CRC和海明码,这类题步骤相对固定,练熟之后几乎零失手。
第四层,把容易混淆的概念做成对比表。我自己的表里包含:NRZ和曼彻斯特编码、曼彻斯特和差分曼彻斯特、数据报和虚电路、检错和纠错、TDM的同步和统计。每次考试前一天看一遍,心里就踏实了。
按照这个顺序复习,第二章从"感觉很难"变成"不过如此"其实只需要两周左右的集中时间。我个人感受是,这一章不靠死记硬背,靠的是把原理理解透以后反复练手,练到每个考点都变成肌肉记忆。
最后分享一个小技巧:做计算题时,不管多简单的题,都在草稿纸上把单位、公式、代入过程写完整。你永远不知道考场上的紧张会让自己省略哪一步,写完整既是检查的依据,也是心理上的定心丸。备考路上踩过的坑,说到底大多是"以为自己会了"造成的,把每一步都走实,分数自然就稳了。