本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-04-18
链路层的基本服务是实现物理链路直接相连的相邻结点的数据报传输,为此需要提供组帧、链路接入、可靠交付、差错控制等服务;
链路:通信链路相连的相邻结点的通信信道;
链路层数据单元为帧,数据链路层一般将网络层的数据报封装成一个帧头和帧尾包括的数据帧,这个过程称为成帧;帧头和帧尾中有一部分信息用来帧定界,确保接收点能够成功识别一个帧的开始和借宿,有的数据链路层在组帧时,帧头的第一个字节和帧尾的最后一个字节都是01111110以此来作为帧的定界;
1、检错重发,接收端利用差错编码检测数据是否出错,如果出错请求发送端重发,直到收到正确数据为止;
2、前向纠错,利用纠错编码检测数据是否发生了错误,还可以定位错误并直接加以纠正;
3、反馈校验,接收端将收到的数据原封不动发回发送端,如果发送端发现有不同,则重发;优点是易于实现,无需差错编码,缺点是需要有相同传输能力的反向信道,传输效率低,实时性差;
4、检错丢弃,不纠正出错的数据,直接丢弃错误数据,只适用于实时性要求较高的系统;
香农信道编码定理:理论上可以通过编码使得数据传输过程中不发生错误或者将错误概率控制在很小的数值之下;
差错编码的基本原理就是在待传输(或待保护)数据信息基础上,附加一定的冗余信息,该冗余信息建立起数据信息的某种关联关系,将数据信息以及附加的冗余信息一同发送给接收端,接收端可以检测冗余信息表征的关联关系是否存在,如果存在则没有错误,否则就有错误;
汉明距离:两个等长码字之间,对应位不同的位数,即异或后1的个数;
编码集的汉明距离:该编码集 中任意两个码字之间的汉明距离的最小值;
差错编码的检错或纠错能力跟该差错编码的编码集的汉明距离有关;
1、奇偶校验码:
奇校验:编码后的码字中“1”的个数为奇数;
偶校验:编码后的码字中“1”的个数为偶数;
根据数据此时1的个数,再根据是采用奇校验还是偶校验,然后添加1位冗余位,通常的编码格式是7位数据位、1位校验码、1~2位停止位或者8位数据为加1个校验位,可以传输任意8位数据或者ASCII字符
优点是编码交单,编码效率高,是开销最小的检错编码;但缺点是检错率不高;
2、汉明码:可以实现单比特位纠错
信息位长度越长编码效率越高,只能纠正一位错;
若一个信息位为k=n-1位的比特流a(n-1)a(n-2)…a1,加上偶校验位a0,构成一个n位的码字,将各项按位进行异或运算,得到S,S为0时,则无错,S=1则有错;此时S的计算被称为监督关系式,S称为校正因子;在奇偶校验情况下,只有一个监督关系式,一个校正因子,其取值只有两种,0或1代表无错和有错,只能检错,不能纠错;
若增加冗余位,即不采用奇偶校验法(因为奇偶校验法只添加了1位冗余位),则会增加相应的监督关系式与较正因子,就能区分更多情况,实现纠错;
一般来说,信息位k位,冗余位为r位,构成n=k+r位码字,若希望使用r个监督关系式产生r个校正因子来区分无错和在码字中n个不同位置的一位错,则要求2^r >= k + r + 1;
以k=4为例,r >= 3,才满足,也就说4位信息位,3位冗余位,即a6a5a4a3 a2a1a0
7位码字;其中冗余位根据4位信息位中某几位进行异或运算得到。
我们规定对应关系,声明3个校正因子S2、S1、S0;规定(也可以规定为别的,那么将生成不同的码字)
S2S1S0 | 000 | 001 | 010 | 100 | 011 | 101 | 110 | 111 |
---|---|---|---|---|---|---|---|---|
错码位置 | 无错 | a0 | a1 | a2 | a3 | a4 | a5 | a6 |
此时可以看出,a2、a4、a5、或a6中的一位错,都使得S2=1;
则得到监督关系式 S2 = a2⊕a4⊕a5⊕a6 S1 = a1⊕a3⊕a5⊕a6 S0 = a0⊕a3⊕a4⊕a6
故得到冗余位
a2 = a4⊕a5⊕a6
a1 = a3⊕a5⊕a6
a0 = a3⊕a4⊕a6,
即若信息位为0010,那么得到构建的码字为0010 101;
当我们传输0010 101 发生一位错变成 0011 101,将0011 101代入监督关系式,得到S2 = 0,S1 = 1,S0 = 1,则S2S1S0为011,对应上表发现为a3错,则翻转a3位,得到 0010 101;
编码效率为4/7,即7个码字中有4个是信息位,如果k=7,那么要求r >= 4,那么编码效率为7/11,所以说信息位长度越长编码效率越高。
3、循环冗余码
循环冗余码(Cyclic Redundancy Check, CRC)是被广泛应用的差错编码,CRC编码的基本思想是:将位串看作为一个系数为0或者为1的多项式,一个k位二进制数据可以看作是k-1次多项式,该多项式共有k项,例如100101有6位,则代表一个有6项的多项式:
1x5 + 0x4 + 0x3 + 1x2 + 0x1 + 1x0 = x5 + x2 + 1
使用CRC编码时,发送方和接收方必须预先商定一个生产多项式的ƒ(x),生成的多项式的最高位和最低位系数必须为1,基本思想是在帧的尾部附加一个校验和,使的附加校验和之后的帧所对应的多项式能够被ƒ(x)除尽;当接收方收到了带校验和的帧之后用ƒ(x)去除它,如果余数不为0,则有错;
CRC的编码过程为:假设ƒ(x)的阶为r,即对应位串r+1位,
1、在帧的低位加上r个0位,相当于左移r位得到M,因为多项式最高位的阶为r;
2、将多项式转换为二进制数,例如上述的x5 + x2 + 1 转换为100101;
3、使用M 以模2除法 与多项式转换的二进制进行运算,得到一个余数R,再将M与R进行二进制相加
例如,有多项式ƒ(x) = x4 + x + 1,为10111001进行CRC编码;
循环冗余码优点:编码解码实现简答,只需要简单的位移与异或运算;编码效率高,编码附加的冗余位取决于多项式ƒ(x),与数据位数无关,数据远大于R的位数时,CRC编码开小就越小,效率越高;
数据链路层使用的信道主要有:点对点信道和广播信道,点对点信道使用一对一的通信方式,信道被双方独享;广播信道使用一对多的广播通信方式,信道被所有结点共享, 这样就容易出现碰撞和冲突,所以需要有多路访问控制协议(Multiple Access Control, MAC)来协调结点的数据发送,避免碰撞,或者在冲突发生后解决冲突;
MAC主要用于在广播信道时协调各个结点的数据发送,概况起来分为3种,信道划分MAC协议,随机访问MAC协议以及受控接入MAC协议;
1、频分多路复用(Frequency Division Multiplexing FDM):在频域内将信道带宽划分为多个子信道。
2、时分多路复用(Time Division Multiplexing TDM):将通信信道的传输信号在时域上划分为多个等长的时隙。
3、波分多路复用(Wave Division Multiplexing WDM):在一根光纤中,传输多路不同波长的光信号。
4、码分多路复用(Code Division Multiplexing CDM):从编码域进行划分,使得编码后的信号在同一信道中混合传输。
随机访问MAC协议就是所有用户都可以根据自己的意愿随机地向信道上发送信息,如果一个用户在发送信息期间没有其他用户发送信息,则该用户信息发送成功,如果两个或两个以上的用户都在共享信道上发送信息,则产生冲突或碰撞,导致用户信息发送失败,每个用户随机退让一段时间后,再次尝试,直至成功;可以看出随机访问实际上就是争用接入;
典型的随机访问协议有ALOHA协议,载波监听多路访问协议以及带冲突检测的载波监听多路访问协议等。
1、ALOHA协议
2、载波监听多路访问协议 CSMA
发送前监听信道是否空闲:
(1):非坚持CSMA:忙则等待随机时间后再发送;
(2):1-坚持CSMA:忙则持续监听;
(3):P-坚持CSMA:闲则概率P在最近时隙发送;
3、带冲突检测的载波监听多路访问协议CSMA/CD
CSMA/CD的基本原理是,通信站使用CSMA协议进行数据发送,发送前监听信道是否空闲;在发送期间如果检测到碰撞,立即终止发送,并发出一个冲突强化信号,使所有通信站都知道冲突的发生;发出冲突强化信号后,等待一个随机时间,再重复上述过程;
工作状态有3种:传输状态、竞争状态、空闲状态;因为时延的问题,依然会存在冲突;
CSMA/CD协议是通过检测信道中信号的强度来判断是否发生冲突的,因此CSMA/CD适用于有限信道,不适用无线信道;CSMA/CD在发送数据同时检测是否有冲突,数据发送结束,冲突检测结束,考虑这一特性,则要求共享信道通信的两个通信站之间的相距最远距离Dmax、信号传播速度V、数据帧最小长度Lmin以及信道传输率R,存在以下约束关系:Lmin / R >= 2 (D / V)
;
冲突发生过程:若一个共享信道相隔最远的两个站点分别是A、B
1、D/V 是单向传播延时,若从t0时刻开始,从站A发送数据帧到站B,那么 D/V 之后,数据帧到达D;
2、在这个数据帧即将到达B,即还没到,那么B检测会认为信道空闲,因此发送数据,结果冲突产生;
3、在检测到冲突后,发送冲突强化信号,当A收到这个冲突强化信号时,时间从0到达了2(D/V),所以这要求站A在2(D/V)时间内,都保持数据传输才有可能检测到这个冲突强化信号,所以要求最小长度的数据帧 / 信道传输率所耗费的时间要多于 2(D/V);
受控接入的特点是各个用户不能随意接入信道而必须服从一定的控制,又可分为集中式控制和分散式控制。
1、集中式控制
由一个主机负责调度其他通信站接入信道,从而避免冲突;主要方法是轮询技术,又分为轮叫轮询和传递轮询;
设共有N个通信站连接共享线路,轮叫轮询即表示主机轮流查询各站,从站1到站N依次询问,询问有无数据发送,当然主机也可以主动将数据发送给各站,因此主机发出的数据帧中均带有各站的地址,每个站只能接收主机发送给自己的数据,所以不会出现混乱现象;
轮叫轮询的缺点是需要在共享线路上不停地循环往返,开销较大;传递轮询用来克服这一缺点,
传递轮询工作原理是:
主机先向站N发出轮询帧,站N在发送数据后或在告诉主机没有数据发送时,即将其相邻站N-1的地址附上;当N-1检测到了自己的地址时,直到此时发送权到了自己手上,因此开始发送数据,这样依次循环,直到站1将发送权重新还给主机,主机就再向N发送轮询帧;
2、分散式控制
令牌(Token)是一种特殊的帧,它代表了通信站使用信道的许可,令牌在信道空闲时一直在信道上传输,一个通信站如果想发送数据就必须首先要获得令牌,然后再一定时间内发送数据,在发送完成后重新产生令牌并发送到信道上,以供其他通信站使用信道。
因此任何时候最多只有一个通信站点在发送数据,不会产生冲突;主要过程如下:
每一层都有各结点使用的对应地址,在传输层为端口,在网络层为IP地址,在数据链路层则为MAC地址,分配给每一个网络接口;就像人的身份证号和邮编地址在不同层次发挥作用;
每个接口对应一个MAC地址,且全球唯一;长度48位,前24位为厂商标识,每个字节8位表示为一个16进制,最终表示为为6组16进制数用“-”或者“:”分割;
当某发送适配器向目的适配器发送一个帧时,该帧目的MAC地址即为目的适配器的MAC地址;当一个适配器接收到一个帧时,检测目的MAC地址,匹配则提取出封装的数据,否则丢弃该帧;偶尔也会接收到目的MAC地址不匹配的,因为交换机在没有学习如何转发该帧时会选择广播该帧到所有接口;广播帧是一个特殊的MAC地址,FF-FF-FF-FF-FF-FF,适配器在收到广播帧后也不会丢弃,会接收并处理;
因为数据链路层根据MAC地址进行寻址,而网络层的数据报上只有目的IP地址,所以在数据链路层需要有一种方法来获得目的结点的MAC地址。
ARP用于根据本网内目的主机或默认网关的IP地址获取其MAC地址,ARP的基本思想是:在每一台主机中设置专用内存区域,称为ARP表,存储了该主机所在局域网中其他主机和路由器(即默认网关)的IP地址和MAC地址的映射关系,这个映射表要经常更新,ARP通过广播APR查询报文,来询问某目的IP地址的对应MAC地址;如果目的主机与源主机不再同一个局域网内,那么会将IP数据报发送给默认网关,让默认网关去处理;
从功能上看,ARP与DNS类似,但是其中有明显的区别:
1、IEEE802.3标准
2、采用CSMA/CD访问控制方法
3、以太网帧结构
4、以太网技术
交换机的功能是转发和过滤,可以依据接收到的链路层帧的目的MAC地址,选择性地转发到相应的端口;
交换机通过自学习构建交换表,通过一段时间从各个端口接收数据,就能构建出交换表;
优点:消除冲突,提高性能;支持异质链路;易于进行网络管理。
虚拟局域网是一种基于交换机(必须只支持VLAN功能)的逻辑分割广播域的局域网应用技术,虚拟局域网(Virtual Local Area Network,VLAN)可以不受物理位置的限制,以软件的方式划分和管理局域网中的工作组,可以限制接收广播信息的主机数,从而使局域网不会因为传播过多的广播信息而引起性能的恶化,即“抑制广播风暴”。也能够提高安全性,在现实中,还能起到网络管理的作用;
划分虚拟局域网的方法主要有以下3种:
上述局域网、各种MAC协议都是用于共享链路(广播信道)的,网络中还有一类链路是点对点链路,大多应用于广域网中,因为不存在介质共享的原因,所以不需要MAC协议,典型的点对点联络路协议有:PPP和HDLC协议;
点对点协议(Point to Point Protocol,PPP):能够处理差错检测、支持多种上层协议、允许连接时协商IP地址、允许身份认证;典型应用就是拨号上网;拨号上网的过程,就是用户向ISP(网络服务提供商)请求分配IP地址,此时就需要协商IP地址,又由于是需要计费的,所以需要协议允许身份认证;
主要提供3种功能:
高级数据链路控制协议(High-level Data Link Control,HDLK)可以应用点对点链路和点对多点链路;
其中帧定界符为01111110,是面向位的协议,为确保数据的透明传输,HDLC使用位填充,首先,发送端扫描这个数据字段,只要发现连续的5个1就立即插入一个0(不管5个1后面是0还是1,都插入一个0),经过处理后,数据字段就不会出现连续的6个1,接收到收到后,以01111110来确定帧的边界,扫描整个比特流,发现连续的5个1就删除后面的0,以还原成原来的信息;
PPP中的帧定界符也是01111110,PPP采用另一种字节填充,扫描整个数据字段如果发现数据中有01111110出现,则在前面插入 01111101,当接收方收到01111101 后面紧跟一个 01111110,则去除 01111101 将 01111110当做数据处理,而不会当做帧定界符;