你有没有遇到过这种情况:同一个Wi-Fi下,你刷视频秒开,旁边的人打游戏却卡成PPT,他一口咬定是运营商给的带宽不够。可你查了一圈发现,带宽连一半都没跑满,问题其实是时延抖动和丢包率。这种时候你就明白了一个道理:不懂网络指标,连“网卡了”这三个字都描述不准确。
计算机网络这门课,开头讲完定义、组成、体系结构之后,紧接着要面对两个看着不起眼、实际上特别关键的部分——计算机网络的分类和性能指标。它没有TCP三次握手那么热闹,也没有HTTP状态码那么直观,但后面学到的所有协议、所有故障排查方法,几乎全都要用到这套概念。我见过太多人期末复习时跳过这一章,直接啃TCP和IP,结果学到滑动窗口时被“带宽时延积”卡住,又回来补课。与其这样绕路,不如一开始就把这块地基夯实。
这篇笔记适合正在期末复习、考研保研复习、刷计算机网络八股文、或者刚开始学网络基础的同学。我会把“分类”和“性能指标”讲透,既有教材里的官方定义,也有我实际测试网络时的经验和踩过的坑,尽量让小白也能在脑子里建立起一张完整的图谱。
1. 为什么分类和性能指标值得认真学一遍
1.1 一次网络卡顿暴露出来的知识缺口
先讲个真实场景。我读书时帮室友看网络问题,他打游戏跳Ping,经常下一秒就掉线,硬说是宽带套餐带宽不够。我到他宿舍用命令行ping了几次网关,又ping了下公网地址,发现外网丢包率接近10%,RTT忽高忽低,但局域网内延迟一直很稳定。这就说明问题大概率不在运营商带宽,而在链路质量或者路由器本身。他把“带宽”当成了网速的全部,这就是最典型的认知缺口。
计算机网络里的“快”从来不是一个单一指标能回答的。是下载文件快?打开网页快?还是游戏操作响应快?这三种体验背后对应的指标分别是吞吐量、响应时延、丢包率和RTT。如果不懂分类和指标,遇到问题连准确的描述都做不出来,更别提定位了。
1.2 分类和指标是后续章节的“度量衡”
从知识体系上看,计算机网络的分类决定了后面要用什么视角去看协议。比如你学局域网时会遇到以太网、MAC地址、广播帧;学广域网时会遇到点对点链路、路由协议。如果连“局域网和广域网的区别到底是什么”都没概念,后续知识就会搅在一起。
性能指标就更不用说了。TCP的拥塞控制要参考丢包率,滑动窗口设计要参考带宽时延积,网络管理员排查故障要测量RTT和吞吐量。可以说,这一章节是整个专业课的“度量衡”。没有这杆秤,后面所有“性能好不好”的问题都无法回答。所以这篇笔记我会把主干讲清楚,再结合期末高频考题和实际排查场景,帮你把零散概念串成一条线。
2. 计算机网络的分类:同一个网络,从不同角度看完全不一样
2.1 按覆盖范围:从个域网到互联网
最常考、也最好用的分类标准是覆盖范围。这个维度最直观,从小到大可以分成五类。
| 分类 | 覆盖范围 | 典型例子 | 核心技术/场景 |
|---|---|---|---|
| 个域网(PAN) | 个人设备之间,约10米内 | 蓝牙耳机连手机、无线键鼠 | 蓝牙、UWB、ZigBee |
| 局域网(LAN) | 一栋楼、一个园区 | 办公室以太网、家庭Wi-Fi | 以太网、Wi-Fi |
| 城域网(MAN) | 一个城市范围 | 城市有线电视网、电子政务网 | 光纤环网、以太网 |
| 广域网(WAN) | 国家、跨大洲 | 运营商骨干网、跨国专线 | 点对点链路、分组交换 |
| 互联网(Internet) | 全球范围 | 我们日常用的网络 | 各种网络互联成的“网络的网络” |
这里有个很反直觉的考点:局域网和广域网的区别不只是距离和规模,更在于底层技术和协议形态。局域网普遍是广播式、有明确的所有者,物理范围小,延迟很低;广域网更多依赖运营商提供的点对点链路,跨地区转发,协议设计要考虑长距离和不可靠性。你以为“距离远就是广域网”,但考试里常常会给你一个“一栋大楼里的大规模园区网”,规模很大、节点很多,可它本质还是按局域网技术来设计的。
2.2 按拓扑结构:总线型、星型、环形、网状
拓扑这个词听起来抽象,其实就是在问:设备之间用什么样的连接方式串起来。这个维度考得不难,但概念辨析很烦。
- 总线型拓扑:所有设备挂在一根主干线上,早期的以太网就是这么干的。优点是布线简单、节省线缆,缺点是主干线断了全网瘫痪,故障定位还特别麻烦,现在已经不常用了。但有线电视网络在逻辑上仍然是类似总线的共享结构。
- 星型拓扑:所有设备连到一个中心节点(交换机、路由器)上。这是目前局域网的主流形态,布线方便,单台设备出问题不会影响其他设备。缺点也明显:中心节点一旦宕机,整个网络就完蛋。
- 环形拓扑:数据在环上单向传递,每个节点收到后转发给下一个。优点是结构简单、适合某些实时场景,缺点是一个节点坏了环就断了,现在很少有人单独用纯环形做局域网。
- 网状拓扑:设备之间两两相连或者按需多路径直连,可靠性最高,但成本也最高。互联网骨干网、运营商核心网络基本都是网状结构,因为容错性是最优先考虑的问题。
还有一个搞笑但很实用的记法:星型就像蜘蛛网的中心,总线就像一根晾衣杆,环形就像手拉手围一圈,网状就像蜘蛛网本身。画拓扑图的题一般不会难,难的是让你根据应用场景选拓扑。记住一句话:高可靠性、高成本选网状;中心管理、简单组网选星型;预算极低、规模极小可以选总线型;环形在以太网环境下基本不考,重点知道它是“令牌环网”时代的产物就行。
2.3 按交换方式:电路交换、报文交换、分组交换
这一组分类是后面学习数据链路层和网络层的关键,也是考研和期末的常客。三种交换方式的核心差异就三个问题:要不要建立连接?数据要不要拆?节点怎么转发?
电路交换可以类比打电话:先拨号建立一条从A到B的物理链路,通话期间这条线路被你独占,哪怕一句话不说,别人也用不了。优点是延迟低、稳定,缺点是线路利用率低。传统电话网就是电路交换。
报文交换是“整个消息一起寄出去”:节点把完整报文收下来,存储一下,再转发给下一个节点。不需要预先建连,但整个报文在中间设备上要完整存储,对缓冲区要求很高,延迟也不小。
分组交换则是把一大段数据拆成一个个小分组,每个分组独立选择路径,到达后再重组。它结合了前两者的优点:不需要预先建连,线路可以被多个通信实时共享;同时分组比整个报文小很多,中间节点只要存储一小段数据就能转发,排队延迟低、容错性也强。互联网本质上就是分组交换网络。
那为什么分组交换会成为主流?因为现代计算机通信就是突发式的:你刷网页、发消息,大部分时间链路是空闲的,偶尔需要传一坨数据。分组交换通过统计复用把这些空闲时间充分利用起来,让多人共享同一段链路。代价是什么?代价就是分组要在路由器上排队,可能产生排队时延和丢包,而且乱序到达后还得重组。
2.4 其他分类维度:公用网vs专用网、广播式vs点对点
这两个维度相对简单,但考试偶尔以名词解释或选择形式出现。
按使用者分,网络可以分为公用网和专用网。公用网就是运营商向公众提供服务的网络,比如宽带、移动数据网络,大家都能按套餐接入。专用网是为某个机构、公司、单位单独建设的网络,比如银行内部的交易网络、大型企业的内部办公网络,它强调安全性和可控性,物理上或者逻辑上不对外随意开放。
按传输技术分,有广播式网络和点对点网络。广播式网络中,所有节点共享同一条信道,一个节点发数据,其他节点都能收到,局域网早期就是这么做的。点对点网络则是两台设备之间专门有一条链路,数据只在链路两端之间传递,广域网里大量使用这种模式。现在的交换式以太网虽然是星型物理连接,但在发送广播帧时,逻辑上依然会用广播的方式让所有端口收到数据。
3. 速率、带宽、吞吐量:三者之间差了两个字,意义差很多
3.1 速率:标称的发送速度
速率指数据在信道上传输的额定速度,单位是bit/s(也就是bps),偶尔写成b/s。我们常说“100Mbps宽带”“千兆网口”,这里的Mbps就是速率单位。
但这里有个特别容易丢分的单位陷阱:速率单位里,小写k表示10^3,M表示10^6,G表示10^9。也就是说:
- 1 Mbps = 1,000,000 bit/s
- 100 Mbps = 100,000,000 bit/s
- 换算成字节,1 Byte = 8 bit,所以100Mbps的理论下载速度是 100,000,000 ÷ 8 = 12,500,000 B/s,也就是12.5 MB/s。
注意,这里用的是十进制换算。但在计算机存储容量里,1KB往往表示2^10=1024B,K是二进制的。一个是电信领域的十进制,一个是存储领域的二进制,很多复习资料会专门出题来考这个区别。我的建议是:凡是看到“速率”“带宽”“吞吐量”这些网络指标,默认使用10的幂;凡是看到内存、硬盘容量,才考虑1024进制。
速率本身是一个“额定值”,相当于设备的能力上限。比如你家宽带套餐里的“100M”,指的是运营商给你的接入速率是100Mbps,不代表你任何时刻都能跑满。
3.2 带宽:从“频带宽度”到“最高数据率”
带宽这个词比速率更容易让人懵,因为它有两个含义。
在模拟通信里,带宽是指信号占用的频率范围,单位是Hz,比如一条信道的带宽是20MHz,表示它可以通过20兆赫兹范围内的频率分量。在数字通信里,带宽被引申为信道能够传输的“最高数据率”,单位就变成了bit/s。我们常说的“带宽不够”很多时候指的是后者,而不是频率范围。
为什么频率带宽会和数据率扯上关系?这里可以简单理解:信道越宽,单位时间内能承载的信号变化次数就越多,码元速率就越高,数据率也跟着提升。奈奎斯特准则和香农公式从理论和极限两个角度都说明了这一点。所以教材里后来干脆就把“带宽”当成“信道的最高数据率”来用,你用100Mbps的宽带,说“带宽100M”也没人会觉得奇怪。
但在考试里,这个二义性是个送命题。题目可能会给你“某信道频率范围是1MHz到3MHz”,问你带宽是多少Hz,这时候你要用3MHz-1MHz=2MHz,别把它当成2Mbps。
3.3 吞吐量:实际能跑多少
速率和带宽都是“理想值”“上限值”,吞吐量则是“实测值”。单位也是bit/s。
吞吐量受很多因素影响:链路带宽上限、发送端设备能力、接收端CPU处理速度、中间路由器转发能力、当前网络负载,甚至协议本身的确认机制。你办的是千兆宽带,但下载服务器只给你50Mbps,那你的吞吐量就是50Mbps而不是1000Mbps。
我在实际诊断中经常用iperf3这类工具去测局域网内的吞吐量。比如两台电脑连同一台交换机,服务端跑iperf3 -s,客户端跑iperf3 -c 服务端IP,就能直接看到实际能打多少流量。这个数字比任何标称值都有说服力。如果测出来的吞吐量远小于链路带宽,那接下来就该查网线、网卡、驱动、交换机端口协商速率这些环节了。
一句话总结这三个名词:速率是宣称能力,带宽是上限天花板,吞吐量是当下真实成绩。
4. 时延家族:四个成员各自在哪里产生、如何计算
4.1 发送时延和传播时延是两回事
时延是整个性能指标里最容易被搞混的部分,因为中文里都是“时延”,但四个成员的物理含义完全不同。先看两个最核心的:
发送时延,也叫传输时延,是发送端把数据从第一个比特到最后一个比特全部送进信道所需要的时间。公式是:
发送时延 = 数据长度 ÷ 发送速率
它取决于数据有多少、发送速度有多快。比如10Mb的数据,用100Mb/s的速率发送,那发送时延就是10÷100=0.1秒。注意,这个时间和链路长度一点关系都没有,哪怕对面就在你隔壁,发送1秒的数据还是要花1秒发完。
传播时延则是比特在信道上“跑路”的时间。公式是:
传播时延 = 信道长度 ÷ 传播速率
它取决于距离和介质中电磁波的传播速度。电磁波在真空里约3×10^8 m/s,在铜缆里约2.3×10^8 m/s,在光纤里约2×10^8 m/s(大约是光速的三分之二)。2000km的光纤链路,传播时延大约是2000×10^3÷(2×10^8)=0.01秒。传播时延和数据量完全无关,哪怕只发一个比特,也要花这么久才能到对端。
记不住的时候想一个收费站比喻:车队过高速收费站,车一辆一辆交钱通过的时间就是发送时延,它取决于车队车数和收费速度;第一辆车从收费站开到你那里的时间就是传播时延,它取决于路程和车速。两件事互不干扰,但最终到达时间两件事都得算。
4.2 处理时延和排队时延:路由器上的隐藏开销
发送时延和传播时延解决了“发出去”和“跑过去”的问题,但分组交换网络里还有中间的“换乘站”——路由器、交换机等节点。
处理时延是节点对收到的数据做检查、分析首部、查路由表、决定下一跳所花的时间。这部分通常很小,几微秒到几毫秒,但在极端链路里也不能忽略。
排队时延是分组进入节点后,在输出队列里等待被转发的时间。它是最特殊的一个:其他三个时延都是相对固定的,而排队时延是动态变化的。网络越忙、分组越多,排队就越久。你可以想象超市结账:收银台处理每件商品的速度是固定的,但前面排了多少人,决定了你要等多久。如果队伍排到门口,后面的人可能直接放弃(对应分组被丢弃)。
这也就解释了为什么网络利用率太高时,体验会骤降:排队时延不是线性增长,而是在负载接近链路容量时急剧膨胀。这就是后面讲的“利用率不是越高越好”。
4.3 一道例题把所有时延串起来
我把这些概念串进一道期末必考例题里。
题目:发送端到接收端之间是一条直连链路,链路长度2000km,电磁波传播速率2×10^8m/s。数据长度10Mb,发送速率100Mb/s。忽略处理时延和排队时延,求总时延。
发送时延 = 10Mb ÷ 100Mb/s = 0.1s。
传播时延 = 2000km ÷ (2×10^8m/s) = 2000×10^3 ÷ 2×10^8 = 0.01s。
总时延 = 0.1 + 0.01 = 0.11s。
为什么总时延是相加而不是只看较大者?因为最后一个比特要等0.1s才能全部发完,发完之后它还要再花0.01s从链路那头跑到这头。所以从第一个比特开始发送,到最后一个比特被接收,总共是0.11s。
提示:发送时延和传播时延可能会差好几个数量级。传一个很大的文件,发送时延往往占大头;传一个很短的查询请求跨越大洋,传播时延可能才是主要瓶颈。打游戏延迟高,通常就是传播时延和排队时延在作怪,不是你下载速度慢。
如果中间隔一台路由器,而且是存储转发式的,那发送时延会在每一段链路上重复出现。比如数据10Mb、发送速率100Mb/s、两段链路各2000km、路由器处理时延2ms,那总时延就是0.1(发送)+0.01(第一段传播)+0.002(处理)+0.1(路由器转发)+0.01(第二段传播)=0.222s。这个“乘两遍”的细节是很多复习资料里专门设下的陷阱,做题时要看清题目给的是单链路还是多跳网络。
5. 时延带宽积、RTT、利用率、丢包率:这些才是判断网络状态的关键
5.1 时延带宽积:一条链路里能装多少比特
如果说前面的指标是“速度”和“距离”,那带宽时延积(Bandwidth-Delay Product, BDP)就是把速度和路程乘起来,得到“这段管道里最多能同时容纳多少比特”。公式很简单:
时延带宽积 = 传播时延 × 带宽
举个例子:传播时延20ms,带宽100Mbps,那时延带宽积 = 0.02s × 100×10^6 bit/s = 2,000,000bit,也就是2Mbit,约250KB。意思是这条链路上同一时刻最多只能“塞”250KB的数据。
这个指标在TCP中特别重要。如果发送方的发送窗口远小于时延带宽积,那发送方还没把链路填满,就得停下来等ACK,导致链路利用率很低。这就好像一条很粗的水管,但你的水泵每秒只能泵出很少的水,水管再粗也跑不满流量。TCP优化里经常提到“窗口要适配BDP”,指的就是这个道理,这也是为什么高速长距离网络需要用窗口缩放选项。
5.2 RTT和超时重传时间:ping出来的那个数字
RTT(往返时间)是从发送方发送数据开始,到发送方收到接收方的确认,总共经历的时间。这个概念在TCP里比“单程时延”更有用,因为TCP靠确认机制来保证可靠传输,发送方最关心的是“我发出一个包,多久能听到回音”。
RTT包含的成分比单程时延复杂:数据包过去的发送时延、传播时延、处理排队时延,再加上确认包回来的传播和处理时间。所以RTT通常等于“一去一回”的双程时间,而不是单程时延。
你打开命令行执行ping命令,显示的那个时间就是RTT。测试公网地址时,如果RTT在10ms以内说明距离很近,跨省骨干网可能30-60ms,跨洲可能要150ms以上。游戏玩家嘴里说的“延迟”,绝大多数时候指的就是RTT。
RTT还直接影响超时重传时间RTO的设定。RTO如果等于RTT,网络一有波动就会频繁超时重传,反而加剧拥塞;所以RTO一般会设置成略大于RTT,留出余量。这是TCP设计里非常精妙的地方。
5.3 利用率与丢包率:不是越低越差,也不是越高越好
信道利用率是指信道有数据通过的时间占比,网络利用率是全网链路的加权平均利用率。初学者很容易觉得“利用率高就是好”,但网络不是这个逻辑。
利用率和时延的关系是非线性的。当利用率在50%以下时,时延增长很平缓;当利用率接近100%时,排队时延会急剧上升,有点高速公路上车流饱和后一脚刹车就能堵几公里的意思。所以网络利用率维持在较高但不过饱和的状态才是合理的,纯粹追求“越满越好”绝对是个误区。
丢包率则是单位时间内丢失的分组占总发送分组的比例。丢包的原因通常是路由器队列溢出、链路质量差、无线信号干扰等。在TCP里,丢包会触发超时重传和快速重传,严重影响吞吐量。这就是为什么局域网里丢包率一般应该为0,即使无线网络也要控制在低位,如果ping测试发现连续丢包在1%以上,玩游戏基本就能感觉到卡顿。
我在排查问题时的习惯是先看丢包率,再看RTT,最后才看吞吐量。因为丢包率一高,RTT会被重传机制干扰得没法看,吞吐量表观数字也会失真。
6. 期末复习视角:高频辨析点和一张速查表
6.1 五个最容易丢分的辨析点
这套内容在期末和考研里翻来覆去就考那几个点,我把高频坑总结成五个:
- 速率单位里的k是10^3,存储容量里的K是2^10。换算时先看清题目给的是bit还是Byte,是大写B还是小写b。
- 带宽有两个含义:频率带宽(Hz)和最高数据率(bit/s)。模拟通信题里按Hz算,数字网络题里按bit/s算。
- 发送时延取决于“数据量÷发送速率”,传播时延取决于“距离÷介质传播速度”。一个靠数据靠设备,一个靠距离靠介质。
- 时延带宽积的单位是bit,不是bit/s,也不是时间。它衡量的是链路中最大“积压”的比特数量。
- RTT是往返时间,包含双方处理、确认包传播等,不等于单程时延乘以2简单相乘,也不能直接等同于超时重传时间RTO,RTO通常要留余量。
6.2 一张速查表
整理成一张表,复习时直接照着过一遍,基本不会翻车。
| 指标 | 含义 | 公式/单位 | 常见考点 |
|---|---|---|---|
| 速率 | 额定发送速度 | bit/s | 10^3进制换算、bit与Byte换算 |
| 带宽 | 频率范围或最高数据率 | Hz 或 bit/s | 二义性辨析 |
| 吞吐量 | 实际通过的数据量 | bit/s | 小于等于带宽,受多种因素限制 |
| 发送时延 | 所有比特进入信道所需时间 | 数据长度÷发送速率 | 与链路长度无关 |
| 传播时延 | 比特在信道中跑路所需时间 | 链路长度÷传播速率 | 与数据量无关 |
| 处理时延 | 节点分析转发所需时间 | 毫秒级 | 多跳网络累加 |
| 排队时延 | 分组在队列中等待的时间 | 动态变化 | 利用率高时剧增 |
| 时延带宽积 | 链路中最多能容纳的比特数 | 传播时延×带宽,单位bit | TCP窗口设置有关 |
| RTT | 数据发出到收到确认的时间 | ms | 超时重传时间RTO的设定依据 |
| 利用率 | 信道或网络被使用的时间占比 | 无量纲百分比 | 过高→排队时延急剧增大 |
| 丢包率 | 丢失分组占比 | 百分比 | 影响TCP重传和吞吐量 |
6.3 怎么用这套指标体系诊断一次“网卡了”
最后送你一个实战套路。碰到“网络卡”,别急着换路由器,按步骤来:
先ping网关地址,比如192.168.1.1,看局域网内部RTT和丢包。如果这一跳就高,问题多半在Wi-Fi信号、网线、路由器本身。如果局域网正常,再ping公网地址,比如223.5.5.5(国内常用公共DNS)。延迟高、丢包大,说明出问题的是运营商链路或者中间路由节点。再看链路利用率:登录路由器后台或者交换机管理页,看端口流量是否跑满了协商带宽。如果利用率居高不下且时延很大,先查是不是有人在下大文件。最后用iperf3打一下局域网吞吐量,验证实际速率和网卡协商速率是否一致。整套走下来,你用的全是这一章的概念。
我自己学到这里的体会是:指标不是用来背的,是用来对比的。光知道“RTT是往返时间”没用,你拿ping打一次,看到20ms和120ms的差异,马上就能理解为什么跨区游戏服务器比本地服务器难受。纸上公式看着枯燥,一旦和真实数字对上,就再也忘不掉了。
所以如果你也在复习这部分,建议不要死记,打开命令行自己ping一圈,再找个大文件从局域网里传一下,看看实际吞吐量,这些概念就全部活起来了。