流量控制与可靠传输机制
- 较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
- 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复确认
传输层流量控制手段:接收端给发送端一个窗口公告
流 量 控 制 的 方 法 { 停 止 等 待 协 议 滑 动 窗 口 协 议 { 后 退 N 帧 协 议 ( G B N ) 选 择 重 传 协 议 ( S R ) 流量控制的方法\begin{cases} 停止等待协议 \\ 滑动窗口协议 \begin{cases} 后退N帧协议(GBN) \\ 选择重传协议(SR) \\ \end{cases} \\ \end{cases} 流量控制的方法⎩⎪⎨⎪⎧停止等待协议滑动窗口协议{后退N帧协议(GBN)选择重传协议(SR)
流量控制、可靠传输与滑动窗口机制
- 停止-等待流量控制基本原理
- 每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
- 停止-等待协议:发送窗口大小=1,接收窗口大小=1
- 滑动窗口流量控制基本原理
- 后退N帧协议:发送窗口大小>1,接收窗口大小=1
- 选择重传协议:发送窗口大小>1,接收窗口大小>1
- 可靠传输机制
- 数据链路层的可靠传输通常使用确认和超时重传两种机制来完成。
确认是一种无数据的控制帧,这种控制帧使得接收方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。
超时重传是指发送方在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。
单帧滑动窗口与停止-等待协议
- 无差错情况
- 有差错情况
(1)数据帧丢失或检测到帧出错
(2)ACK丢失
(3)ACK迟到
- 停止-等待协议性能分析:通信信道的利用率很低
信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
信道吞吐率=信道利用率*发送方的发送速率
多帧滑动窗口与后退N帧协议(GBN)
- 在后退N帧式ARQ中,发送方无须在收到上一个帧的ACK后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的N个帧。换句话说,接收方只允许按顺序接收帧。
- 后退N帧协议的接收窗口为1,可以保证按序接收数据帧。若采用n个比特对帧编号,则其发送窗口的尺寸Wₜ应知足 1 ≤ W ₜ ≤ 2 n − 1 1≤Wₜ ≤2^n-1 1≤Wₜ≤2n−1。若发送窗口的尺寸大于 2 n − 1 2^n-1 2n−1,则会造成接收方无法辨认新帧和旧帧。
GBN发送方必须响应的三件事:
- 上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。 - 收到了一个ACK
GBN协议中,对n号帧的确认采用累积确认的方式,表明接收方已经收到n号帧和它之前的全部帧。 - 超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。
GBN接收方要做的事:
如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。
其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum(下一个按序接收的帧序号)。
- GBN协议性能分析:
- 因连续发送数据帧而提高了信道利用率
- 在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低
多帧滑动窗口与选择重传协议(SR)
- 为进一步提高信道的利用率,可设法只重传出现差错的数据帧或者是计时器超时的数据帧。但这时必须加大接收窗口,以便先收下发送序号不连续但仍在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传ARQ协议。
- 在选择重传协议中,每个发送缓冲区对应一个计时器,当计时器超时时,缓冲区的帧就会重传。另外,该协议使用了比上述其他协议更有效的差错处理策略,即一旦接收方怀疑帧出错,就会发一个否定NAK给发送方,要求发送方对NAK中指定的帧进行重传。
- 选择重传协议的接收窗口尺寸 W R W_R WR和发送窗口尺寸 W T W_T WT都大于1,一次可以发送或接收多个帧。在选择重传协议中,接收窗口和发送窗口的大小是相同的,且最大值都为序号范围的一半,若采用n比特对帧编号,则需要满足: W T m a x = W R m a x = 2 n − 1 W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n−1
SR发送方必须响应的三件事:
- 上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。 - 收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。 - 超时事件
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
SR接收方要做的事:
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
如果收到了窗口序号外(小于窗口下界)的帧,就返回一个ACK。其他情况,就忽略该帧。
介质访问控制
-
传输数据使用的两种链路:点对点链路和广播式链路
(1)点对点链路:两个相邻节点通过一个链路相连,没有第三者
应用:PPP协议,常用于广域网
(2)广播式链路:所有主机共享通信介质
应用:早期的总线以太网、无线局域网,常用于局域网
典型拓扑结构:总线型、星型(逻辑总线型) -
介质访问控制所要完成的主要任务:为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动结点的传输。
介 质 访 问 控 制 { 静 态 划 分 信 道 — — 信 道 划 分 介 质 访 问 控 制 { 频 分 多 路 复 用 ( F D M ) 时 分 多 路 复 用 ( T D M ) 波 分 多 路 复 用 ( W D M ) 码 分 多 路 复 用 ( C D M ) 动 态 划 分 信 道 { 轮 循 访 问 介 质 访 问 控 制 — — 令 牌 传 递 协 议 随 机 访 问 介 质 访 问 控 制 { A L O H A 协 议 { 纯 A L O H A 协 议 时 隙 A L O H A 协 议 C S M A 协 议 { 1 − 坚 持 C S M A 非 坚 持 C S M A p − 坚 持 C S M A C S M A / C D 协 议 C S M A / C A 协 议 介质访问控制\begin{cases} 静态划分信道——信道划分介质访问控制 \begin{cases} 频分多路复用(FDM) \\ 时分多路复用(TDM) \\ 波分多路复用(WDM) \\ 码分多路复用(CDM) \\ \end{cases} \\ 动态划分信道 \begin{cases} 轮循访问介质访问控制——令牌传递协议 \\ 随机访问介质访问控制 \begin{cases} ALOHA协议 \begin{cases} 纯ALOHA协议 \\ 时隙ALOHA协议 \\ \end{cases} \\ CSMA协议 \begin{cases} 1-坚持CSMA \\ 非坚持CSMA \\ p-坚持CSMA \\ \end{cases} \\ CSMA/CD协议 \\ CSMA/CA协议 \\ \end{cases} \\ \end{cases} \\ \end{cases} 介质访问控制⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧静态划分信道——信道划分介质访问控制⎩⎪⎪⎪⎨⎪⎪⎪⎧频分多路复用(FDM)时分多路复用(TDM)波分多路复用(WDM)码分多路复用(CDM)动态划分信道⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧轮循访问介质访问控制——令牌传递协议随机访问介质访问控制⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧ALOHA协议{纯ALOHA协议时隙ALOHA协议CSMA协议⎩⎪⎨⎪⎧1−坚持CSMA非坚持CSMAp−坚持CSMACSMA/CD协议CSMA/CA协议
信道划分介质访问控制
- 信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。
- 频分多路复用(FDM)【共享时间而不共享空间】
- 用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源。
- 时分多路复用(TDM)【共享空间而不共享时间】
-
将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道。
-
频分复用——“并行”
-
时分复用——“并发”
-
为了提高信道利用率,提出了一种改进的时分复用:统计时分多路复用(STDM)
每一个STDM帧中的时隙数小于连接在集中器上的用户数。各用户有了数据就随时发往集中器的输入缓存,然后集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,一个STDM帧满了就发出。STDM帧不是固定分配时隙,而是按需动态分配时隙。
- 波分多路复用(WDM)【共享时间而不共享空间】
- 波分多路复用就是光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
- 码分多路复用(CDM)【既共享时间也共享空间】
- 码分多址(CDMA)是码分复用的一种方式。1个比特分为多个码片/芯片(chip),每一个站点被指定一个唯一的m位的芯片序列,发送1时发送芯片序列(通常把0写成-1)。
随机访问介质访问控制
ALOHA协议
(1)纯ALOHA协议协议
- 纯ALOHA协议思想:不监听信道,不按时间槽发送,随机重发
- 冲突如何检测?——如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突
- 冲突如何解决?——超时后等一随机时间再重传
(2)时隙ALOHA协议
- 时隙ALOHA协议的思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送
- 纯ALOHA比时隙ALOHA吞吐量更低,效率更低
- 纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发
CSMA协议(Carrier Sense Multiple Access,载波监听多路访问)
- CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。 - MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
- 协议思想:发送帧之前,监听信道。
(1)1-坚持CSMA
- 坚持指的是对于监听信道忙之后的坚持
- 1-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道
空闲则直接传输,不必等待
忙则一直监听,直到空闲马上传输
如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程 - 优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失
- 缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免
(2)非坚持CSMA
- 非坚持指的是对于监听信道忙之后就不继续监听
- 非坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道
空闲则直接传输,不必等待
忙则等待一个随机的时间之后再进行监听 - 优点:采用随机的重发延迟时间可以减少冲突发生的可能性
- 缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低
(3)p-坚持CSMA
- p-坚持指的是对于监听信道空闲的处理
- p-坚持CSMA思想:如果一个主机要发送消息,那么它先监听信道
空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输
忙则持续监听直到信道空闲再以p概率发送
若冲突则等到下一个时间槽开始再监听并重复上述过程 - 优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案
- 缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费
三种CSMA对比总结
1-坚持CSMA | 非坚持CSMA | p-坚持CSMA | |
---|---|---|---|
信道空闲 | 马上发 | 马上发 | p概率马上发;1-p概率等到下一个时隙再发送 |
信道忙 | 继续坚持监听 | 放弃监听,等一个随机时间再监听 | 持续监听,直到信道空闲再以p概率发送 |
CSMA/CD协议(Carrier Sense Multiple Access with Collision Detection,载波侦听多路访问/碰撞检测)
- CD:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。
- 适应场景:总线形网络或半双工网络环境
- CSMA/CD的工作流程可简单概括为:“先听后发,边听边发,冲突停发,随机重发”
- 把以太网端到端往返时间 2 τ 2\tau 2τ称为争用期(又称冲突窗口或碰撞窗口)。每个站在自己发送数据之后的一小段时间内,存在发送碰撞的可能性,只有经过争用期这段时间还未检测到碰撞时,才能确定这次发送不会碰撞。
- 为了确保发送站在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传播时延至少要两倍于信号在总线中的传播时延,所以CSMA/CD总线网中的所有数据帧都必须要大于一个最小帧长。任何站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。最小帧长的计算公式为:最小帧长=总线传播时延×数据传输速率×2
- 除检测冲突外,CSMA/CD还能从冲突中恢复。一旦发生了冲突,参与冲突的两个站点紧接着再次发送是没有意义的,如果它们这样做,那么将导致无休止的冲突。CSMA/CD采用二进制指数退避算法来解决碰撞问题。
①确定基本退避(推迟)时间为争用期 2 τ 2\tau 2τ。
②定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10]。当重传次数不超过10时,k等于重传次数;当重传次数大于10时,k就不再增大而一直等于10。
③从离散的整数集合 [ 0 , 1 , . . . , 2 k − 1 ] [0,1,...,2^k-1] [0,1,...,2k−1]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即 2 τ t 2\tau t 2τt。
④当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。
若连续多次发生冲突,就表明可能有较多的站参与争用信道,使用此算法可使重传需要推迟的平均时间随重传次数的增大而增大,因而减小发生碰撞的概率,有利于整个系统的稳定。
CSMA/CA协议(Carrier Sense Multiple Access with Collision Avoidande,载波侦听多路访问/避免碰撞)
-
CSMA/CA协议工作原理:
发送数据前,先检测信道是否空闲。
空闲则发出RTS(request to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
接收端收到RTS后,将响应CTS(clear to send)。
发送端收到CTS后,开始发送数据帧(同时预约信道:发送方告知其他站点自己要传多久数据)。接收端收到数据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧。
发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)。 -
使用RTS和CTS帧会使网络的通信效率有所下降,但这两种帧都很短,其长度分别是20字节和14字节,与数据帧(最大可达2346字节)相比开销不算大。相反,若不使用这种控制帧,一旦发生碰撞而导致数据帧重发,则浪费的时间更多。信道预约不是强制性规定,各站可以自己决定使用或不适用信道预约。只有当数据帧长度超过某一数值时,使用RTS和CTS帧才比较有利。
-
CSMA/CD和CSMA/CA:
相同点:
1.CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心是先听后发。换言之,两个在接入信道之前都须要进行监听。当发现信道空闲后,才能进行接入。
2.使用二进制退避算法来解决碰撞问题(CSMA/CA协议并不是指完全避免碰撞,而是协议的设计要尽可能降低碰撞发生的概率)
不同点:
1.传输介质不同:CSMA/CD用于总线式以太网【有线】,而CSMA/CA用于无线局域网【无线】。
2.载波检测方式不同:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式。
3.CSMA/CD检测冲突,CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。
轮循访问:令牌传递协议
- 信道划分介质访问控制(MAC Multiple Access Control)协议:
基于多路复用技术划分资源。
网络负载重:共享信道效率高,且公平
网络负载轻:共享信道效率低 - 随机访问MAC协议:冲突】
用户根据意愿随机发送信息,发送信息时可独占信道带宽。
网络负载重:产生冲突开销
网络负载轻:共享信道效率高,单个结点可利用信道全部带宽 - 轮询访问MAC协议/轮流协议/轮转访问MAC协议:
既要不产生冲突,又要发送时占全部带宽。
- 轮循访问
- 主结点轮流"邀请"从属结点发送数据。
- 问题:①轮询开销 ②等待延迟 ③单点故障
- 在轮询访问中,用户不能随机地发送数据,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。当某结点使用信道时,其他结点不能使用信道。
- 令牌传递协议
- 在令牌传递协议中,一个令牌沿着环形总线在各结点计算机间依次传递。令牌是一个特殊格式的MAC控制帧,其本身不包含信息,仅控制信道的使用,确保在同一时刻只有一个站点能够独占信道。当环上的一个站点希望传送帧时,必须等待令牌。一旦收到令牌,站点便可启动发送帧。帧中包括目的站点地址,以标识哪个站点应接收此帧。站点只有取得令牌后才能发生数据帧,因此令牌环网不会发生碰撞。站点在发送完一帧后,应释放令牌,以便让其他站使用。
- 应用于令牌环网(物理星型拓扑,逻辑环形拓扑)。
- 采用令牌传送方式的网络常用于负载较重、通信量较大的网络中。