MACA协议和CSMA/CA协议的区别

今天学计网802.11的时候想起了这个问题,很疑惑为什么基于MACA改进的CSMA/CA协议反而不能解决暴露站问题了。仔细翻了半小时课本,终于明白了。由于看到CSDN大部分博客讲的都是CSMA/CA和CSMA/CD的区别,也看到有人和我一样对CSMA/CA和MACA的区别感到困惑,我就简单记录一下吧。

1. 隐蔽站和暴露站。

这两个问题根源是无线局域网不适用载波监听的方式。

隐蔽站

在这里插入图片描述
B在C的范围内,C正在向B发送数据,A监听到信道为空,也向B发送数据,这时B接收到的数据产生了冲突。

暴露站

在这里插入图片描述
A和C都在B的信号范围内,B正在与A通信,C本可以向D发送数据1 ,但监听到信道忙,所以误认为不能向D发送数据,此时信道被浪费。

2. MACA

802.11的前身。

工作过程

接收方和发送方

  1. 发送方发送一个RTS帧给接收方,从而发起发送请求。RTS帧包含发送方要发送的数据帧的长度。
  2. 接收方接收到RTS帧,如果判断此时信道可以传输,则向发送方发送一个CTS帧进行确认。CTS同样包含发送方要发送的数据帧的长度。
  3. 接收方接收到CTS帧,开始发送数据。

其他站

  • 如果接收到接收方发出的CTS帧,则表示他们离接收站点很近,需要根据后续数据帧长度保持一段时间的安静,不发送数据。

3. CSMA/CA

工作过程

接收方和发送方

  1. 发送方发送一个RTS帧给接收方,从而发起发送请求。RTS帧包含整个通讯过程2需要的时间NAV,
  2. 接收方接收到RTS帧,如果判断此时信道可以传输,则向发送方发送一个CTS帧进行确认。CTS同样包含发送方要发送的数据帧的长度。
  3. 接收方接收到CTS帧,开始发送数据。
  4. 接收方接收完数据帧后,向发送方返回一个ACK帧确认。

其他站

  • 无论是接收到RTS还是CTS帧,都根据其中的NAV字段安静一段时间。

4. 区别

为什么CSMA/CA不能解决暴露站问题

  • 两个协议都可以解决隐蔽站问题,解决这个问题的关键在于离接收方近的站3 要保持安静。这个通过CTS就可以实现,只要接收到CTS的站保持安静就可以了。
  • 而解决暴露站问题的关键在于,离发送方近的站点不需要保持安静,也就是说不需要对RTS做出任何反应,就像MACA所做的这样。而CSMA/CA中接收到RTS帧的站点也需要保持安静,这就导致了暴露站问题。
  • 那么就到了下一个问题,为什么CSMA/CA要这样做呢,不是自讨苦吃吗。

为什么CSMA/CA中需要对RTS做出反应(安静)

  • 最关键的区别在于,MACA是一个不可靠的协议,他只管发送,不管发送出去的东西有没有被正确接收。而CSMA/CA增加了一个ACK帧进行确认,时可靠的通讯协议。而在NAV这段时间里面,发送方同样有可能接受数据->ACK帧。为了保证发送方能无冲突接收到ACK,所有离发送方近的站点同样需要保持安静。所以所有站点无论是接收到RTS还是CTS都需要保持安静一段时间。这也导致CSMA/CA的效率比较低。

5. 资料来源

  1. 所有图片均来自北京邮电大学王晓茹老师《计算机网络》课程的课件。

  1. B和A通信时,只占用A和B两个信道范围重叠的部分。 ↩︎

  2. 从发送方发送数据帧开始,到发送方接收ACK帧。 ↩︎

  3. 即接收方在自己信号范围内的站,这些站发送数据时会对接收方产生干扰。 ↩︎

猜你喜欢

转载自blog.csdn.net/weixin_43558951/article/details/105713745