【计算机网络】-- 动态分配信道:随机访问介质访问控制(ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议)

动态分配信道(动态媒体接入控制/多点接入)

特点:信道并非在用户通信时固定分配给用户

随机访问介质访问控制:所有用户可随机发送信息,发送信息时占全部带宽。

一、ALOHA协议

1、纯ALOHA协议

思想:不监听信道,不安时间槽发送,随机重发,想发就发。

冲突如何检测:如果发生冲突,接收方检测出差错,然后不予确认,发送方在一定时间内收不到就会判断发生冲突。

冲突如何解决:超时后等一随机时间再重传。

2、时隙ALOHA协议

思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等待下一个时间片开始时刻再发送。

二、CSMA协议

CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。

MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。

协议思想:发送帧之前,监听信道。

 1、1-坚持CSMA

思想:①如果一个主机要发送消息,那么它先监听信道。

②空闲则直接传输,不必等待。

③忙则一直监听,直到空闲马上传输。

④如果有冲突,则等待一个随机长的时间再监听,重复上述过程。

优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。

缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。

2、非坚持CSMA

指对于监听信道忙之后不继续监听。

思想:①如果一个主机要发送消息,那么先监听信道。

②空闲则直接传输,不必等待。

③忙则等待一个随机的时间之后再进行监听。

优点:采用随机的重发延迟时间可以减少冲突发生的可能性。

缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。

3、p-坚持CSMA

指 对于监听信道空闲的处理。

思想:①如果一个主机要发送消息,那么先监听信道。

②空闲则以p概率直接传输,不必等待,概率1-p等待到下一个时间槽再传输。

③忙则等待一个随机的时间之后再进行监听。

优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间。

缺点:发送冲突后还是坚持把数据帧发送完,造成浪费。

4、三种CSMA对比

 三、CSMA/CD协议   (*重要)

CS:载波监听/侦听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。

MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。

CD:碰撞检测,边发送边监听,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。

如何确定碰撞后的重传时机

截断二进制指数规避算法

1、确定基本退避时间为争用期2τ。

2、定义参数k,为重传次数,但k不超过10,即k=min[重传次数,10],当重传次数不超过10时,k等于重传次数,当重传次数大于10时,k就不再增大而一直等于10。

3、从离散的整数集合[0,1,...,2^k-1]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即2r τ。

4、当重传达16次扔不能成功,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。

例:第一次重传:k = 1,r从{0,1}选,

重传推迟时间为0或2τ,在这两个时间中随机选一个,

若再次碰撞,则第二次重传:k=2,r从{0,1,2,3}选,

重传推迟时间为0或2τ或4τ或6τ,在这四个时间中随机选一个,

若再次碰撞,则第三次重传,k=3,r从{0,1,2,3,4,5,6,7}选....

例题:在以太网的二进制回退算法中,在11次碰撞之后,站点会在0~?之间选择一个随机数。

答:k = min{11,10} = 10,超过10则一直为10。

2^10-1 = 1023,

r∈[0,1,2,3,......,1023]

最小帧长

帧的传输时延至少要两倍于信号在总线中的传播时延。

帧长/数据传输速率 >= 2τ

最小帧长 = 总线传播时延×数据传输速率 ×2

                = 2τ ×数据传输速率

以太网规定最短帧长为64B,凡是小于64B的都是由于冲突而异常终止的无效帧。

四、CSMA/CA协议

工作原理

 五、CSMA/CD与CSMA/CA异同

相同点

CSMA/CD与CSMA/CA机制都从属于CSMA的思路,核心是先听再说,先监听再接入。

不同点

1、传输介质不同:CSMA/CD用于总线式以太网(有线),而CSMA/CA用于无线局域网(无线)

2、载波检测方式不同:CD通过电缆中电压的变化来检测,CA采用能量检测

3、CSMA/CD检测冲突,CSMA/CA避免冲突,二者出现冲突后都会进行有上限的重传。

