【计算机网络】数据链路层(Data Link Layer)

前言:本章作为《计算机网络》系列的第三篇文章,内容主要是向大家介绍数据链路层的内容,引入封装成帧、透明传输、差错控制、数据链路层的流量控制与是否能实现可靠传输、介质访问技术、局域网、广域网、链路层设备等内容(参考资料为b站上点击量最高的两个计网视频——王道&方老师,王道有的地方会讲的不够好,大家可以两个交替看)。


文章目录


1.基本概念

image-20210910100058783

可以把数据链路层理解成“小秘书”,网络层理解成“大BOSS”,当网络层需要数据链路层帮忙传送数据给另一个网络层时,数据链路层会把数据进行编号发送给物理层,物理层特别“傻”,容易把数据弄丢!数据丢失就回来继续找数据链路层要丢失的数据。

image-20210910095706305

image-20210910095423674

1.1 数据链路层的简单模型

image-20210919101217447

image-20210919101233909


1.2 数据链路和帧

image-20210919101254579

image-20210919101316275

image-20210919101337114


2.封装成帧与透明传输

数据链路层三个基本问题

image-20210919101410255

2.1 封装成帧

就是加将数据加头加尾,相当于将数据打包

image-20210910095835835

image-20210919101511632

image-20210919101524400


2.2 透明传输

就是为了防止特殊的数据无法正常传输的的情况的发生,比如说在封装成帧的过程中出现数据中的某些标记符与开始/结束标记符恰巧重复等等情况。

image-20210919101547652

image-20210910100459625

解决方法如下:

2.2.1 字符计数法

前面一个字符传递出现错误,会导致后续全部错误。

在帧的首部做计数,看看数据是否错误
缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧
比如3 1 1 和 4 2 2 2,如果前面的帧丢失变成 3 1,那么后面的4就会被补到前面变成 3 1 4导致错误

image-20210910100654025

2.2.2 字符填充法

加头加尾分别标记开始结束,和零比特填充法对比,开始和结束的对应的字符不一样
但有可能出现数据内某段比特流数据正好与标记字段重复,从而导致误判断的情况,所以会加转义字符。

image-20210910165310157

image-20210910101340074

image-20210916222600790

练习题

image-20210916222803707

答案:7E FE 27 7D 7D 65 7E

2.2.3 零比特填充法

image-20210910101612202

image-20210916221946840

练习题

image-20210916222931013

答案:两个,只要遇见连续的五个1,直接插入一个0.

2.2.4 违规编码法

因为曼彻斯特编码只使用高-低,低-高来表示,所以如果使用高-高,低-低来表示帧起始和终止就不会与数据冲突

image-20210910101907880


3.差错控制

3.1 差错从何而来?

数据链路层的差错检测的是比特的错误

image-20210910173921753

image-20210919101658898

image-20210919101715512


3.2 差错控制

image-20210910174809633

3.2.1 奇偶校验码

缺点:只能检测出1,3,5,7…等等奇位数错误,检测成功率位50%

image-20210910184046559

3.2.2 循环冗余码CRC

除数是随机生成的,得出的余数FCS最终再加到源数据M上,再除一次,除得尽就认为没问题。

image-20210919101815763

image-20210919101825753

image-20210919101837025

image-20210919101847929

冗余码计算举例

image-20210919101916084

image-20210919101934163

image-20210919101951106

image-20210919102011418

就是用传输数据除以生成多项式得到冗余码

这个除法有点类似于异或运算哦!

image-20210910185549731

1.阶数就是最高位是哪位,然后位数-1,如10011就是5-1=4,1011就是4-1=3
2.异或运算就是相同得0,不同得1,比如100和101做异或,结果就是001
3.出书和最后的余数添加到要发送的数据后面,称为帧检验序列FCS

image-20210910185917300

image-20210910190117725

3.2.3 纠错编码(海明码)

分为四步

第一步 确认校验码位数r

image-20210911115712621

第二步 确定校验码和数据的位置

1.为什么是10为数据位?因为4位校验码+6位信息位=10位
2.校验码放到2的几次方的位置,其他的地方按顺序放已知的信息位

image-20210911115742584

第三步 求出校验码的值

