为什么需要随机访问介质控制协议?
1.随机访问中,发送信息的次序控制不依靠集中控制方式解决。即并没有一个中央处理机来调度。
2.用户发送信息是随时的,想发就发,并且发的时候是占用全部信道的。
3一条信道中如果有两个信息,那么会发生碰撞。
纯ALOHA(Additive Link On-line HAwaii system)协议
每个站点想发就发,无需检测。当过一段时间后没有收到“确认”,则认为发生了碰撞。
while(true)
{
send();//发送信息
if(is_ok()) break;//无碰撞,发送成功,退出循环
wait()//有碰撞,等待一段**随机时间**
}
时隙ALOH(Additive Link On-line HAwaii system)协议
各个站点时钟同步并将时间分为若干相等的时隙(一个时隙恰好发送一个帧),想发之前先判断当前时刻是否是时隙的开端。
while(true)
{
if(t%T==0) send()
if(is_ok()) break;
wait();
}
1-坚持CSMA(Carrier Sense Multiple Acess,载波监听多路访问)
比纯ALOHA协议多了一个监听信道步骤
while(true)
{
while(is_busy()) ;//监听信道,直到不忙
send();//发送信息
if(is_ok()) break;//无碰撞
wait();//有碰撞,等待一个随机时间
}
非坚持CSMA(Non-persistent CSMA)
将循环监听直到不忙变成了 :监听一次,不忙则发送信息;忙则等待一个随机时间再监听。
while(true)
{
while(true)
{
if(is_busy()==false) break;//监听到信道空闲
wait();//等待一个随机时间
}
send();//发送信息
if(is_ok()) break;//无碰撞
wait();//有碰撞,等待一个随机时间
}
p-坚持CSMA(p-persistent CSMA)
将非坚持中“监听到忙则等待一个随机时间”变成“等待到下一个时隙”
将“监听到空闲立即发送信息”变成“以p的概率发送,以(1-p)的概率延迟到下一个时隙发送”
while(true)
{
while(true)
{
if(t%T!=0) continue;//如果不是时隙的起始时刻,不监听
if(is_busy()==false) break;//监听到信道空闲
}
if(p())//p的概率发送信息
{
send();//发送信息
if(is_ok()) break;//无碰撞
wait();//有碰撞,等待一个随机时间
}
}
CSMA/CD协议(Carrier Sense Multiple Access with Collision Detection,载波监听多路访问/碰撞检测)
先听后发,边听边发,冲突停发,随机重发
while(true)
{
while(is_busy()) ;//监听直到不忙
send_and_detection();//边发边听
if(is_ok() break;//无碰撞
crowd();//有碰撞,发送一个48比特的拥塞信号
tbeb_wait();//用截断二进制指数退避算法等待一个随机时间
}
对于监听的理解:
监听只是检测本结点收没收到信息,收到了则说明忙;反之,则认定为空闲。
当信息在信道中,还没有到达结点时,监听的结果会显示信道空闲。