简述CSMA技术的P-坚持算法规则

2025-01-08 20:51:41
推荐回答(2个)
回答1:

5.1.1 CSMA退避算法

CSMA(载波侦听多路访问)技术也称为LBT(Listen Before Talk,先听后说),也就是先侦听要访问的介质,在发现介质空闲时再进行数据发送。

CSMA介质争用技术适用于总线型和树型拓扑结构,主要解决如何共享一条公用总线介质。其原理是:在网络中任何一个工作站在发送信息前,要先侦听网络中有无其他站点在发送信号,如无则立即发送;如有其他站点正在发送数据,则此站点要先避让一下,等一段时间后再侦听,直到介质空闲才发送。

在CSMA技术中,采用了一些退避算法来决定避让的时间。常用的退避算法有三种:非坚持、1-坚持、P-坚持。下面是这些算法的具体解释。

1."非坚持"算法

"非坚持"退避算法的关键点就在于"非坚持"这三个字上。"非坚持"就是在发生介质处于忙的状态(也就是正在传送其他站点数据)时,本站点不坚持继续发送,而是在一个随机延迟后继续侦听介质,发现介质空闲时本站点才可发送数据。

总结起来,这种算法的算法规则如下:

(1)如果介质是空闲的,则可以立即发送数据。

(2)如果介质是忙的,则等待一个随机延迟的时间后,再继续侦听,直到介质为空闲才发送数据。

在这种方式中,采用随机的重发延迟时间(也就是说这个等待的时间是随机的,而不是固定的)可以减少冲突发生的可能性。但是这种算法有一个致命的缺点,那就是在有多个站点发送数据时,可能会由于大家都在延迟等待过程中,致使介质即使当前已处于空闲状态,也没有站点发送数据,这样一来,介质的利用率就可能很低。所以这种算法主要适用于小型的总线,或者树型拓扑结构网络中,不适用于像现在大型的星型结构以太网中。

2."1-坚持"算法

"1-坚持"退避算法与前面介绍的"非坚持"算法有些类似,但仍有些本质区别。这里的"1-坚持"算法的"1"是指当一个站点发现介质是空闲时,它的数据传输成功率为1,也就是100%。当然这是开发这种退避算法的作者自己的观点,事实这种算法不可能达到这种效果。具体将在下面介绍本算法的缺点时解释。

前面介绍的"非坚持"算法是在发现介质忙后,即随机等待一个延迟,然后继续侦听;而此处的"1-坚持"算法中,在发现介质是忙时,不等待一个延迟,而是继续侦听,一旦发现空闲即立即发送,在数据传送过程中发生冲突时放弃当前的数据传送任务,等待一个延迟后再继续侦听。

"1-坚持"算法的算法避让规则如下:

(1)如果介质空闲的,则可以立即发送数据。

(2)如果介质是忙的,则继续侦听,直至检测到介质是空闲,立即发送数据。

(3)如果在发送数据过程中发生了冲突(因为可能有多个站点在同一时间检测到介质为空闲,并立即进行了数据发送),则放弃当前的数据传送任务,等待一个随机的延迟时间,再重复上述步骤(1)~(2)。

很明显,这种算法相对前面介绍的"非坚持"算法来说的优点就是提高了介质的利用率,因为在没有发生冲突时无须等待一个随机延迟就立即进行继续侦听,不会出现介质处于空闲状态仍没有站点发送数据的情况。但是,该算法仍有致命的弱点,也就是在有多个站点发送数据的情况下,这种毫不等待的算法也就使得冲突时常发生。原因就是前面所说的,可能在网络中同时有多个站点在同一时间检测到介质空闲(因为中间没有一个延迟,也就是一直在侦听介质状态),而立即进行了数据发送。也就是说在这种算法下,发生冲突的机率比起"非坚持"算法来说要大许多。所以这种算法也仅适用于小型的总线型或者树型拓扑结构网络,不适用于像现在大型的星型结构以太网中。

3."P-坚持"算法

既然前面介绍的两种算法都存在明显的不足,自然就会有人继续后面的开发,于是就生产了新的"P-坚持"退避算法。

理解"P-坚持"退避算法的关键就是其中的"P"。P是指站点可以发送数据的概率,相当于前面介绍的"1-坚持"算法中的"1"。这里的P是小于1的,也就是不是在一发现介质空闲时就发送数据,而是以一个概率来决定当前站点是否马上发送数据。其目的就是为了避免与其他站点发生冲突。

"P-坚持"退避算法是一种既能像"非坚持"算法那样减少冲突,又能像"1-坚持"算法那样减少介质空闲时间的折中方案,也就是综合了前面所介绍的两种算法的优点,以实现缺点互补。

在"P-坚持"退避算法中,关键是如何选择P值,这要考虑到避免重负载下系统(如网络规模大,网络应用复杂)处于不稳定状态。假如在介质处于忙状态时有n个站在等待发送数据,则将要试图传输的站点的总期望数设为nP。如果选择P值选择过大(也就是每个站点在介质空闲时可以发送数据的概率过高),则可能使nP>1,则表明有多个站点在试图发送数据,这样冲突就很难避免。最坏的情况是,随着冲突概率的不断增大,而使吞吐量降低到零。所以必须选择适当的P值,使nP<1。当然P值选得过小,则介质利用率又会大大降低,因为这样一来,即使介质处于空闲状态,大家仍可能都会"谦让"。

"P-坚持"算法的规则如下:

(1)如果介质空闲,则以P概率发送数据(注意,只是一种概率,而不是马上发送数据),而以(1-P)的概率延迟一个时间单位t,t等于最大信号传播时延的两倍。

(2)站点的发送已被延迟一个时间单位t后,则重复上述步骤(1),当然这时的P值可能不一样。

(3)如果介质是忙的,继续侦听直到介质处于空闲状态,然后重复上述步骤(1)。

从一个站点开始发送数据到另一个站点开始接收数据,即载波信号从一端传播到另一端所需要的时间,称为信号传播时延。

信号传播时延(μs)=两站点间的距离(m)÷信号传播速度(200m/μs)

数据帧从一个站点开始发送,到该数据帧发送完成所需的时间称为"数据传输时延";同理,数据传输时延也表示一个接收站点开始接收数据帧,到该数据接收完毕所需的时间。

数据传输时延(s)= 数据帧长度(bit)÷数据传输速率(b/s)

若不考虑中继器引入的延迟,数据帧从一个站点开始发送,到该数据帧被另一个站点全部接收的总时间等于上述介绍的"数据传输时延"和"信号传播时延"之和。

回答2:

若一个站点有数据要发送,持续监听信道,当它监听到信道空闲时,以概率P决定是否发送数据。这样可以减少在有多个站点同时监听信道的情况下的冲突。