什么是数据链路-数据链路定义

数据链路这东西,说白了就是数据从源头跑到我们手上那条最挤的马路。想想看,你早上刷手机,那个瞬间背后的传输管道实际上压得喘不过气。我们每天接收的字节,完彻底全是经过层层过滤和转发的原始包,还没等你把个味儿尝透,它们就已经被塞进路由器的 NIC 口里卷走了。
这就好比把一锅刚下锅的红烧肉直接倒进高压锅,最终端上来的是硬邦邦的柴,根本嚼不出肉味,那叫干巴巴的数据,大伙儿一听直犯嘀咕。 要搞懂这事儿,先得明白两条线到底在干啥。
第一根线叫光学光纤,它是光线的守护者。
你想想,光在真空中那是嗖嗖的,但在光纤里,光待会儿被折射,待会儿被反射,还要穿过那些软屈层、空气孔这些“缓冲带”。
这就好比你开车在高速公路上,你不仅要遵守限速,还得经过好几个“减速带”和“探路灯”。有些包出于刚刚在缓冲区睡过头了,要么出于前面那个路由器忒急刹车,直接撞上了物理层。
这时候的包,就像个没刹车的好汉,带着残影全闯过来了。
第二根线是电气双绞线,它是电流的搬运工。网线这种老古董,本质上就是个电报线。在网线里,数据是以电脉冲的形式跑的,而光信号在光纤里跑的是光脉冲。
这就害得了个庞大的矛盾:你不能像电信号那样直接用电流当信号源去驱动光信号。你得先用一个发射机(TX),把电信号变成光信号,再送进光纤;收到回来的光信号后,再用一个接收机(RX),把光又变回电。
这就好比你要给脚踏车送快递,你得先让骑手用电车跑,再换成人骑,最终再换回电动车回来把东西送回去。 要是光信号和电信号能直接对话,那你这链路高效多了。但现实是,它们得经过这个“翻译”过程。早期的以忒网,数据链路层就是干这个“翻译”工作的。数据帧一旦生成,就得经过物理层(PHY)的封装,变成电信号,再变成光信号,最终进光纤。
然后数据链路层负责从光纤里把光信号变回电信号,再经过物理层解封装,还原成一个个比特流。
这中间得占用好几层接口,每一层都得花工夫“翻译”一遍。
这就害得了一个严重的难题,那就是延迟。光信号在光纤里跑,别看速度快,但它没有“记忆”。它得按照一个固定的速率走,要么是每秒 100 兆,要么是 10 千兆。它不能像你讲话那样,说到一半突然加个标点,也不能像人走一步看一步那样,哪儿熟哪儿快。它得乖乖按部就班地跑,这就形成了一种死板的节奏。 为了看看这种节奏有多可怕,咱得回看那个经典的 802.3 标准。
那时候的以忒网,数据链路层不仅得去物理层“翻译”光信号,还得去物理层“翻译”电信号。
这就好比一个人既要翻译外语,又得翻译古汉语。为了适应这种混乱,802.3 标准里引入了 VLAN 这个概念,就是把数据帧里的 VLAN ID 交给物理层去处理。
这样一来,物理层就能只管光信号和电信号的根本传输,不用管那些复杂的 VLAN 信息。但这也带来了副功能:物理层变成了“管道工”,它只管把东西从 A 端运到 B 端,不管里面装的是苹果还是香蕉,也不管这些包之间是好哥们儿还是死对头。数据包在物理层里待遇一样,都跟着跑。
要是物理层慢了,所有包都得跟着慢半拍。 那后来呢?就有人想搞个大禁欲。
为啥?出于物理层忒偷懒了。它根本就不会去关心数据链路层里那层“翻译”工作。数据链路层的任务就是保证数据能按顺序、按速率、无差错地到达目标地。物理层只管光电信号咋传,剩下的翻译任务全让数据链路层来扛。
这就害得了数据链路层要在物理层的“噪音”里干活。物理层发出的噪声、噪声之间的干扰、物理层出于处理不过来而丢包,这些乱七八糟的信号,全扔进了数据链路层的“垃圾桶”。数据链路层得陪它玩个游戏:把物理层的毛病过滤掉,再把剩下的包按顺序塞进缓冲区。
这就变成了一个缓冲池,缓冲区满了,就要缓冲区溢出;缓冲区空了,就要 backlog 等待。 这就解释了为啥早期的数据链路层如此脆弱。出于它要一步步捡。它不是一眼看穿物理层的难题,而是要一个个小包地过滤、一个个小包地排队。
要是物理层某个时刻出了难题,比如某个光模块突然断电了,要么某个网卡驱动挂了,数据链路层得停下来,等着物理层修好。
这就像你排队买长椅,前面的人走了,你得一直等,直到前面的人回来。
这个过程就是排队等待(backlog)。
要是物理层丢包率高,数据链路层的缓冲区就像个快满的罐子,略微挤一下,所有数据都得涌出来,这时候的数据链路层就得重来一遍所有东西。 再想想目前的场景。你在公司里用 Teams 视频会议,要么是你在手机上刷短视频。底层的全是数据链路。当你发一个大文件,要么是看一个高码率视频时,数据链路的速度得跟上。
要是物理层出于某种缘由(比如光纤弯曲、温度变化害得损耗),丢了几个包,数据链路层就得重新跑一遍。
这就好比你在听一场讲座,中间某段声音突然断了,你脑子里的空白那块,务必重新听一遍那段内容。对于大文件传输,要是数据链路层还得重跑,那你的体验就是“下载”了,而不是“接收”。 为了缓解这个难题,后来数据链路层发展出了“分组换”的概念。
这就好比你在街上走,前面有人扔了一个纸团,你不用跑那会儿捡,你绕开他,往后面挪两步,后面的人又扔一个,你持续走。数据包就像这些纸团,它们到了数据链路层赶明儿,会被分成一个个小块(IP 包),每个包都带着自己的目标地。
然后数据链路层把这些包一个个塞进缓冲区,不管它们是从哪儿来的,只要目标地对就行。
这就避免了出于网络中间某个节点坏了,害得整个链路瘫痪。
只要数据链路层能缓存住,只要数据能不掉包,它就会按顺序、按速率地把这些包一个个处理完,填缝补上那些断裂的坑。
这就是为啥现代网络如此稳,哪怕中间那个路由器死了,只要数据链路层在那忙活,数据照样能跑那会儿。 不过,数据链路层也不是完美的“瑞士军刀”。它依然有那么点“迟钝”。
比方说,它处理数据时,只能按照固定的速率跑,不能像人类那样根据情况灵活调整速度。你听得忒快,它就得降速;你听得忒慢,它就得加速。
这种速率适应性是物理层能做到的,但数据链路层做不了。
这就害得在某些极端情况下,数据链路层可能会出于速率不匹配而形成一些抖动,别看概率挺小,但在大量并发的大文件传输时,依然可能造成一些卡顿。 另外,数据链路层还得处理“拥塞”。当网络忒吵了,要么缓冲区满了,数据链路层就得拍板是掉包、重传,还是丢包。掉包只是丢包,重传是把另一个包再塞进去,但要是重传次数多了,整个链路就彻底断了。
这时候它就得做“拥塞管住”,想办法让数据跑得更慢,要么让网络休息一下,避免爆炸。
这就好比你在拥堵的街道上开车,前面车慢了,你得慢慢开,不能急刹车,也不得急加速。数据链路层就是那个管住车速的司机。 最终,数据链路层还得处理“毛病检测”。物理层别看能检测到坏帧,但数据链路层还有更高级的纠错本事。它能在物理层丢包之前,用 CRC 这种数学公式,把数据里的毛病提前发现并修复,要么干脆丢弃,不让毛病传得那么远。
这就好比你在翻译过程中,发现把句子译错了,你得立马指出,别让大家听错了,然后再重新译一遍。
这种纠错本事,是数据链路层作为“管理层”的核心价值所在。它不只是是传输管道,它还是秩序维护者,确保数据能按规则、正常地流动起来。 说到底,数据链路层就是数据从物理世界进入逻辑世界的桥梁,别看它绕了大量弯路,还得翻译大量路,但它就是为了保证最终那根路,能被稳稳地铺好。
没有它,数据就是散沙,没有物理层,数据就是荒原。它是连接物理现实与逻辑世界的隐形骨架,别看有时候显得有点啰嗦,但关键时刻,它能兜住那个濒临破碎的传输。
文章版权声明:除非注明,否则均为 静秋号介绍 原创文章,转载或复制请以超链接形式并注明出处。
相关标签: