数据链路层

数据链路层的功能
- 为防止在传输过程中帧丢失,在可靠的数据链路层协议中,发送方对发送的每个数据帧设计一个计时器,当计时器到期而该帧的确认帧仍未到达时,发送方将重发该帧。为保证接收方不会接收到重复帧,需要对每个发送的帧进行编号:海明码和循环冗余检验码都用于差错控制。
- 对于信道比较可靠且对实时性要求高的网络,数据链路层采用无确认的无连接服务比较合适
- 数据链路层的标准协议有HDLC,PPP,SLIP(ICMP是网络层协议)
组帧
- 字符计数法是指在帧首部使用一个计数字段来记录该帧所含的字节数(包括计数字段自身所占用的1个字节)
字节填充法使用特定字节来定界一帧的开始与结束,eg:SOH表示开始,EOT表示结束
零比特填充法使用一个特定的比特串 01111110 来标志一帧的开始与结束(每遇到5个连续的“1”,就自动在其后插入一个“0”)
违规编码法eg:曼彻斯特编码方法将数据比特“1”编码成“高-低”电平对,将数据比特“0”编码成“低-高”电平对,而“高-高”电平对和“低-低”电平对在数据比特中是违规的(即没有采用),因此可借用这些违规编码序列来定界帧的开始与结束
差错控制
- 奇偶检验码是奇检验码(数据中1的个数是奇数)和偶检验码(数据中1的个数是偶数)的统称
- 循环冗余码:双方约定一个多项式eg:
,发送方把数据后边补上三个零(最高次项的次数)除以这个1101,然后把余数附加到数据后边发出去;接收方把收到的数据除以1101,如果没有出错那么刚好除尽
循环冗余码(CRC)是具有纠错功能的,只是数据链路层仅使用了它的检错功能 - 海明码:以0~15为例
0:对整个盘面进行纠错;
1:对1,3,5,7,…,15进行纠错
2:对2,3,6,7,10,11,14,15进行纠错
4:对4,5,6,7,12,13,14,15进行纠错
8:对8~15进行纠错;
海明码很像二分法,8对一半进行纠错,4对一半的一半进行纠错,2对一半的一半的一半进行纠错… - 海明码码距,晕,我实在是搞不懂了,死记硬背吧
“纠错”d位,需要码距为 2d+1;“检错”d 位,需码距为 d+1。
- 计算增加冗余信息位的位数:
m:数据位的位数;n信息位的位数;
流量控制与可靠传输机制
- ARQ(Automatic Repeat reQuest,即自动重传请求协议)分为三种:
停止等待协议(SW,Stop-and-Wait):发送一个数据帧,接收一个确认帧;
后退N帧(Go-Back-N):发送N个数据帧,接受一个确认帧;
选择重传(Selective repeat):发送多个数据帧,接受多个数据帧,对每一个数据帧进行确认,此外对于出错的数据帧接收方还会发送NAK否定帧
这三分协议都依赖确认和超时重传(发送一个数据帧启动一个计时器,在规定时间内没有收到确认帧就重传)两种机制后两个还要满足两个条件:
1.发送窗口接受窗口(要不接受窗口永远填不满)
2.发送窗口+接受窗口(n:帧编号的比特数)(因为帧编号是重复利用的,如果大于该值就会出现帧编号重复的数据帧)
eg:若发送窗口的大小为32,则至少需要6bit序列号协议才不会出错
发送方发送012345670123,先发送了012345,接收方也接受到了012345,然后发送确认帧5,期待接受670,但是这时候网络不好,发送方没有收到确认帧,然后决定超时重传012345,坏处来了,这个0和接收方想要的0不是一个0
Tips:算数据传输速率的时候可以直接把分子列为每帧中的数据长度
介质访问控制
- 复用方式:
频分复用(FDM,Frequency Division Multiplexing):在一条信道上划分多个频带范围,每个频带之间还要有一定的频带隔离范围,防止互相干扰;
时分复用(TDM,Time Division Multiplexing):把一条信道的传输时间划分时间片,每个用户的数据帧间隔传输;
时分复用分为同步和异步(统计),前者是固定的时间片,后者是动态地划分时间片
波分复用(WDM,wave):就是光的频分复用;
码分复用(CDM,Code Division Multiplexing):不同的信号采用不同的编码,既共享频率又共享时间
码分复用时,各个站点的码片序列必须两两正交
eg:
通过码分复用恢复出原始信号的实例:
我不理解为啥通过与原始码片序列做内积运算就可以恢复出结果,死记着算了
- 频分复用适合传输模拟信号,时分复用适合传输数字信号,所以现代网络中时分复用用的更多,解释
- 随机访问介质访问控制协议(好拗口):
- ALOHA协议:
- 纯ALOHA协议:随时就可以发送数据,如果没有收到确认就说明发生了碰撞,等待一段时间后再发送;
- 时隙ALOHA协议:同步各站点的时间,把时间划分成一段段时隙,规定每个站点只能在时间段开始时才能发送数据
(夏威夷大学发明的,全称也不帮助记忆理解,不写全称了)
- CSMA协议(Carrier Sense Multiple Access,载波监听多路访问):
- 坚持CSMA:一直监听信道,信道空闲就发送数据;
- 非坚持CSMA:监听到信道忙就放弃监听,等待一端随机的时间后再监听;
- p-坚持CSMA(只适用于TDM信道):一直监听信道,信道空闲等待以概率p发送数据,1-p的概率在下一个时间段发送数据
- CSMA/CD协议(Carrier Sense Multiple Access with Collision Detection,载波监听多路访问/碰撞检测):先听后发,边听边发,冲突停发,随机重发;
CSMA/CD 协议中定义的争用期是指信号在最远两个端点之间往返传输的时间。10Mb/s和100Mb/s的以太网中的争用期被定义为64B的发送时间(解释)
eg:
一个站点到hub是100米,两个站点之间是200米,一来一回400米; - CSMA/CA协议(Carrier Sense Multiple Access with Collision Avoidance载波监听多路访问/碰撞避免):先监听信道,等到信道空闲的时候设置一个随机退避值(期间如何信道再忙起来就暂停计时),退避时间结束站点发送数据 ,接受方收到数据后发送ACK确认帧,接收方没有收到确认帧的话就按照上述规则再重发一遍;
- ALOHA协议:
- 情景假设:设备A想向设备B发送数据
设备A首先向设备B发送RTS(Request To Send)帧表示请求发送数据;
恰好此时多个设备同时尝试发送数据,然后采用二进制指数退避,设备A在等待了一段时间后(信道忙就计时器暂停),重新发送RTS帧;
设备B受到了RTS帧后回复CTS(Clear To Send)表示允许发送;
其他设备接收到了RTS帧或者CTS帧后就知道这俩设备要预约信道了(预约信道并不是 CSMA/CA 的强制规定,在普通模式下不进行预约信道。) - DIFS,PIFS,SIFS帧间间隔的作用场景:
在上述情境中,设备A在向设备B发送RTS帧之前等待DIFS段时间,以后传输数据时,每帧之间间隔SISF(short ISF)段时间
如果是点协调的场景下,AP(Access Point,开热点的手机,家里边的WIFI,5G信号塔都是AP)在PIFS段时间下发送RTS帧;DIFS>PIFS>SIFS;
- 二进制退避算法:从[0,
]里随机选一个数 超出10次以外的冲突就不算了,要是算的话,要等到猴年马月去了,也就是说k=min[k,10];
- 令牌环网络:
令牌环网络的结点只能在一定时间内(令牌持有时间)发送数据,不能一直持有令牌,并且如果结点没有数据传输时要迅速把令牌传递下去 - 以太网的最小帧长是指在争用期这一段时间内发送数据的长度,也就是说,最小帧长是数据填满信道一来一回的长度,第一个bit刚刚回来,最后一个bit刚刚发出
- 无线局域网不使用 CSMA/CD 而使用 CSMA/CA 的原因是,无线局域网难以实现冲突检测,存在隐蔽站和暴露站问题
局域网
局域网的类型:
以太网:逻辑拓扑结构是总线形,物理拓扑结构是星形;(适用范围最广)
令牌环:逻辑拓扑结构是环形,物理拓扑结构是星形;
FDDI:逻辑拓扑结构是环形,物理拓扑结构是双环形;局域网只对应于OSI参考模型的数据链路层和物理层,并且将数据链路层拆分为两个子层:逻辑链路控制子层(LLC)和介质访问控制子层(MAC);
现在以太网几乎是局域网的代名词,所以现在LLC子层作用已经不大,现在许多网卡仅装MAC协议而不装LLC协议以太网中所有计算机共享一条总线,信息以广播的形式发送,并且使用CSMA/CD方式对总线进行访问控制
以太网采用两种方式简化通信无连接的工作方式:- 不对发送的数据帧编号,又不要求接收方发送确认;
- 发送的数据都使用曼彻斯特编码的信号,每个码元的中间出现一次电压转换,接收方利用这种电压转换方便地将位同步信号提取出来。
广播式网络通常是局域网的通信方式,这种方式共享信道,只工作在数据链路层,不会涉及路由选择的问题
放大器是用来加强宽带信号(用于传输模拟信号)的设备(大多数以太网采用基带传输);中继器是用来加强基带信号(用于传输数字信号)的设备。
在同一个局域网中,两个设备具有相同的 MAC 地址
若这两个设备通过交换机相互发送帧,则根据交换机的原理,目的 MAC 地址等于本机 MAC 地址的帧将被交换机丢弃。
当其他设备向这两个设备中的一个发送帧时,另一个设备也收到帧,而网卡在与本机 MAC 地址比较后,都认为是属于自己的帧。因此,导致这两个设备无法正常通信。以太网 MAC 帧的数据载荷部分的长度必须在 46 字节和 1500 字节之间,若小于 46 字节,则需要填充字节来达到最小长度。若IP 数据报的长度为 56 字节,则不需要填充字节。
以太网常用的传输介质有 4 种:粗缆、细缆、双绞线和光纤。同轴电缆分 50Ω 基带电缆和75Ω 宽带电缆两类。基带电缆又分细同轴电缆和粗同轴电缆。
10Base5:粗缆以太网,数据率为 10Mb/s,每段电缆最大长度为500m;使用特殊的收发器连接到电缆上,收发器完成载波监听和冲突检测的功能。
细缆以太网,数据率为10Mbs,每段电缆最大长度为185m;使用 BNC连接器形10Base2:成T形连接,无源部件。以太网没有网络层。
物理层的主要功能是:信号的编码和译码、比特的接收和传输;
MAC子层的主要功能是:组帧和拆帧、比特差错检测、寻址、竞争处理;
LLC 子层的主要功能是:建立和释放数据链路层的逻辑连接、提供与高层的接口、差错控制、给帧加序号(待确认的服务)。高速以太网的 MAC 帧格式与标准以太网的帧格式完全相同,以便升级和向后兼容。
吉比特以太网物理层有两个标准,一种是利用光纤通信,一种是利用双绞线通信
以太网中的帧插入VLAN标签后,最大帧长变为1522字节
VLAN 建立在交换技术的基础上,以软件方式实现逻辑分组与管理,VLAN 中的计算机不受物理位置的限制。当计算机从一个 VLAN 转移到另一个 VLAN 时,只需简单地通过软件设定,而无须改交它在网络中的物理位置。同一个 VLAN 的计算机不一定连接到相同的物理网段,它们可连接到相同的交换机,也可连接到不同的局域网交换机,只要这些交换机互连即可
一般有三种划分 VLAN 的方法:①基于接口;②基于 MAC 地址;基于 IP 地址。
数据帧中的地址1是接收地址,地址2是发送地址,地址3是变化的
地址3记忆方法:
发给AP的时候要让AP知道数据帧是发给谁的;接受AP来的数据帧的时候要让别人知道这个数据帧是谁发过来的
广域网
- 广域网通常采用点对点连接,对应的OSI参考模型为物理层,数据链路层和网络层
- PPP点对点链路控制协议的特点:
- PPP不使用序号和确认机制,只保证无差错接收(CRC检验),因此是不可靠服务
- PPP只支持全双工的点对点链路,不支持多点线路。
- PPP 的两端可以运行不同的网络层协议,但仍可使用同一个 PPP 进行通信。
- PPP 是面向字节的,所有PPP帧的长度都是整数个字节。
PPP协议是数据链路层协议
- TCP/IP 协议族主要包括 TCP、IP、ICMP、IGMP、ARP、RARP、UDP、DNS、FTP、HTTP等。HDLC是 ISO 提出的一个面向比特型的数据链路层协议,它不属于 TCPIP 协议族。
- PPP协议是一种面向连接的点对点数据链路层协议,但它是不可靠的,因为它不使用序号和确认机制,因此 PPP 协议提供的是有连接的不可靠服务。
数据链路层设备
- 网桥(现在已经被以太网交换机取代了):
网桥的作用就是把局域网分成多个网段的,也就是分成了多个冲突域,这个网段故障不会影响别的网段 - 以太网交换机
实质上是一个多端口的网桥
假设以太网带宽为10Mb/s,原本的集线器把带宽分给N个用户,每个用户的带宽就是,现在的这个交换机虽然每个接口到主机的带宽还是10Mb/s,但是因为用户独占带宽,所以交换机带宽是10N Mb/s - 以太网交换机的特点:
- 全双工传输:连接主机或者交换机时工作在全双工方式,能同时连通多对接口,没有冲突所以不用CSMA/CD协议
- 连接集线器时的工作模式:接口连接集线器时,只能用CSMA/CD协议且工作在半双工方式,交换机和网卡能自动识别该情况。
- 即插即用与自学习:即插即用,内部帧转发表通过自学习算法,基于主机通信自动逐渐建立。
- 高速交换:使用专用交换结构芯片,交换速率较高。
- 独占带宽:独占传输介质的带宽。
- 交换机的两种交换模式:
- 直通交换模式:不对数据包进行检查,交换时延非常低
- 存储转发交换方式:先把收到的数据包缓存到高速缓冲器中,对数据包进行检错,确认无误后再转发出去,时延比较大
- 交换机自学习功能:
- 交换表:由MAC地址和端口号组成
- 过滤:是扔掉这个数据帧还是转发出去
- 转发:根据交换表将数据帧从具体的端口转发出去
- 自学习的过程:
- 初始学习:主机A向B发送帧从接口1进入交换机,交换机查找交换表无B的MAC地址项,将A的源地址和接口1写入交换表,并向除接口1外的所有接口广播该帧,只有B接收,此后从任何接口收到目的地址为A的帧从接口1转发。
- 反向学习:B通过接口3向A发送帧,交换机查找交换表有A的表项,将帧从接口1转发给A,同时将B的源地址和接口3写入交换表,后续有发给B的帧从接口3转发。
- 持续学习与更新:主机C、D等向其他主机发送帧时,交换机将其地址和对应接口号写入交换表。交换表每个表项设有效时间,过期自动删除,以保证交换表数据符合网络实际状况。
- 交换表:由MAC地址和端口号组成
- 集线器(共享式以太网)与交换机连接的网段的区别:
- 发送普通帧:
- 集线器连接的以太网:集线器把帧转发到所有的端口
- 交换机:把帧转发到特定的端口
- 发送广播帧:
- 集线器:把帧转发到所有的端口,接受的主机网卡检测到这个帧的目的MAC地址是广播地址就接受这个帧
- 交换机:由交换机进行检测,检测到这个帧的目的MAC地址是广播地址就把帧转发到所有的端口
- 多对主机同时通信:
- 对于集线器连接的网段,多对主机互相通信必然会冲突
- 对于交换机,可以实现多对接口并行通信
- 发送普通帧:
- 以太网交换机的特点:
- 标题: 数据链路层
- 作者: lele
- 创建于 : 2024-11-20 12:00:00
- 更新于 : 2025-02-22 18:02:27
- 链接: https://letongzhuo.cn/posts/20241120120000.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。