3.数据链路层
数据链路层概述
什么是数据链路层:
为网络层提供服务;加强物理层传输比特流的功能
将可能出错的物理连接改造成逻辑上无差错的数据链路
基本概念
节点
计算机网络中两台计算机就可以看做两个节点
数据链路
链路即物理链路,两个节点之间的物理通道(实际介质)
数据链路即逻辑链路,是虚拟通道
帧
帧是数据链路层传输数据的基本单元,在网络中信息传输的最小单位是帧
将数据转换为帧,当出错时只需要发送出错的帧,不必重发所有数据,以提高传输效率

帧的结构
帧有三部分,首部,尾部和数据
数据链路层的主要功能
-
封装成帧
-
差错控制
-
流量控制
-
介质访问控制
-
物理寻址
封装成帧
由于数据链路层的基本传输单位是帧,所以进入到数据链路层的数据都转换成帧。
组帧主要针对以下三个问题
- 帧定界:首部和尾部确定帧的大小
- 帧同步:接收方从比特流中区分帧的开始和终止
- 透明传输:数据能够正常的在链路上传输
常用的组帧方法如下
1.字符计数法
在帧首部使用一个计数字段标明字符数(用一个值表示帧里有几个字符)
传输量很小(<127),只能传输ASCII码
字符计数法封装的帧没有尾部,如果上一个帧首部字段标记有5个字符,则向下读五个字符(包括计数字段),读完就代表这个帧结束
计数字段一旦出错,则会导致数据错误
2.字符(节)填充法
在原始数据首尾各使用一个控制字符,用一个字节表示
SOH:0000 0001(StartOfHead)
EOT:0000 0100(EndOfTransform)
如果数据中出现了和控制字符相同的字符时,在这段数据前加一个转义字符ESC将其标识出来
接收方读到转义字符时,会自动将其删去,把其之后的数据当做普通数据处理

3. 0比特传输法
也称为带填充位的首尾定界法
使用0111 1110标志帧作为帧的的开始和结束
发送方发送时,如果数据中出现五个连续的1,则在其后插入一个0,以避免标志帧和数据重复
接收方接收时,如果数据中出现五个连续的1,则在删除在其后的0

可以传送任意比特组合,都不会引起帧定界问题,保证了透明传输
容易用硬件实现,效率较高,性能优于字符填充法
4.违法编码法
利用物理介质编码的违法标志来界定帧的开始和结束
仅适用于冗(rong)余编码的环境

红段代表帧的首尾
现实中最常使用的是0比特填充法和违规编码法
差错控制
差错产生原因:
物理层传输比特流,随机噪声(提高信噪比处理),冲击噪声(采用合适的编码技术处理)的影响导致产生差错
差错分为:
- 位错:比特位错(1变0,0变1)
- 帧错:丢失,重复,失序
差错控制分为检错编码和纠错编码,二者通过向帧中添加冗余的校验位,来保证帧的正确性
检错编码
接收方通过检测冗余的校验码,来判断帧是否出错,如果出错,采取要求重发等措施
1.奇偶校验码
发送帧之前,在数据位之前加一个校验码(称为校验元)
校验码分为两种
- 奇校验码:添加一位校验码,使码中1的个数为奇数
- 偶校验码:添加一位校验码,使码中1的个数为偶数
如果原数据有奇数个比特位时发生变化,可以检测出是否出错
但原数据有偶数个比特位时发生变化,未必能检测是否出错
检测能力只有50%,不常用

2.循环冗余检验CRC
在帧的数据后添加n位冗余校验码,称为帧检测序列
循环冗余检验生成n位冗余校验码的过程:
如果要发送二进制数据[1001 1111]
1.收发双方事前商定一个多项式G(x) (保证最高/最低位为都是1),多项式不是随着帧传输过去的,而是传输之前拟定好的
(1101代表的多项式就是1×23+1×22+0×21+1×20),多项式阶数为3
2.发送方对数据进行处理
1)在数据后加阶数个0,按上式就是得到 [1001 1111 000]
2)用上一步结果数据除以G(x),即

3.得到余数,余数再保留阶数位就是冗余码,上式为011,将011追加在原数据后一起发送,即发送方最终发送 [1001 1111 011]
4.接收方接收到数据,再用该数据除以G(x),如果没有余数,则没有差错;如果有差错,采取要求重发等措施
纠错编码
纠错编码比检错编码会添加更多的冗余位,如果接收方通过冗余校验位检测到帧出错,可以通过冗余校验位来计算出帧中正确的数据,不再要求发送方采取措施
常见的纠错编码为汉明码
汉明码
在信息位(数据)中加入几个校验位形成汉明码,并把每个二进制位分配到几个奇偶校验组中,以侦测并更正单一比特错误
1.校验码需要多少位
设信息位个数为k,校验码个数为r,则汉明码需要满足
2r ≥ k+r+1
此式称为汉明不等式,根据该式,取r最小值,确定校验码个数
例如7个信息位,则2r ≥ 8+r,r取最小值为4,则需要4个校验位
2.校验码与信息位的位置关系
- 从1开始给信息位表上序号,再把这些序号转换为二进制
- 在2n序号上的是校验位,他们的特点是二进制表示中只有一个1

3.校验码每一位的取值
要判断取值,要先将汉明码分组,每个组称为奇偶校验组
奇偶校验组的分组方法是:
-
第一位校验码位置是0001,所以向后找所有最后一位为1的数据,分到该组中
-
第二位校验码位置是0010,所以向后找所有倒数第二位为1的数据,分到该组中,以此类推
-
如果该数据已经分到了其他组,还可以分到该组中,即一位数据可以分到多个组中,进行多次检验
分组后,每个校验位对应一个校验组,默认进行偶校验
例如上图就分了四组
0001组:1,0,1,0,1
0010组:1,1,1,1,1
0100组:0,1,1
1000组:0,1,1
偶校验的校验方法是:向该组中加入一位,使该组中1的个数为偶数,奇校验同理,使1为奇数
则对于上组,0001组有3个1,所以还要加入一个1
0100组有5个1,所以要加入一个1
0100组和1000组都有2个1所以加入0
加入的数就是该校验位的取值
完成这步后,发送方工作完成,发送得到11位的海明码 [1110 0110 011]
/*
偶校验的实际方法是进行异或操作,设第一组的校验码是p1,则需要满足
p1⊕1⊕0⊕1⊕0⊕1=0
⊕为异或操作,相同为0,不同为1
所以p1=1,其他组同理
*/
4.接收方如何校验
每个校验位与其校验组的信息进行奇偶校验检查
发送时用偶校验,接收方就用偶校验来检验
如果偶校验的结果为0,说明该组正确;为1说明该组出现错误
流量控制
由于收发两端速度不一致(发送过快接收不过来,发送过慢效率低),所以要进行流量控制。流量控制由发送端来控制
接收方停止发送确认消息后,发送端不再发送
停止-等待协议
-
按帧发送数据
-
每次发送一个帧,等待对方回复确认,收到确认再发送下一个帧
无差错情况:
发送方发送一个帧,接收方接收到后,返回一个确认帧,发送方接收到确认后再次发送下一个帧
有差错情况:
1.发送方发送后数据中途丢失,接收端未收到
解决方法:发送方会设置一个计时器,记录发送后到接收确认这段时间,如果发送后时间超过了计时器范围还没有接到确认,发送方需要考虑重传
- 发送方发完一帧后保留该帧的副本,需要重传时发送副本
- 数据帧和确认帧需要编号
2.接收方检测到数据帧错
解决办法:接收方丢掉该帧,不返回确认,等待发送方重传
3.接收到数据帧,但确认帧丢失
解决方法:等待发送方重传,接收到重传帧后丢掉,重新发送确认帧
根据编号确定是否是重复的帧
4.确认帧迟到,到达时发送方已经重传
解决方法:丢弃重传帧,再次发送确认帧,发送方丢弃重复的确认帧
滑动窗口协议
按一组帧发送
每个帧都有四种状态:待发送,已发送,未确认,已确认
窗口滑动的过程:
-
发送方和接收方各维护一个窗口,窗口里面存放的是即将要传递的帧(窗口实际上是一种数据结构)
-
发送方只发送窗口内的帧,接收方只接受窗口内的帧
-
通过控制窗口的大小来达到流量控制
-
发送方可以发送多个窗口内的帧,全部发送完后等待确认
-
接收方根据帧的序号接收数据帧,重复的丢弃,不在接收窗口内的也丢弃
-
接收方确认接收某一帧后,发送该帧的确认帧
如果该帧是窗户内序号最靠前的帧,让窗口向后滑动,使一个新的未接收的帧等待被接收。
-
发送方的窗口内有帧被确认后,如果该帧是窗户内序号最靠前的帧,让窗口向后滑动,使一个新的未发送的帧等待发送
- 发送窗口帧的状态:待发送-->已发送-->已确认
- 接受窗口帧的状态:未确认-->已确认
根据不同的对差错情况的处理,分为后退N帧协议和选择重传协议
选择重传协议
使用场景:发送窗口大小为Wt>1,接收窗口Wr>1
发送方连发多帧,接收到确认继续发送
差错情况:
1.确认帧超时或丢失
解决方法:发送窗口不能向后滑动,到时间后重传
2.偏后序号的帧先到达,偏前序号的帧后到达
解决方法:帧到达之后就发送确认帧,跟序号无关
但接收的数据暂时不能使用,把偏后序号的帧放入缓存区中,等待它之前序号的帧都到达后,这些数据才能被上层使用
缓存区的大小和接收窗口大小一致
其他差错情况和停-等协议处理方法一致
后退N帧协议
使用情况:发送窗口大小为Wt>1,接收窗口Wr=1
发送方连发多帧,接收到确认继续发送
差错情况:
1.接收方检测到数据帧出错
解决办法:丢弃出错的帧,等待发送方重发
由于接收窗口大小为1,所以会丢弃之后到来的数据帧。发送方时间片到后,未接收到确认帧,开始重传出错的帧
发送方重发时,回退到最早发送但未接收到确认的帧,从这帧开始重发(后退N帧)
2.前面的1号确认帧超时,后面的2号确认帧先返回
解决方法:在接受确认帧时,默认在这号之前的所有帧都已经被确认
例如接受到2号确认帧后,发送方就认为1号和0号帧已经被确认
由于接收窗口只有一位,所以其只能按照0,1,2...的序号来接收帧,所以如果接收到了2号确认帧,说明1号帧已经到达了接收方并且正确(错误就不会接收后面的帧了),不必再等待它的确认帧了
其他差错情况和停-等协议处理方法一致
介质访问控制方式
数据链路层有两种基础的通信方式
点对点链路:两个相邻节点通过一个链路相连,没有第三者
广播式链路:所有主机共享通信介质
在这几种通信方式下,如何避免节点之间信号互相干扰,需要用到介质访问控制技术
介质访问控制MAC:
协调节点间的信号传输,使他们避免互相干扰
接下来介绍具体的控制方式
静态划分信道
静态划分信道即是在物理层中所述的,信道的多路复用技术
静态划分信道也叫称为信道划分介质访问控制,会在信号传输之前将信道给划分好,传输过程中不再变化
频分多路复用
将基带信号调制到不同频率的载波上,将物理信道带宽(载波带宽)划分为多个不同频带的子信号,每个子信道可以并行传输一路信号
物理带宽要大于所有子信道带宽之和
不同频带的信号始终占用该频带
时分多路复用TDM
将时间域划分为周期循环的等长的小段,每个时间片即为一个子信道
所有用户按时间片轮流占用信道