三种介质访问控制区别

 

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
(设一个时隙Aloha系统的时隙长度为1,所有节点的数据包均等长且等于时隙长度。网络中节点数为m,各节点数据包以泊松过程到达。1.(1) 假设每个节点的数据包到达强度均为,在不同的下,使用计算机仿真时隙Aloha系统数据包传送的成功概率,绘制呼入强度和成功概率的曲线,与理论结果进行对照。注意:节点数要足够多。2.(1) 假设每个节点的数据包达到强度为,以及节点数,采用延时下届。选取合理的等待重传的节点在每一个时隙重传的概率。仿真时隙Aloha系统数据传输过程,统计在不同积压节点数的情况下,到达率及离开率,统计达到率和离开率随的分布情况,和理论值进行对照。调整大小,考察曲线的变化,和理论值进行对照。3.(1) 假设每个节点的数据包到达强度均为。以及节点数m,采用延时下界。选取合理的等待重传节点在每一个时隙重传的概率。仿真时隙CSMA协议,其中空闲时隙长度。绘制到达率和离开率随n的分布情况,和理论值进行对照,调整大小,考察曲线的变化,和理论值进行对照。4.(1) 在(3)的基础上,进一步引入碰撞检测机制,仿真CSMA/CD协议,其中空闲时隙和碰撞时隙长度均为。绘制到达率和离开率随n分布情况,和理论值进行对照,调整大小,考察曲线的变化,和理论值进行对照。 类似与第三问中的解决方法,分别对取0.06 0.1 0.2 0.6观察对比离开率和到达率随n变化的关系。) 和上个上传资源一样,这个是该实验的第二部分,都是自己从网上搜集很多资料整理之后最终呈现的结果。根据课程的更新问题也有所更新,如果有需要参考的就下载这一个就可以啦!有问题随时和我沟通,wink!
好的,下面是一个简单的 CSMA/CA 协议的仿真实现,并且与另外两个 MAC 协议进行对比(ALOHA 和 TDMA)。这个仿真程序使用 MATLAB 编写,使用了 Simulink 工具来构建仿真模型。 仿真模型的构建 首先,我们需要构建一个无线局域网的仿真模型。这个模型包括多个节点和一个共享的无线信道。每个节点都可以发送数据包到信道上,并且可以监听信道以检测是否有其他节点正在发送数据。如果信道空闲,节点就可以发送数据包。如果信道忙碌,节点就需要等待一段随机的时间后再次尝试发送。 对于这个模型,我们可以使用 Simulink 来构建。具体来说,我们可以使用一个多输入多输出(MIMO)的信道模块来模拟无线信道。然后,我们可以使用多个 MATLAB Function 模块来实现节点的行为。节点会根据 CSMA/CA 协议的规则来发送和接收数据包,并且在信道忙碌时等待一段随机时间。我们还需要添加一些 Scope 模块来收集和显示关键的性能指标。 仿真程序的实现 下面是 CSMA/CA 协议的主要代码实现,其中包括了节点的发送和接收函数,以及等待随机时间的函数。这个代码可以添加到 MATLAB Function 模块中。 ``` function [data, status] = csma_ca(node_id, data, ch_busy, t) % CSMA/CA protocol implementation for wireless networks % node_id: the ID of the current node % data: the data packet to send % ch_busy: the status of the channel (true for busy, false for idle) % t: current simulation time persistent backoff_count persistent send_count persistent wait_for_cts if isempty(backoff_count) backoff_count = 0; send_count = 0; wait_for_cts = false; end % Check if the channel is busy if ch_busy % Wait for a random time before trying again backoff_count = backoff_count - 1; if backoff_count <= 0 backoff_count = randi([0 15]); end status = "Waiting for channel"; return; end % Channel is idle, check if we need to send a packet if ~isempty(data) % Send a RTS frame to request to send data if ~wait_for_cts send_count = send_count + 1; data.rts = send_count; wait_for_cts = true; status = "Sending RTS"; return; end % Wait for a CTS frame to be received status = "Waiting for CTS"; wait_for_cts = false; return; end % Check if there are any packets to receive if isempty(data) status = "Idle"; return; end % Receive a packet if data.dest == node_id status = "Packet received"; else status = "Packet forwarded"; end end ``` 这里的代码实现了 CSMA/CA 协议的主要逻辑,包括等待随机时间、发送 RTS 帧、等待 CTS 帧和接收数据包等过程。 对于 ALOHA 和 TDMA 协议,我们可以使用类似的代码来实现它们的行为。 性能指标的收集和对比 在仿真实验中,我们需要收集一些关键的性能指标,如网络吞吐量、延迟和数据包丢失率等。这些指标可以在 Scope 模块中进行监测和显示。然后,我们可以将这些指标与其他 MAC 协议进行对比,以展示 CSMA/CA 协议的优越性。 下面是一个简单的代码示例,用于计算网络吞吐量和数据包丢失率。 ``` % Compute network throughput throughput = sum(received_packets) / t(end); % Compute packet loss rate loss_rate = (sent_packets - received_packets) / sent_packets; ``` 这里的代码使用了一些仿真实验中收集的数据,如发送的数据包数量、接收的数据包数量和仿真时间等。 最后,我们可以将这些指标显示在 MATLAB 的图表中,并且进行对比分析,以展示 CSMA/CA 协议相对于 ALOHA 和 TDMA 协议的优越性。 注意事项 需要注意的是,这个实现只是一个简单的示例,实际的仿真实验可能需要更加复杂和完善的模型和算法。例如,我们可能需要考虑不同节点之间的距离、信噪比、传输速率等因素,以更加准确地模拟无线网络的环境。此外,对于不同的 MAC 协议,可能需要采用不同的算法和参数设置,以获得更好的性能指标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四月天行健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值