共享信道要考虑的问题是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC。
媒体接入控制
静态划分信道
预先固定分配好信道。这类方法非常不灵活。对于突发性数据传输信道利用率会很低。通常在无线网络的物理层中使用。
动态接入控制
受控接入(已淘汰)
随机接入
所有站点通过竞争,随机地在信道上发送数据,如果恰巧由两个或更多的站点在同一时刻发送数据,则信号在共享媒体上就要产生碰撞,使得这些站点的发送都失效。因此这类协议要解决的问题是如何尽量避免冲突及在发送冲突后如何尽快恢复通信。
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用共享媒体技术。
频分复用的所有用户同时占用不同的频带资源并行通信。
各子信道之间需要留出隔离频带,以免造成子信道间的干扰。
主要用于多址接入。
复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
多址即多点接入处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性的分配给用户的应用中,多址是不需要的,如无线广播或电视广播站。
码分复用的每个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
载波监听CS
每一个站在发送帧之前先要检测以下总线上是否有其他站点在发送帧(先听后说);若检测到总线空闲96比特时间,则发送这个帧;若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
多址接入MA
多个站连接在一条总线上,竞争使用总线。
碰撞检测CD
每个正在发送帧的站边发送边检测碰撞(边说边听);一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送(一旦冲突,立即停说,等待时机,重新再说)。
主机最多经过2t的时长就可检测到本次发送是否遭受了碰撞;因此,以太网的端到端往返传播时延称为争用期或碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞;每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的。取决于另一个发送帧的主机到本主机的距离,但不会超过总线的端到端往返传播时延,即一个争用期时间。
以太网中发送帧的主机越多,端到端往返时延越大,发生碰撞的概率就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长。
以太网规定最小帧长为64字节,即512比特;如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞;如果在争用期没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞;如果在争用期内检测到碰撞,就立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。
退避时间为争用期的整数倍,从{0,1,……,(2^k - 1)}中随机选出一个数,k = min[重传次数,10]
若连续多次发生碰撞,就表明可能有较多的主机参与竞争信道。使用退避算法可使重传需要推迟的平均时间随重传次数而增大,因而减小发生碰撞的概率,有利于整个系统的稳定;当重传16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告。
CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。
在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发送碰撞。
在无线局域网中,不能使用碰撞检测CD:
A和C都检测不到对方的无线信号;A和C都给B发送帧时,产生碰撞;A和C无法检测到碰撞。
802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧;帧间间隔的长短取决于该站点要发送的帧的类型:高优先级帧需要等待的时间较短,因此可优先获得发送权;低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这减少了发生碰撞的机会。
常用的两种帧间间隔:
源站为什么在检测到信道空闲后还要再等待一段时间DIFS?
可能有其他的站有高优先级的帧要发送。若有,就让高优先级帧先发送。
目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?
SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间内,一个站点应当能够从发送方式切换到接收方式。
信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?
防止多个站点同时发送数据而产生碰撞。
当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。
必须使用退避算法的情况:
在执行退避算法时,站点为退避计数器设置一个随机的退避时间。当退避计时器的时间减小到0时,就开始发送数据;当退避计时器的时间还未减小到0时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。
在进行第i次退避时,退避时间在世系编号{0,1,……,2^(2+i) - 1}中随机选择一个,然后乘以基本退避时间就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时,对应于第6次退避,就不再增加了。
为了尽可能减少碰撞的概率额降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。
除源站和目的站以外的其他各站,在收到CTS帧或数据帧后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
由于RTS帧和CTS帧很短,发送碰撞的概率,碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延,碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11标准规定了3种情况供用户选择:
除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要的持续时间,此为802.11的虚拟载波监听机制。利用此机制,站点只要监听到RTS帧,CTS帧或数据帧中的任一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。
参考
B站:计算机网络微课堂