链路层介质访问控制

介质访问控制(MAC)子层是属于链路层的一个子层,主要任务是协调活动结点的传输,由于在链路层的链路可以分为:

        1)点对点链路

        2)广播式链路

       对于广播式的链路,由于其节省线路、共享信道,因此应用较多,当局域网处在同一个冲突域 的时候(比如说在同一个集线器下工作的各个设备)就要考虑到各个主机直接通信时的冲突问题。而广播式的链路中存在的问题是:如何保证各个结点直接的通信不被干扰?且在多个结点请求通信时该如何分配信道的问题,对此有两类解决方案:

静态划分信道

        静态划分信道,即结点请求发送数据帧时所得到的分配的信道资源是静态不变的,不会因为当前的网络状态而灵活地分配给此结点更多的信道资源。(若某个结点在请求发送数据帧时其他结点全都空闲,没有帧要发送,此时该结点并不能独占所有带宽发送自己的帧,换言之,无论当前网络状态如何,结点所分配道德资源都是一定的),静态划分信道有四种:

        1)频分多路复用(FDM):即为每个结点分配某个固定的频段,每个结点只能在自己的频段发送数据帧。

        2)时分多路复用(TDM):将每个时间单位分为n个时间片,每个时间片分配给某个固定的结点,每个结点只能在单位时间的自己被分配到的某个固定时间片内发送数据帧。改进时分多路复用诞生了统计时分多路复用(STDM),将各个结点要发送的数据帧收集起来,根据特定的算法,比如先来先服务(FCFS)来时分发送,这样就能大大提高信道利用率。

        3)波分复用(WDM):将光波的每个特定波段分给某个结点,类似于频分多路复用(光的“频分多路复用”)。

        4)码分复用(CDM):为每个结点指派一个唯一的码片序列,被分配结点就根据这个码片序列来发送1和0信号,比如站点A被分配的码片序列为(-1,-1,-1,1,1,-1,1,1),如果该站点发送(-1,-1,-1,1,1,-1,1,1)即视为发送了一个1信号,如果要发送0信号就发送该码片的反码,因此,发送(1,1,1,-1,-1,1,-1,-1)视为站点A发送了一个0信号。该方法如何实现复用呢?为实现复用,为多个站点分配码片时让这些码片相互正交。

        我们使用A站点和B站点来模拟同时发送的情形,根据上述条件,A站点被分配的码片为(-1,-1,-1,1,1,-1,1,1),我们再为B站点分配一个码片:(1,1,-1,1,-1,1,1,1)(A和B相互正交)。A站点想要发送的某段机器数据为1,B站点想要发送的某段机器数据为1,则它们应发送的实际数据为A(-1,-1,-1,1,1,-1,1,1),B为(1,1,-1,1,-1,1,1,1),实际发送的数据发送时每一位相互叠加,A和B的第一位都为1,故叠加为(0,0,-2,2,0,0,2,2)。

        接收端接收到的数据即为(0,0,-2,2,0,0,2,2),由于是接收端为A站点和B站点分配的码片,因此只需用对应站点的码片与得到的数据进行规格化内积,即可得到对应站点发送的数据,比如:
        A站点:(-1,-1,-1,1,1,-1,1,1)·(0,0,-2,2,0,0,2,2)= 8/8=1

        故A发送的数据被还原,为1。

动态划分信道:

        动态划分信道,即站点要发送数据帧时可以根据当时的信道情况而得到动态的信道资源(可能取到全部),但是可能在同一时刻有多个站点想要发送数据,同时发送数据会导致冲突,造成信道上原来正在发送的数据被污染,接收端无法正确收到,因此需要解决先后顺序问题和冲突问题。而动态访问信道又分成了两种:随机访问介质访问控制和轮询访问介质访问控制。

        随机访问介质访问控制:

                1)ALOHA协议:每个站点只要有数据帧发送就直接发送,不管信道上会不会产生冲突,而接收端在收到正确的数据帧后发送一个ACK,若发送站点收到ACK,就表明自己发出的数据帧被正确收到,如果在时钟超时后仍为收到ACK,则视为发生了冲突,发送站点就会在过段时间后接着发送数据帧,直到收到ACK为止。

                2)时隙ALOHA协议:将信道的时间分为了一个个的时间片,每个站点只要有数据帧发送就要等到一个时间片到来在此时间片上发送,这样可以减少冲突,增加吞吐量(同一时间内正确发送的数据帧变多了)。其他机制与ALOHA协议类似。

                3)CSMA协议:

                         每个站点可以检测当前的信道状态,信道有空闲和忙两种状态。

                        ① 1-坚持CSMA:

                                空闲:立即发送

                                忙:坚持等到空闲了再发送

                        ② 非坚持CSMA:

                                空闲:立即发送

                                忙:放弃侦听一段随机的时间

                        ③ p-坚持CSMA

                                空闲:以P的概率发送,1-P的概率不发送

                                忙:坚持到空闲了再判定发不发送。

                                可以降低发生冲突的概率

                此三种CSMA协议仍然会产生碰撞,比如A和B站点同时检测到当前信道为空闲,可能会同时向信道发送数据帧,产生碰撞。且没有接收端的正确收到回复,因此发送端不会知道自己的数据帧到底有没有正确到达。因此就有了后面两种协议:CSMA/CD和CSMA/CA

                        ④ CSMA/CD:适用于半双工网络或总线型网络环境。较CSMA的改进是:在发送后,仍然会监听信道,用来判断自己的数据帧有没有在途中发生碰撞,若发送碰撞则停止发送数据帧,等待一个随机时间后重发(二进制指数回退算法)。判断自己的数据帧是否发生碰撞的依据是:设τ为一次单程传播延迟,在自己发送出去数据帧后的2τ时间内有没有接收到别的站点的数据帧(因为是广播式链路,别的站点发送数据帧自己也能收到),我们假设A站点在0时刻发送了一个数据帧,则接收方会在τ时刻收到该帧,对该数据帧的冲突只能产生在0-τ的时间段内,我们假设在δ(0<δ<τ)时间有一个B站点发送了另一个数据帧,此时发生了冲突,对于B站点,在A站点已经被污染的数据帧在时刻τ到达时便发现产生了冲突,因此会停止发送且等待重发,而对于A站点来说,需要等到B发送的被污染的数据帧到达才能检测到发生了冲突,B发送的数据帧从δ开始传送,经过τ时间到达,即为δ+τ时间后到达,此时A站点发出数据帧开始的时刻0已经过去了2τ-δ的时间,因此A站点在发出数据帧经过2τ-δ时间后才能知道自己的数据帧发生了碰撞。因此只要等待2τ时间内没有接收到其他数据帧,便可视为没有发生冲突。自己的数据帧正确到达。

                        ⑤ CSMA/CA:适用于无线网络环境。由于无线网接收信号的强度远远低于发送时的强度,且存在“隐蔽站”的问题,因此不适合直接套用CSMA/CD协议。(累了,剩下的以后再更)

你可能感兴趣的:(网络)