-
在某一时刻:仅一对设备使用信道
-
在某一时段:未必每个时刻都使用信道
每个信号的位置是固定的,例如上图中红色信号只使用周期内的第一个时间片,蓝色只用第三个
由于信道中有某一时刻未使用,所以会造成资源浪费
统计时分多路复用STDM
又叫异步时分多路复用,按需动态分配时间片
通过集中器按需分配时间片给用户,集中器根据用户的时间片需要,合并成一个完整的没有空闲的STDM帧后发送
STDM帧中的时间片数要小于集中器的用户数,保证STDM帧能够充分被使用
有可能一个用户独占一个STDM帧
波分多路复用WDM
按光波的频分多路复用
将不同波长的光载波信号,在发送端经合波器汇合在一起在光纤信道传输,在接收端经分波器分离

码分多路复用CDM
又叫码分多址CDMA
采用不同的编码(地址码)来区分各路原始信号
频分共享时间,时分共享空间,而,码分多路复用共享信道的频率,又共享时间。是真正意义的动态复用技术
码分多路复用的过程为:
1.将每比特时间分成64/128个码片
比特时间是指传输1bit所需时间
2.每个站点指定一个唯一的码片序列,码片序列是一段二进制数字
该站点发送二进制数字1就发送码片序列
发送0就发送码片序列的反码
通过码片向量的形式发送
码片向量用+1表示1,-1表示0
3.如果有多个站点同时发送,则各路数据在信道中进行线性相加,合并到一起传输
4.接收方接收后要分离各路信号,合并的数据和各站的码片序列进行规格化内积计算,得到各站发送的数据
例如A站码片序列:0001 1011
B站码片序列:0010 1110
如果A站发送1,B站发送0,都发送到C站,则
A站发送码片向量:(-1 -1 -1 +1 +1 -1 +1 +1)
(0001 1011A站码片序列)
B站发送码片向量:(+1 +1 -1 +1 -1 -1 -1 +1)
(1101 1110B站码片序列反码)
到达公共信道时,两个向量进行线性相加(对位数据进行加法)
得到P=(0 0 -2 +2 0 -2 0 +2)
C站接收到P后,进行规格化内积
A站码片序列为 (-1 -1 -1 +1 +1 -1 +1 +1),这个和P进行对位相乘,结果相加,然后再除以数据位数,这里是8,即
[(0 * -1)+(0 * -1)+(-2 * -1)+(2 * 1)+(0 * 1)+(-2 * -1)+(0 * 1)+(2 * 1)]/8
得到结果=1,即A站传输的数据1
同理B站的码片序列和P进行同样操作,得到结果-1,即B站传输的数据0
动态划分信道
动态划分信道也叫随机访问介质访问控制,根据不同的协议,各个发送方站点直接使用信道
ALOHA协议
不监听信道,不按时间片发送,何时出现问题何时重发
ALOHA协议的重传是超时后随机等待一段时间再重传
由于ALOHA协议中每个站点的数据想发就发,所以会有在一个时间段内有多个站点同时发送数据的情况,这时就会导致数据冲突。
解决方法:接收方接收到出现冲突的数据,会直接丢弃,等待发送方重发