1.先是通过二进制位确定有几位。本题中因为最大位10的二进制是101 0,所以是4为,将其标注
2.然后从p1开始看,看p1的二进制位的数值和所有信息位的对应位置的数值是否相同,然后找出来这些位
这里有点难理解,这里以p1为例辅助理解,这里找出来的就是P1,D1,D2,D4,D5
然后计算异或值,比如说这里D1=1,D2=0,D4=1,D5=0,就是p1要同时和0,1,0,1进行异或之后得到0,为了标识我加粗原始计算数据
举例:0和1异或得1,1和0异或得1,1和1异或得0,那么p1和0异或得0,p1就是0了
3.其他同理,按顺序计算出P2,P3,P4,然后填入表格

image-20210911115632893

第四步 检测并纠错

就是和上面一样,将所有校验位进行运算,得出的结果的值就是错误的位。

image-20210911120402143


3.3 是否为可靠传输?

可靠传输是不重复、不丢失、不失序!

这里CRC可还差远啦!

image-20210916213204449

image-20210916213219220

3.4 思维导图:

image-20210911120434626


4.数据链路层的流量控制和可靠传输

4.1 流量控制与可靠传输

流量控制是为了让传输过程中的发送速度和接受速度匹配,减少传输出错与资源浪费
可靠传输是发送端发送什么,接收端就要受到什么

image-20210911222257515

image-20210912105111750

image-20210912105229165

image-20210912105450077


4.1.1 停止等待协议(Stop-and-Wait)

image-20210912111323743停止等待协议的无差错情况

因为一次就一个,所以用0和1标记ack就行

image-20210912111534721

停止等待协议的有差错情况

1.数据帧丢失或接受端检测出错

image-20210912111836240

image-20210912111942675

2.ACK丢失

image-20210912112102880

3.ACK迟到

image-20210912112350321

停止等待协议的优缺点

1.简单
2.信道利用率低。大部分时间数据都在路上,发送方很 长时间闲置,资源浪费。

image-20210912112543791

补充知识点信道利用率

image-20210912112726944


4.1.2 后退N帧协议(GBN)

因为停止等待协议太浪费时间了,所以尝试采用GBN,发送连续多个数据帧,以增大信道利用率。
累计确认:就是收到一个确认帧,那么它和它之前的所有帧都默认已收到,反之,如果某个确认帧没收到,那么它和它之后的所有帧都默认丢失(即使收到了也丢掉),进行重传。

image-20210912113955295

image-20210912114223408

实例
此图发送2帧时丢失,所以接收方几首收到后面的帧也是直接丢弃并且发送最晚收到的有效帧1的ACK,直至2帧的超时重传机制被触发进行重传并得到ACK之后,接收方才会接受2帧以及后面的帧。

image-20210912120624118

为什么发送窗口不能无限大?

比如我们发送“01230123”,当前边的0123发送失败,接收方又接收到了0123时,这时候接收方是无法辨别此时这个0123是前边的还是后边的。
GBN的优缺点也显而易见,优点是提高了信道利用率,缺点是因为重传机制的原因导致已经收到数据却需要强行丢弃而造成浪费。

image-20210912121544719

GBN重点总结

image-20210912122224945

练习题

image-20210912122415774

GBN协议的性能

image-20210912122704946

思维导图

image-20210912122644289


4.1.3 选择重传协议(SR)

image-20210912124742438

image-20210912123822547

为了解决GBN的缺点,我们打算尝试只重传错误的帧,这样的话就不用浪费资源吧已经收到的帧再重传一次了。
和GBN相比,两者都有窗口了,和GBN的区别其实就是做了一个数据缓存,已经收到的帧不用扔了,等待之前因意外丢失的帧收到的时候确认即可,但是只能缓存窗口尺寸内的包含的帧(PS,缓存咋可能无限大)
SR运行过程
注释:2帧丢失之后仍然在发送,但是2帧丢失之后只是缓存,并没有移动窗口,直至最后2帧收到后一次性确认2-5帧

image-20210912190439527

同样的,因为编号的问题,发送窗口不能无限大
发送窗口最后和接受窗口大小相同,这样利用率比较高

新帧和旧帧计算机分不清!

image-20210912191112106

SR重点总结

image-20210912191309300

练习题

image-20210912191528087

思维导图

image-20210912191547880


5.介质访问控制技术

就是让节点之间的通信不会进行相互干扰

