第三章 数据链路层
文章目录
3.1 数据链路层功能概述
基本概念
节点:主机、路由器
链路:网络中两个节点之间的物理通道。
数据链路:网络中两个节点之间的逻辑通道。把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
帧:链路层的协议数据单元,封装网络层数据报。
数据链路层负责通过一条链路从一个节点向另一个物理链路直接相连的相邻节点传送数据报。
功能:
- 为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务
- 链路管理,即连接的建立、维持、释放(用于面向连接的服务)
- 组帧
- 流量控制
- 差错控制
3.2 封装成帧和透明传输
封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从比特流中识别帧的开始和结束。首部和尾部包含许多控制信息,重要作用:帧定界(确定帧的界限)
为了提高帧的传输效率,应当使帧的数据部分长度尽量大于首部和尾部的长度。最大传输单元MTU(Maximum Transfer Unit):帧数据部分长度上限。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
组帧的四种方法:
-
字符计数法
帧首部使用一个计数字段(第一个字节,八位)来表明帧内字符数。
缺点:容易出错
-
字符(节)填充法
字符填充法使用一些特定的字符来定位一帧的开始(DLE STX)与结束(DLE ETX)。为了使信息位中出现的特殊字符被误判为帧的首尾定界符,可以在特殊定位符前面填充一个转义字符(DLE)来区分(p.s. 转义字符是ASCII码中的控制字符,是一个字符,而非"D",“L”,"E"三个字符的组合),以实现数据的透明传输。接收方接收到转义字符就知道后面跟着的是数据信息而不是控制信息。如图,帧的数据段中出现DLE字符,发送方在每个DLE字符前再插入一个DLE字符,接收方收到数据后会自己删除这个插入的DLE字符,结果得到的依旧是原来的数据。
-
零比特填充法
在发送端添加0,接收端删除0,每五个1就填充0.
-
违规编码法
在物理层比特编码时通常采用违规编码法,例如曼彻斯特编码方式,将’1’编码成“高-低”电平对,将数据比特’0’编码成“低-高”电平对。而“高-高”电平对和“低-低”电平对在数据比特是违规的(即没有采用)。可以利用这些违规编码来定界帧的起始和终止。局域网中IEEE 802就采用了这种方法。
违规编码法不需要采用任何填充计数,便能实现数据传输的透明性,但他只适用于采用冗余编码的特殊编码环境。 由于字节计数法中计数字段的脆弱性和字符填充法实现的复杂性与不兼容性,目前较常用的组帧方法是比特填充法和违规编码法。
目前普遍使用的帧同步法是比特填充和违规编码法。
透明传输
当传送的帧是用文本文件组成的帧时(文本文件中的字都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
3.3 差错控制
差错:
差错由噪声引起:随机热噪声、冲击噪声
- 位错 (比特位出错,1->0,0->1)
- 帧错
- 丢失
- 重复
- 失序
数据链路层的差错控制
差错控制(比特错):
-
检错编码
-
奇偶校验码 (n-1位信息元和一位校验元)
- 奇校验码 ‘1’的个数为奇数 特点:只能检查出奇数个比特错误,检错能力为50%
- 偶校验码 ‘1’的个数为偶数 特点:只能检查出偶数个比特错误,检错能力为50%
-
循环冗余码CRC
公式:
-
发送端:要传的数据 / 生成多项式 = 商 … 冗余码
最终发送数据:要传的数据 + 冗余码
-
接收端:接收到的数据 / 生成多项式 = 商 … 0
如果余数为0,证明传输的数据有效。
例题:要发送的数据是1101 0110 11,采用CRC校验,生成多项式是10011,那么最终发送的数据是?
计算冗余码:
- 加0 (假设生成多项式G(x)的阶为r,则加r个0)
- 模2除法 (数据加0后除以多项式,余数为冗余码,本质是异或运算)
-
纠错编码
-
海明码
特点:发现双比特错,纠正单比特错
工作流程:
-
确定校验码位数r
海明不等式:2^r>=k + r + 1,r为冗余信息位,k为信息位
-
确定校验码和数据的位置
把校验码放在2的几次方的位置,然后依次填入数据
-
求出校验码的值
将海明码下标的二进制码求出来,并且最高位补到3位(r的位数)
然后将0替换为*,作为通配表
将1到k+r的二进制序列列出来与上面进行匹配
匹配出来的位数就是该校验码需要校验的位数
如果一下几组的偶校验出错,则出错
-
-
数据链路层的编码调制和物理层不同,物理层是针对单个比特,解决传输中的比特同步等问题
数据链路层的编码针对的是一组比特,通过冗余码实现检错。
凡是接收端数据链路层接收的帧均无差错
3.4.1 流量控制和可靠传输机制
数据链路层的流量控制
数据链路层的流量控制手段:接收方收不下就不回复确认(点对点)
传输层流量控制手段:接收端给发送端一个窗口公告 (端到端)
方法
-
停止-等待协议(发送窗口大小=1,接收窗口大小= 1)
每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
-
滑动窗口协议
- 后退N帧协议(GBN)(发送窗口大小>1,接收窗口大小=1)
- 选择重传协议(SR)(发送窗口大小>1,接收窗口大小>1)
3.4.2 停止-等待协议
停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
全双工通信的双方既是发送方也是接收方。
为了讨论问题的方便,我们仅考虑 A 发送数据,而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接 收方。
-
无差错情况
-
出现差错情况:
在接收方 B 会出现两种情况:
(1)B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。
(2)M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。
在这两种情况下,B 都不会发送任何信息。
但A都必须重发分组,直到B正确接收为止,这样才能实现可靠通信。
问题1:A如何知道 B 是否正确收到了 M1 呢?
解决方法:超时重传
A 为每一个已发送的分组都设置了一个超时计时器。
A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。
若A在超时计时器规定时间内没有收到B的确认,就认为分组错误或丢失,就重发该分组。
问题2:若分组正确到达B,但B回送的确认丢失或延迟了,A未收到B的确认,会超时重发。B 可能会收到重复的 M1 。B如何知道收到了重复的分组,需要丢弃呢?
解决方法:编号
A为每一个发送的分组都进行编号。若B收到了编号相同的分组,则认为收到了重复分组,丢弃重复的分组,并回送确认。
B为发送的确认也进行编号,指示该确认是对哪一个分组的确认。
A根据确认及其编号,可以确定它是对哪一个分组的确认,避免重发发送。若为重复的确认,则将其丢弃。
性能分析
简单、利用率低
3.4.3 后退N帧协议(GBN)
前言: GBN协议和SR协议,都是为了提高信道利用率。
流水线技术
在流水线技术中:
1.发送方需要缓存多个分组,可以发送多个分组。
2.如果发生帧丢失或者帧差错,那么就会用到帧的副本。(后文会提及)。我们需要更大的空间来存放这些副本。
后退N帧协议中的滑动窗口
建议大家认真看下图:
窗口的移动:
原来的发送窗口中是0~5帧,发送0帧之后,如果接收窗口接收到0帧,窗口后移一格,并发送确认帧ACK0。接收到确认帧后,发送窗口就会移动,移动一格,这时要发送1 ~ 6帧。
我们发送1和2帧,当然后面窗口中的其他帧也是可以发送的。
运行中的GBN(具体细节)
若接收成功:
发送方如果发送0帧,那么接收方就要接受0帧并返回确认帧ACK0。这个时候,接收方就会根据帧编码推算下一个帧为1号帧。
那么根据上图发送窗口发送1号帧,接受窗口成功接收到了1号帧,并返回ACK1。接收端推算出下一个帧应该为2号帧。
若接收失败:
可是2号帧在发送中意外丢失,没有给到接收窗口。而接收方继续发送3号帧,这时在接收窗口接收到了3号帧。可惜接收窗口很专一啊,2号帧没有来,谁来也不好使,接收窗口就会把3号帧丢弃,继续发送确认帧1,提醒发送窗口该发送2号帧了,4、5帧也是同等待遇。(专一的接收窗口,我哭了~~)。
接收失败的措施:
在发送窗口,每发送一个帧,就会启动超时计时器。比如我们的2号帧一旦发送,就会启动超时计时器。没有接收到确认帧2,就会超过计时器时间导致重新发送。
上面我们的发送窗口一直接收的是确认帧1,迟迟没来确认帧2,那么就会导致确认帧2以及2之后的,发送过的帧重新发送(即使这些帧在接收窗口接收到了)。
滑动窗口长度
很多人会问这个问题,既然为了提高信道利用率,那我的发送窗口岂不是越多越好?
这样显然是不对的。
若采用n个比特对帧编号,那么发送窗口的尺寸w应满足:1<=w<=2^n-1
如果发送窗口尺寸过大,会使的接收方无法区别新帧和旧帧。
我们举个例子:
如果n=2,那么编号为00、01、10、11对应0、1、2、3,w最大为3。
如果我们w=4,也就是发送窗口大小为4,在发送过程中,很不幸,所有数据帧发送失败,超时计时器结束之后,那么必然要全部重新发送
再次发送编号为0、1、2、3的数据帧,问题就来了,这是重新发送的,还是下一次全部发送过来的,接收方就会搞不清楚。
GBN协议性能分析
1.因连续发送数据帧而提高了信道利用率
2.在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低。
GBN协议重点
- 累计确认
- 接收方只按顺序接收帧,不按序无情丢弃
- 确认序列号最大的、按序到达的帧
- 发送窗口最大为2^n-1,接收窗口大小为1
3.4.4 选择重传协议(SR)
一、选择重传协议中的滑动窗口
二、SR发送方必须响应的三件事
三、SR接收方要做的事
四、SR 运行过程
3.5 信道划分介质访问控制
传输数据使用的两种链路:
-
点对点链路 应用:PPP协议,常用于广域网
-
广播式链路 应用:早期的总线以太网、无线局域网、常用于局域网
典型拓扑结构:总线型、星型
介质访问控制:采取一定措施,使得两对节点之间的通信不会发生互相干扰的情况
-
静态划分信道
信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。实际就是把广播信道转变为点对点信道。
-
频分多路复用FDM
每个用户占一个频段资源。
优点:系统效率较高、实现较容易。(并行)
-
时分多路复用TDM
将时间划为时间片、类似于操作系统CPU时间片轮转。(并发)
-
波分多路复用WDM
就是光的频分多路复用。
-
码分多路复用CDM
-
-
动态划分信道
-
轮询访问介质访问控制 令牌传递协议
既要不产生冲突,又要发送时占全部带宽
轮询协议:主节点轮流邀请从属结点发送数据
令牌传递协议:
-
随机访问介质访问协议
-
ALOHA协议
思想:想发就发
冲突如何检测?
如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。从图中可以看出发生冲突,但对于站点来说,它们自身并不知道发生冲突(并没有在发送数据的时候进行监听)。
如何检测:等站点数据帧发送完毕之后,接受方会收到一个错误的数据帧,接收方会返回NAK否定确认帧(或者直接不返回确认帧);发送方经过超时一个时间还未收到确认帧,就会知道帧在信道上发生冲突,因此就会重发冲突如何解决?
超时后等一个随机时间再重传。综上所述:发现ALOHA协议随机性很强,导致发送成功率很低。
时隙ALOHA协议控制想发就发的随意性
-
CSMA协议
先听后讲—信道空闲则发送,信道忙则等待。
碰撞即停。
退避重传—二进制指数退避重传。
多次碰撞,放弃发送—最多16次。
-
CSMA/CD协议
英文Carrier Sense Multiple Access with Collision Detection,意思是载波侦听多路访问/冲突检测。
采用该协议要求设备在发送帧的同时要对信道进行侦听,以确定是否会发生信道冲突,若在发送数据过程中检测到冲突,则需要进行冲突处理。整个协议的处理规程如下:
1 监听当前信道上是否有数据再发送,如果信道空闲,直接发送数据,如果信道忙,则按照一定的退避算法进行延时监听。
2 当信道允许发送数据时,发送数据。
3 数据发送过程中,边发送边监听,如果发送过程中检测到冲突,则停止发送数据,并发送阻塞信息,强化冲突,并转入1。截断二进制指数规避算法
最小帧长问题
CSMA/CD是建立在帧碰撞后及时停止发送,达到不浪费的效果。但有这种情况:由于帧太短了,还没停止发送,就发完了。
为了避免这种情况,有这一要求:
应用于半双工网络
-
CSMA/CA协议
英文Carrier Sense Multiple Access with Collision Avoidance,意思是载波侦听多路访问/冲突避免。
采用该协议要求设备要主动避免冲突而非被动侦测的方式来解决冲突问题。避免冲突的方法主要有两个:
一是监听到信道空闲时,并不是立即发送,而是等待一段时间再发送数据。
二是先发送一个很小的信道侦测帧RTS,如果收到最近的接入点返回的CTS,就认为信道是空闲的,然后再发送数据。
协议的主要流程如下:
1 首先检测信道是否有使用,如果检测出信道空闲,则等待一段随机时间后,才送出数据。
2 接收端如果正确收到此帧,则经过一段时间间隔后,向发送端发送确认帧ACK。
3 发送端收到ACK帧,确定数据正确传输,在经历一段时间间隔后,再发送数据。
-
-
3.6.1 局域网的基本概念和体系结构
局域网,LAN,广播信道。
决定局域网的主要要素
- 网络拓扑
星型拓扑,总线型拓扑(常用),环形拓扑,树形拓扑
- 传输介质
有线局域网:双绞线,同轴电缆,光纤
无线局域网:电磁波
- 介质访问控制方法
(1) CSMA/CD 常用于总线型局域网,(也可以树形网络)
(2)令牌总线 常用于总线型局域网,(也可以树形网络)
(3)令牌环 用于环形局域网,如令牌环网
局域网的分类
1.以太网 802.3 2.令牌环网 3.FDDI网 4,.ATM网 5.无线局域网 802.11 > WIFI
IEEE 802标准
局域网、城域网的技术标准。
IEEE 802.3 以太网
IEEE 802.5 令牌环网
IEEE 802.8 FDDI 光纤
IEEE 802.11 无线局域网
MAC子层和LLC子层
IEE 802的局域网描述的是OSI的数据链路层和物理层,把数据链路层分为了逻辑链路层LLC子层和介质访问控制MAC
子层。作用如下:
3.6.2 以太网
以太网 Ehternet,基带总线局域网规范,CSMA/CD。
以太网的两个标准
DIX Ethernet V2:第一个局域网产品(以太网)规约。
IEEE 802.3:IEEE 802委员会802.3工作组制定的第一个IEEE的以太网标准(帧格式有一丢丢改动)
所以别名:802.3局域网
以太网提供无连接、不可靠的服务
无连接:无握手过程
不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃(),差错纠正由高层负责。
(以太网只实现无差错接收,不实现可靠传输)
10BASE-T以太网
BASE - 传输基带信号, T表示使用双绞线,现在采用无屏蔽双绞线(UTP),传输速率10Mb/s。
特点:1. 物理上采用星型拓扑,逻辑上总线型,每段双绞线最长100m。
2.采用曼彻斯特编码。
3.采用CSMA/CD介质访问控制。
适配器与MAC地址
以太网MAC帧
现在常用的是以太网V2的格式。
FCS是CRC校验。
为什么没有结束标志?正常传输的曼彻斯特是有2个电压变化的,发送完了没有电压就代表结束了。
高速以太网
速率待遇100Mb/s
- 100BASE-T以太网,全双工就不用了CSMA/CD了,交换机会处理冲突域。
- 吉比特以太网
- 10吉比特以太网
3.6.3 无线局域网
WIFI 是IEEE802.11/g
802.11的MAC帧头格式
前两个地址是路由器,后两个是真正通信的手机。
还有其他的帧类型。BSSID是AP基站的MAC地址。
无线局域网的分类
1. 有固定设施的无线局域网
WIFI名字叫服务集标识符。
2. 无固定基础设施的无线局域网的自组织网络
3.7 PPP协议和HDLC协议
分组交换技术
目的:资源共享
因特网是世界范围内最大的广域网
广域网点对点比较多。
PPP协议
比如拨号电话连入因特网。
只支持全双工链路。
PPP协议应该满足的要求
PPP协议无需满足的要求
PPP协议的三个组成部分
LCP建立物理连接,NCP根据不同过的网络层协议建立逻辑连接。
PPP协议的状态图
PPP协议的帧格式
面向字节。
HDLC协议
在同步网,传输数据,面向比特,ISO开发的。
同样可以透明传输,“0比特插入法”,用硬件实现
全双工通信
所有帧CRC检验,可以编号,可防止漏收或重份,传输可靠性高。
HDLC的站
主站、从站、复合站
三种数据操作方式:
- 正常响应方式
- 异步平衡方式:每一个复合站都平等
- 异步响应方式:从站可以不经过主站同意。
HDLC的帧格式
地址A:1和3是从站地址,2是应答站的地址
控制C:只看前两位,具体分类如下
PPP协议和HDLC协议 异同
- 只 全双工
- 透明传输,PPP皆可以0比特填充,也可以字节填充,HDLC只能0比特
- 都可以实现差错检测(CRC),但不纠错
3.8 链路层设备
在物理层扩展以太网
在冲突域中同时只有1个计算机可以通信。
2种方式:
在链路层扩展以太网
2个设备:网桥 & 交换机
网桥
网桥会根据MAC帧的目的地址对帧进行转发的过滤。
网段:一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分。
网桥的两端是2个网段。
网桥的优点:
过滤通信量,增大吞吐量。
扩大了物理范围
提高了可靠性(网络故障对其他网段无影响)
互联不同物理层、不同MAC层和不同速率的以太网。
网桥分类1 透明网桥
透明网桥:“透明”是指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用的设备——
自学习:第一次在线路上传输遇到的时候要记录,进行学习,构建转发表。转发表更新很快,几分钟就重建一次。
网桥分类2 源路由网桥
源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中。
方法:源站以广播的方式向欲通信的目的站发送一个发现帧。
多接口网桥——以太网交换机
独占传输媒体带宽:每一个集线器端口线路可以占用总带宽
以太网交换机的两种交换方式
(1)直通式交换机
查完目的地址(6B)就直接立刻转发。
延迟小,可靠性低,无法支持具有不同速率的端口的交换。
(2)存储转发式交换机(常用)
将帧放入高速缓存,并检查是否正确,正确则转发, 错误则丢弃。
延迟大,可靠性高,可以支持具有不同速率的端口的交换。
冲突域和广播域
例题: