3.4 流量控制和可靠传输机制
数据链路层流量控制控制相邻节点发送速率。
使用确认和超时重传两种机制实现可靠传输。
3.4.1 流量控制,可靠传输与滑动窗口机制
-  1.停止—等待协议协议基本原理 
 发送方发每发送一帧,等待接收方回应的ACK发送下一帧或超出计时没收到ACK就重发。
-  2.滑动窗口流量控制原理【解决流量控制】 
 发送方维持允许发送的帧号,接受方维持允许接收的帧号。发送方用发送窗口进行流量控制。
-  3.可靠传输【 发送端发送什么接收方就接收什么】
 数据链路层使用确认和超时重传两种机制完成!
 ARQ:自动重传请求
3.4.2 单帧滑动窗口与停止—等待协议
发送方发每发送一帧,等待接收方回应的ACK发送下一帧或超出计时没收到ACK就重发。
发送方和接收方都要设置一个帧缓冲区:发送方发送数据后必须等到接收方的ACK才能删除缓冲区副本。【用于重传】
计时器的的时间比RTT稍微长一点
- 窗口大小
 发送窗口大小:1个
 接收窗口大小:1个
 编号位数:1位
 
      
       
        
        
          信道利用率 
         
        
          U 
         
        
          = 
         
         
          
          
            T 
           
          
            D 
           
          
          
          
            T 
           
          
            D 
           
          
            + 
           
          
            R 
           
          
            T 
           
          
            T 
           
          
            + 
           
          
            T 
           
          
            A 
           
          
         
        
       
         信道利用率U=\frac{TD}{TD+RTT+TA} 
        
       
     信道利用率U=TD+RTT+TATD
  
      
       
        
        
          信道吞吐量 
         
        
          = 
         
        
          信道利用率 
         
        
          ∗ 
         
        
          发送方速率 
         
        
       
         信道吞吐量=信道利用率*发送方速率 
        
       
     信道吞吐量=信道利用率∗发送方速率
 TD:发送数据时延
 RTT:往返时延
 TA:确认帧ACK发送时延
缺点:信道利用率低
 
3.4.3 多帧滑动窗口与后退N帧协议(GBN)
与单帧滑动窗口对比:①新增序号范围 ②发送发缓存多个分组
发送方发送按顺序发送窗口内的所有帧,接收方只能按顺序接收帧,左边的帧出现问题不能正常接收,右边的帧到了也不能接收。
接收方会回复一个包含接收到最后的一个正确帧的编号的ACK。
 发送发需要发送从ACK中帧编号的下一个帧开始连续发送。
-  窗口大小: 
 发送窗口大小: [ 1 , 2 n − 1 ] [1,2^n-1] [1,2n−1]个
 接收窗口大小:1个
 编号位数:n位
-  过程-发送方 
 上层调用:先检测窗口是否满了。没满就产生帧并发送。满了就告诉上层【或者缓存】
 接收到ACK:累计确认,表明收到k号帧和前面所有帧
 超时重传:重传所有没有确认的帧。
-  过程-接收方 
 接收到正确帧:发送ACK给发送发,并将数据交付给网络层
 接收到错误帧:经过差错检测发现错误,直接丢弃。
-  重要总结: 
 ①累计确认
 ②接收方只按序接收帧
 ③确认序列号是最后按序到达的帧
  
3.4.3 多帧滑动窗口与选择重传协议(SR)
与GBN对比:①设置单个帧确认 ②增大接收方窗口 ③设置接收缓存 ④缓存乱序的帧
发送方按顺序发送窗口内所有未确认的帧
 接收方可以接收接收窗口范围内的所有帧。
 对正确接收的帧给出ACK回应。
 当发送方的发送窗口的最左边得到ACK回应就移动窗口。
-  窗口大小: 
 发送窗口大小: [ 1 , 2 n − 1 ] [1,2^{n-1}] [1,2n−1]个
 接收窗口大小: [ 1 , 2 n − 1 ] [1,2^{n-1}] [1,2n−1]个
 编号位数:n位
 发送窗口大小+接收窗口大小≤ 2 n 2^n 2n
-  过程-发送方 
 上层调用:查找下一个可用帧序列,在窗口就发送。不在要么缓存要么返回给上层
 接收到ACK:标记已经接收窗口,若为最小编号则移动窗口
 超时重传:一个事件【计时器到时了】只重传一个帧
-  过程-接收方 
 (来者不拒)接收确认的帧,无论是否按序。失序的帧缓存,发送确认帧。
 只有接收到最小序号的帧才能移动窗口。
 接收到窗口外的帧直接回复ACK
-  重要总结: 
 ①逐个确认,收一个确认一个
 ②只重传出错的帧
 ③接收方也有缓存
  
3.5 介质访问控制
主要任务: 为每个节点隔离来自同一信道上其他结点所传信号
3.1.5 信道划分介质访问控制【静态划分,无冲突】
多路复用技术:把多个信号组合在一条物理信道上进行传输,使计算机或终端设备共享信道资源,提高信道利用率。
信道划分:实际上就是把广播信道变成点对点信道。
-  1.频分多路复用(FDM)【用户各占一部分频率带宽,可以同时发送】 
 分析:将多路基带信号调制到不同频率的载波段。
 子带宽之和不能超过信道总带宽!!!
 适合:模拟信号
 优点:充分利用介质带宽,系统效率高。技术成熟,易实现。
  
-  2.(同步)时分多路复用(TDM)【将时间划分为等长的帧,每个用户在帧内轮流使用】 
 分析:将物理信道按时间片分成若干时间片,轮流地分配给多个信号使用。
 (异步/统计)时分多路复用(STDM) 解决了同步时分多路复用利用率不高地缺陷。所有用户可以在任意时隙内将帧发送给集中器,当集中器的一个帧满了就可以发送出去。
 适合:数字信号。
  
-  3.波分多路复用(WDM) 
 分析:在光纤中传输多种不同波长(频率)的光信号。用波长复用分解器将各路波长分解出来。
 优点:光波频段高,带宽高。
-  4.码分多路复用(CDM)【共享信道频率和时间】 
 分析:①每个站各有一个码片 ②每个站之间规格化内积为0 ③发送1就发送码片,发送0就发送码片的反码
S ・ T ≡ 1 M ∑ i = 1 M S i ⋅ T i = 0 S・T≡\frac{1}{M}\sum_{i=1}^{M} S_i \cdot T_i = 0 S・T≡M1∑i=1MSi⋅Ti=0
设S为A站码片向量,T为B站码片向量,K为C站码片向量可知
S ・ T = 0 S・T=0 S・T=0
S ・ T ‾ = 0 S・\overline{T}=0 S・T=0
S ・ S = 1 S・S=1 S・S=1
S ・ T ‾ = − 1 S・\overline{T}=-1 S・T=−1
( S + T ‾ ) ・ S = S ・ S + T ‾ ・ S = 1 + 0 = 1 (S+\overline{T})・S=S・S+\overline{T}・S=1+0=1 (S+T)・S=S・S+T・S=1+0=1
( S + T ‾ ) ・ T = S ・ T + T ‾ ・ T = 0 + ( − 1 ) = − 1 (S+\overline{T})・T=S・T+\overline{T}・T=0+(-1)=-1 (S+T)・T=S・T+T・T=0+(−1)=−1
( S + T ) ・ K = S ・ K + T ・ K = 0 + 0 = 0 (S+T)・K=S・K+T・K=0+0=0 (S+T)・K=S・K+T・K=0+0=0
由上面公式可知如果
发送了1,用码片相乘会变成1
发送了0,用码片相乘会变成-1
若没有发送信息,用码片相乘会变成0
优点:频谱利用率高,抗干扰能力强,保密性强,语音质量好。主要用于无线通信。
3.5.2 随机访问介质控制【动态划分信道,用户占用更大带宽,有冲突】
-  1.ALOHA协议【不听就说】 (可以检测到冲突)
 (1)纯ALOHA协议
 特点:随时发送,想发送就直接发送,接收方接收到正确数据会回复ACK,若发送端在计时器时间内没有收到ACK,等待一个随机时间重新发送数据。
 (2)时隙ALOHA协议
 改进:将各站的时间同步起来,将时间划分成等长时隙,每个站只能在时隙的开始时发送数据。
 总结:①纯ALOHA协议比时隙ALOHA协议的吞吐量低,效率低 ②时隙ALOHA只能在每个时隙开始阶段发送数据
-  2.CSMA协议【发送前监听】 (不能检测到冲突)
 CS->载波侦听 MA->多点接入
 (1)1-坚持 CSMA
 忙则一直监听。空闲直接发送
 (2)非坚持 CSMA
 先监听,若信道忙,等待一个随机时间后再监听。空闲直接发送。
 缺点:可能都在等待一个随机时间,导致信道利用率低。
 优点:随机延迟时间可以减少冲突概率
 以增加网络延迟来减少冲突
 (3)p-坚持 CSMA【采用时分信道】
 忙则持续监。若空闲,会以p的概率在现在的时隙发送数据。或者以1-p的概率在下一个时隙发送数据。
| 信道状态 | 1-坚持 | 非坚持 | p-坚持 | 
|---|---|---|---|
| 空闲 | 立即发送数据 | 立即发送数据 | 以概率p发送数据,或以1-p的概率在下一个时隙发送数据 | 
| 忙 | 持续监听 | 放弃监听,等待随机事件后再监听 | 持续监听,直到信道空闲 | 
- 3.CSMA/CD协议【发送前监听】(适用于总线型网络或半双工网络)
 CD->碰撞检测
 发送数据时,先监听。若空闲,边发送数据变监听。
 特点:数据的发送时延要大于RTT(2倍的单向传播时延)。若发送的数据太短,在碰撞后的信号传播到发送端发送完数据前,就检测不到碰撞的冲突。因此发送时延要大于RTT
设帧长度为L,发送速率为K,信道数据传输时延为τ
发送时延 = L K ≥ 2 ∗ T = R T T ( 往返时延 ) 发送时延=\frac{L}{K}≥2*T=RTT(往返时延) 发送时延=KL≥2∗T=RTT(往返时延)
最小帧长 = 2 ∗ 发送速率 ∗ 单项传播时延 = 发送速率 ∗ R T T 最小帧长=2*发送速率*单项传播时延=发送速率*RTT 最小帧长=2∗发送速率∗单项传播时延=发送速率∗RTT
以太网规定的的最短帧长是64B
解决冲突的算法: 截断二进制指数退避算法
1.设置参数
K
2.k=min{重传次数,10}
3.在{0,1,2… 2 k − 1 2^k-1 2k−1}中随机选一个数r
4.在r*RTT后重传
5.重传16次失败放弃传送数据,并报告给高层
- 3.CSMA/CA协议
 CA->碰撞避免
 发送数据:
 ①先检测信道是否空闲
 ②空闲则发出RTS请求【帧/信号】
 ③接收方发送CTS,同时预约信道,禁止接收其他端数据
 ④接收方收到数据后使用CRC(循环冗余码)检测,根据情况发送ACK
 ⑤发送方没收到确认帧,进行截断二进制指数退避算法重发
 
 总结:①预约信道 ②ACK确认帧 ③RTS(请求发送)和CTS(允许发送)
CSMA/CD和CSMA/CA的对比:
 相同点:先听再说,有限次重传
 不同点:①CSMA/CD用于总线以太网,CSMA/CA用于局域网。②载波监听方式不同③传输介质不同 ④CA避免,CD检测
3.5.3 轮询访问:令牌传递协议
- 1.轮询协议:
 一个主结点依次询问各个从节点是否发送数据。【以一个短帧的形式】
 缺点:①轮询开销 ②等待延迟③单点故障(主节点死亡)
  
- 2.令牌传递协议【令牌就是一个特殊的短帧】
 传输介质的物理拓扑不必是环,但逻辑上必须是环,一般物理是星型拓扑结构
 1.令牌沿着总线在各个站点之间依次传递。
 2.需要发送数据的节点将数据封装在令牌中,并设置令牌的标志位。
 3.站点查看目的地址是不是自己。是就接收数据
 
| 静态信道划分 | 随机访问MAC协议 | 轮询访问协议 | |
|---|---|---|---|
| 举例 | FDM/TDM/WDM/CMD | ALOHA协议/CSMA协议 | 轮询访问协议/令牌传递协议 | 
| 是否冲突 | 无 | 有 | 无 | 
| 网络负载重时 | 共享信道效率高,且公平 | 产生冲突开销 | 效率高 | 
| 网络负载轻时 | 共享信道效率低 | 共享信道效率高,单个节点可以利用全部带宽 | 效率低 | 


















![[SpringCloud] Feign Client 的创建 (二) (五)](https://img-blog.csdnimg.cn/direct/55d963f193374131acba6a7bdf855588.png)