这里稍微提一下总线型和星型(看见b站弹幕上有人认为这俩种一样),对于总线型,只要总线的某一处断开连接,后面所有节点的连接均会受到影响,而对于星型,某一处节点的连接断开并不会对其他路线产生影响。

image-20210912192429477

介质访问控制

image-20210912193000342


5.1信道划分访问介质

虽然使用一条共享信道,但是通过多路复用技术组合进行传输,提高了信道的利用率

image-20210916170340438

image-20210912193205640


5.1.1频分多路复用FDM

image-20210912193539350


5.1.2时分多路复用TDM

可能造成资源浪费

image-20210919092200907

image-20210912193824637

image-20210916170748364

统计时分复用STDM(TDM的改进版本)

TDM的缺点就是利用率低,所以又衍生出了STDM

STDM的原则是先到先走,满了就发,相对于TDM提高了利用率

image-20210919092239403


5.1.3波分多路复用WDM(了解即可)

实际就是光的频分复用,因为借助了光,所以叫波分复用。

image-20210919092257798

image-20210912194857749


5.1.4码分多路复用CDM(重点)

image-20210912201632134

image-20210919092315951

CDM这块王道网课当中讲得很不清晰(建议大家去看方老师的讲解),这里放上教材里的内容以便读者理解。

image-20210912203355544

image-20210912203615021

image-20210912203638268

image-20210912203654800

image-20210912203716511

image-20210912203531034


补充方老师版本的内容:

码片

image-20210919092348748

image-20210919092412035

image-20210919092426473

CDMA工作原理

image-20210916191641423

简单来说就是“我”本身去和混合后的码片序列求内积,

得到规格化内积结果为1,说明混合码片序列中有“我”本身;

同理,规格化内积结果为-1,说明“我”发送了本站反码(相当于发送比特0);

规格化内积结果为0,则“我”没有发送;

单个比特分解的码片数越多,就能构成越多的正交码片,就能让更多的用户共享同一信道。

练习题

image-20210916183532163

思路:直接把选项带入分别和码片序列求规格化内积。

答案: 1 、0、无、1


5.2 随机访问介质访问控制

所有用户都可以随机发送信息,发送时可以占用全部带宽,理论上个人使用时比静态分配信道的速度更快

5.2.1 ALOHA协议

比较“无脑”,随性发送,错误就重发

纯ALOHA协议缺点:太随性,导致效率低

image-20210912205813555

改进版本 时隙ALOHA协议

相对于纯ALOHA协议就是固定了发送的时间(只能在一个时间片的开始),提高了效率

image-20210912210112141


5.2.2 CSMA协议

image-20210912211257471

1-坚持

image-20210912211236840

非坚持

image-20210912211444428

P坚持(P是人为设定的,无需纠结)

image-20210912211802692


三种协议对比:

(b站上网课关于P坚持有错误,所以这里放2021版教材当中的最新修正内容)

image-20210912211535097

image-20210912213416580


5.2.3 CSMA/CD协议

image-20210919102802215

image-20210919102811535

image-20210919102821020


引入:以太网采取的两个措施

image-20210919102836098

image-20210919102851566

image-20210919102939866

image-20210919102956302


CSMA/CD协议含义

image-20210919103010298

image-20210919103021232

就是因为链路实际有长短,发送数据需要时间,这个时间内可能就被其他节点当成空闲状态导致发生碰撞
知道自己发生碰撞的最长时间是2τ(两倍的传播时延),就是一去一回。

image-20210913163809156

image-20210919103341531


为什么要进行碰撞检测?

image-20210917085743455

传播时延对载波监听的影响

image-20210913165349104

image-20210917093801129


如何确定碰撞后重传时机?

image-20210913170522516

练习题

image-20210913170803379

最小帧长问题

image-20210913171343912

image-20210917104810713

image-20210917104843981


CSMA/CD协议要点

先听后发,边听边发,冲突停止,延迟重发.

image-20210917105021498

image-20210917105037490


5.2.4 CSMA/CA协议

image-20210913172414283


协议工作原理

image-20210913193914268


5.2.5 CSMA/CD 与 CSMA/CA的区别

image-20210913194141439


5.3 轮询访问介质访问控制

主要包括两大类,一个是轮询协议,另一个是令牌传递协议

5.3.1 轮询协议(了解即可)

就是选出一个代表,让他控制所有的传输。
轮询开销在随着服务的节点越多,需要用于查询是否发送数据发送的数据帧也就越多,会造成一定开销。
等待延迟就是因为这是轮流“邀请”,所以难免某个节点需要发送数据,但是主节点还在较远的需要里有需求的节点那边,导致需求得不到立即响应
单点故障很好理解,就是代表挂了。

image-20210913215522175

image-20210913220042255


5.3.2 令牌传递协议(重点内容)

在节点之间没有收发数据的需求时,令牌在节点之间循环。
发送数据的流程
1.当一个节点需要时就可以获得这个令牌。然后修改这个令牌的状态(空闲->占用)
再将令牌与数据帧结合,让其在节点构成的环之间流动。
2.不是目的地的节点收到令牌也不接受,直接略过,目标节点收到信息并复制一份到本地(传输完成),因为是个闭环,所以发送节点最后得到令牌。
3.最后,发送令牌的节点对令牌的内容进行检查,如果发现数据出错还要重新发一遍。
问题基本和轮询协议相同。

image-20210913221932615

总结

image-20210913222029557


6.局域网

6.1 局域网的概念

概括:范围大小,速度快,延迟低,节点平等。

img

6.1.1 局域网的网络拓扑结构

常用的是总线型拓扑

在这里插入图片描述

6.1.2 局域网的传播介质

image-20210914122848800

6.1.3 局域网介质访问方法

image-20210914123146856


6.2 局域网的分类

image-20210914123431336


6.3 以太网的两个标准

image-20210919102600105

IEEE802标准(记住划线的四条就行)

在这里插入图片描述

6.3.1 链路层的两个控制子层

image-20210914124017676

MAC层更接近物理层,LLC更接近网络层。

那么在我们的网络当中什么样的设备用到了数据链路层、MAC子层、LLC子层或者物理层?

答案:适配器

image-20210919102625620

image-20210919102640172


6.4 以太网

6.4.1 概念

image-20210914124742486

image-20210914124946003


6.4.2 发展

image-20210914125210661

从最早的总线形式,换成了星型结果(从同轴电缆到双绞线)。

image-20210917105730341


6.4.3 10BASE-T以太网

image-20210917105945994

image-20210914134044041


6.4.4 适配器与MAC地址

image-20210914133016352


6.4.5 以太网MAC帧

1.这里的mac层指的是数据链路层

image-20210919104253266

image-20210917111747807

image-20210919104316167

2.之前说过数据链路层将上一层ip数据包加头加尾

头就是目标地址(6字节),源地址(6字节),类型(2字节)
尾就是FCS(帧检验序列),(4字节)

3.前导码不是MAC帧的一部分?

目的是使时钟同步

4.为什么数据长度时46~1500?

因为有最小传输字节64字节,mac占用6+6+2+4=18,所以数据最小为64-18=46,1500则是规定的默认最大字节,记住就好。

前边是前导码

image-20210914133439485

image-20210914133815228

MTU最多是1500字节。

以太网MAC帧的帧头+帧尾=18字节,所以IP数据报的最短字节就是64B-18B=46B,64B来源于上文推导出的以太网最短帧长为64B。

5.无效的MAC帧

image-20210917124011375


6.4.6 高速以太网

image-20210914134243081

image-20210917210502905

6.4.7 以太网信道利用率

image-20210917110721375

image-20210917110748175

image-20210917111056905

6.4.8 信道利用率的最大值

理想情况下不存在争用期,只有占用期。

image-20210917111301381

image-20210917111336711

练习题

image-20210917125550599

我们之前以太网计算的最短帧长64B是根据数据率10Mbit/s,得出的,这里已经达到千兆,不要混淆啦!


6.5 无线局域网( IEEE802.11 )

image-20210914134655657

在这里插入图片描述

在这里插入图片描述


6.5.1 无线局域网的分类

6.5.1.1 有固定基础设施

image-20210914135821737

这里的服务集可以简单当成路由器WiFi

image-20210914140002742

6.5.1.2 无固定基础设施

image-20210914140100716


7.广域网

7.1 广域网的概述

image-20210914140251085


7.2 PPP协议(Point-to-Point Protocol)

PPP协议是目前使用最广泛的数据链路层协议,拨号基本都是PPP协议。
PPP协议仅支持全双工链路。

image-20210919102041528

image-20210914140619381

