那天在机房上机,老师随口问计算机网络的主要性能指标有哪些,我赶紧低头往本子上写,写着写着脑子就混了,总觉得这些名词长得差不多,一会是速率,一会是带宽,来回绕,分不清哪个是用来描述什么的。旁边同学还在敲ping命令测延迟,屏幕上跳出来一串数字,我盯着那个时间,心里还在琢磨,这个数字对应的到底是哪一项指标。
最先记下的是速率。之前一直简单以为就是网速,打开网页快不快全看它。机房里那台旧电脑,下载文件的时候窗口显示的数值忽高忽低,我就下意识把这个跳动的数字当成速率。后来敲代码传文件的时候才留意到,单位写法很容易搞混,比特和字节不是一回事,随手写错一个大小写,算出来的结果差出八倍,那次传一个实验文档,算预估时间的时候算错,白白等了很久。
带宽。
运营商给的套餐数字总被我直接等同于下载速度,很长一段时间都卡在这个误区里。宿舍里四个人同时连一个热点,刷视频、传作业、打联机,明明套餐标的带宽不小,页面加载却半天不动,当时还以为是设备坏了,反复开关无线网卡。后来才慢慢反应过来,这个数值是链路理论上能达到的最高数据传送能力,不是你时时刻刻都能拿到的速度,人多挤占的时候,实际跑起来的数据量会往下掉。
时延是那段时间最容易忽略的一块。之前只知道点开链接要等,却没想清楚等待的时间拆开还有好几个部分。那次做分组转发的模拟实验,数据包从一端发出去,中间要经过好几台交换机,每一段都会耗时间。有的是信号在线路上跑的传播时延,有的是设备收到包之后排队、处理的时间,还有把数据一点点推送到链路上的发送时延。同一个数据包,换一条路由走,总时延差别能很明显,有时候带宽看着充足,时延高了,交互感照样卡顿。
丢包率是在反复测试的时候才留意到的。连续发很多测试包,末尾统计会显示一部分包没有收到。一开始以为是自己操作失误,命令敲错了参数,反复重测好几次,结果还是有少量丢失。助教说链路负载太高的时候,交换机缓存塞满,新来的分组就只能丢掉。丢包多了,上层协议会重新发送,这么一来,原本的传输时间又拉长,整体的体验跟着变差。
吞吐量这个词,我是和带宽放在一起对比着才勉强有点概念。带宽是上限,吞吐量是某一段时间里,这条链路实实在在传成功的数据量。晚上宿舍网络挤的时候,吞吐量远低于标称带宽,等到凌晨大家都休息,链路空闲,吞吐量才会贴近上限。有一次连续记录了半小时的数值,曲线起起伏伏,和宿舍里大家上网的时间刚好对上,那个画面我到现在还有印象。
还有往返时间,平时做网络测试经常会碰到。发一个请求出去,等到收到对方应答的全部耗时。玩联机的时候感受最直观,这个数值高一点,操作反馈就会慢半拍。我之前分不清往返时间和单向时延,总觉得两者差不多,直到实验里分开记录收发两端的时间戳,才看出来往返时间包含了来回两段通路,还有远端主机处理消息的时间,不能简单乘二。
本子上记的名词越堆越多,越往后越不想强行去背定义。好多概念单独拿出来看都能看懂,放到真实链路里就互相牵制。带宽大,不代表时延一定低;吞吐量高,也不代表丢包率就好看。没有哪一个指标能单独判断一条网络好不好用,要看你当下在做什么,是下载大文件,还是需要实时交互。
实验报告交上去的时候,也没有把这些指标整理成干净整齐的条目,只是把自己上机时候看到的现象、踩过的混淆点写了上去。只代表我当时在机房里摸索出来的感受,换别的环境,设备不一样,链路情况不一样,体会肯定不一样。
合上笔记本的时候,机房的灯已经关掉大半。