因为数据冲突,导致纯ALOHA协议效率较低,所以有改进后的时隙ALOHA协议
时隙ALOHA协议
把时间分成时间片,如果一个时间片内有两个站点发送数据,则后发送的站点等待下一个时间片在发送,避免冲突
但是两个站点在同一时刻发送数据,仍会产生冲突;如果发生冲突,发送方随机等待时间片再重发
CSMA协议
CS:载波监听多路访问协议
MA:多计算机连接在一根总线上
发送数据前会检测信道是否被占用,被占用就不发送,以避免冲突
根据监听情况,分为三种CSMA协议
1-坚持CSMA
-
监听到信道闲,则立刻发送数据
-
监听到信道忙,则继续监听
-
发生冲突,停止监听,等随机时间后再监听
由于立刻发送数据,所以当多站点同时监听到信道闲时,同时发送数据,可能造成冲突
非坚持CSMA
- 监听到信道闲,则立刻发送数据。
- 监听到信道忙,停止监听,等随机时间后再监听
比1-坚持数据冲突概率要低,效率也相对低
p-坚持CSMA
-
监听到信道忙,则继续监听
-
监听到信道闲,有p%的概率发送数据
冲突概率最小,但效率低
CSMA-CD协议
CSMA的监听只在发送帧之前,发送帧之后就不再监听,这也是其产生冲突的原因
CSMA-CD添加了冲突检测功能,检测帧发送后的信道是否发生冲突
CSMA/CD协议不能实现全双工通信,只能实现半双工
CSMA-CD的主要功能有
-
边听边发:发送数据帧的整个过程都监听信道,一旦发生冲突,停止发送帧,以及时避免冲突
-
加强冲突:发送方一旦检测到信道中的冲突,停止发送并改为发送一串阻塞信号,以告知其他节点信道发生了冲突,使其他节点能更清晰的检测到这个冲突
-
冲突停发:
发送冲突的情况:
CSMA-CD只能用于半双工,在半双工情况下,在同一时间段内如果双方都向对方发送了数据,那么数据就会在信道中发生冲突
发生冲突后两个数据仍会继续向对方传递。站点接收到数据时才能检测到冲突
设信号从站点A传输到站点B的传输时延为τ,则发送端检测到冲突耗时取值为(0,2τ)
相应的,如果一方从发送数据开始到2τ时间内都没有检测到冲突,则证明没有发生冲突
怎么保证冲突停发:
当发生冲突的数据已经被对方接收,而对方发送的数据在此之后才到达,这时检测到冲突已经晚了
对此情况,在以太网中规定了一个最小帧长,以保证一个帧的大小要≥2τ时间内传递的数据量,这个最小帧长就保证了发送方在0~2τ时间段内,能够检测出帧是否出错
最小帧长=2 传播时延 =2τ 数据率**
如何重发:
为了降低再次发生冲突的概率,会等待随机一段时间再重新监听信道
CDMA/CD协议采用阶段二进制指数退避算法来确定这个随机时间
二进制指数退避算法:
- 随机时间=r*2τ
- r∈[0,1,...,2k-1],k=min[n,10]
n是该帧发生冲突的次数
除此之外,会设置一个最大重传次数(一般为16),如果超出了这个次数,该帧不再重传,并报告出错
CSMA/CA协议
CA:冲突避免,发送前通知其他节点,在某段时间内不要发送,以达成冲突避免
应用于无线局域网
冲突避免实现机制:
发送RTS(RequestToSend)帧和CTS(CLearToSendToSend)帧
RTS帧包含着将要发送的数据帧的长度,CTS帧包含着从RTS帧中复制过来的数据帧的长度
站点A向站点B发送一个RTS帧,站点B用CTS帧作为应答发送给站点A,站点A接收到CTS帧后则开始正式传输数据
如果其他站点接收到了RTS帧或CTS帧,则该站点需要保持沉默,不能接受数据帧。根据帧内包含的数据帧长度得知数据需要传输多久,自己该沉默多久
令牌传递协议
也叫轮训介质访问控制
一个主节点,多个从属节点,形成一个环状结构
主节点轮流分配令牌给各从属节点,使其获得信道使用权
具体步骤:
1.令牌在每个节点以固定次序交换,只有持有令牌的站点能够发送数据帧
2.在一个站点接收到令牌时,发送已经封装好的帧,在帧中包含着接收站的地址,以标识哪个站应该接收此帧
3.每个站点都会接收到此帧,根据标识确定是否要接收,不接收继续向下一个站点传递
4.数据帧被接收后,接收站在该数据帧尾部设置一个"响应比特",再向后面的站点传递,直到再返回发送方。发送方根据"响应比特"确定数据帧是否成功接收
令牌传递协议适用于负载高,数据量大的信道
局域网
局域网LAN(Loacl Area Network),是指在一个较小的地理范围内,将各种计算机,外部设备和数据库系统通过物理连接介质互相连接起来的计算机网络
局域网的特点
- 覆盖范围小,地理范围和站点数目均有限
- 专用传输介质(双绞线),所有站点共享总带宽
- 较低的时延和误码率,可靠性较高
- 各站为平等关系而非主从关系
- 为分布式控制和广播式控制通信,能进行广播和组播
局域网的分类
以太网Ethernet
系带总线局域网规范,采用CSMA/CD技术,当今最通用的通信标准
以太网提供无连接,不可靠服务,只实现无差错接收
优势:造价低廉,组网扩网简单,满足网络速率要求
无线局域网WLAN
使用IEEE定义的802.11无限局域网通用标准
- 有固定基础设施的无线网络
基站A<--> 分配系统 <-->基站B
多个基站通过分配系统连接起来
- 无固定基础设施的自组织网络
无任何转发器,集线器,路由器,基站等
则主机同时作为路由器,既发送又转发
广域网
广域网WAN(Wide Area Network),通信子网采用分组交换技术,利用公用分组交换网,卫星通信网和无限分组交换网灯,将不同地区的局域网或计算机系统连接起来
网桥
网桥根据MAC帧的目的地址对进行转发和过滤

浙公网安备 33010602011771号