7.2.1 PPP协议需要满足的要求

image-20210914140947032

7.2.2 PPP协议不需要满足的要求

image-20210919102105489

7.2.3 PPP协议组成成分以及功能

image-20210914141332250

PPP协议为什么不需要使用序号和确认机制?

image-20210919102459924

PPP协议的状态图

image-20210914141410378

7.2.4 PPP协议的帧格式

image-20210919102208945

image-20210914141647568

7.2.5 PPP 协议采用零比特填充方法来实现透明传输

image-20210919102423812

image-20210919102432581


7.3 HDLC协议(High-Level Data Link Control)

7.3.1 HDLC协议概述

image-20210914141805528

7.3.2 HDLC的三种站

image-20210914141947868

7.3.3 HDLC的帧格式

在这里插入图片描述

7.3.4 PPP协议和HDLC协议对比

image-20210914142530633


7.4 思维导图

image-20210914142659499


8.链路层设备

8.1 集线器(Hub)

可以扩展以太网,但是集线器会无脑将一个设备的所有消息转发到集线器所连的所有设备,故会将所连接的所有设备变成一个大的冲突域,同时只能有两台设备进行通信,且设备越多,冲突越多。由此诞生了网桥。

image-20210914143222286


如何在物理层扩展以太网?

用集线器

image-20210917131309902

如何在数据链路层扩展以太网?

网桥或交换器

image-20210919103610205

image-20210919103624808

8.2 网桥(Bridge)

使用网桥时,由于网桥会根据mac地址进行过滤,所以不会形成冲突域

image-20210914144354606

8.2.1 两种网桥

8.2.1.1 透明网桥

通过自学习来构建转发表。每一个通过网桥的数据包都会被记录下网桥收到数据时数据对应的地址和网桥自己的接口,通过许许多多的数据包的构造的缓存,网桥就可以知道哪个数据包在哪个接口,以后如果要穿数据包就知道要往哪个接口发送数据包了。

image-20210914145138571

8.2.1.2 源路由网桥

在发送时,直接将最佳路径放到帧首部。那么网桥如何获得最佳路径?通过广播方式想目标地址发送广播,此时可能会经过不同路由产生不同的路径,目标地址收到后再将每一条路径都发一个响应帧给网桥,网桥经过对比就知道哪个接口最快了。

image-20210914150843768


8.3 交换机

8.3.1交换机的特点

image-20210919103645505

image-20210919103701578

image-20210919103713609

8.3.2 交换机的交换方式分类

image-20210919103801474

8.3.3 交换机的优点

image-20210919103733818

image-20210919103742047

8.3.4 以太网交换机的自学习功能

MAC接口1收到A的信号,对应的MAC地址是A,交换机可以倒推出A是连在1接口上的。

同理B3,C2,D4。这样有了记录后续就不需要广播!

image-20210919103820316

image-20210919103834937

image-20210919103854097

image-20210919103904037

image-20210919103913161

交换机的自学习和转发帧步骤归纳

image-20210919103926923

image-20210917134725232

image-20210917134736125

8.3.5 交换机使用了生成树协议

每转一圈,“广播包”的总数量就增加一次,可能会发生“广播风暴”。

image-20210917204007002

这么解决无限制循环的问题?

答案:把循环中某一逻辑接口截断,把环状结构变成树状即可。

image-20210919104119486


8.4 虚拟局域网

物理位置上连在一个交换机上,就组成局域网;不是连在一个交换机下,也可以组成虚拟局域网。

image-20210917205045877

image-20210917205102930

如下构成三组虚拟局域网

image-20210917205337447

A、B、C虽然连接在同一个交换机下,但是数据练链路层受限,他们不能直接通信。

image-20210917205453041

image-20210917210012557

8.5 冲突域和广播域

image-20210914151447885

练习题

image-20210914152336571

广播域的判断很简单,只需要看下图中有没有路由器,如果有一个路由器,然后左边一个网络,右边一个网络,那就是两个广播域,但是咱们图中没有出现路由器,所以就是一个广播域。

与以太网交换机连接的链路层设备,每个都是冲突域,所以4个。


9.本章知识点思维导图

img



计算机网络的数据链路层部分到此介绍结束了,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连(点赞、收藏、关注)——做个手有余香的人。

评论 114
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林慢慢脑瓜子嗡嗡的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值