S-MAC(Sensor MAC,传感器媒体访问控制)协议是较早的一个基于同步调度并且基于竞争的MAC协议。它是在IEEE802.11 MAC协议的基础上,特别针对无线传感器网络中节点能量有限这一特性,并假定网络能容忍一定的延迟,允许节点周期性睡眠提出的,达到了较好的节能效果。S-MAC主要机制有时序同步,串音避免,流量自适应侦听以及分片传输。
S-MAC原理
在S-MAC中,将时间划分为重复的工作循环,每一个循环分为三个阶段,分别为同步、数据和睡眠。节点在同步阶段被唤醒进行时钟同步,在数据阶段所有的节点都维持在活动状态。如果节点有一个数据包要发送给另一个节点,传输数据前需要在数据阶段交换RTS(Request-to-Send)和CTS (Clear-to-Send)帧,传输数据包之后再返回一个确认帧。未涉及通信的节点在数据阶段恢复到睡眠阶段,通信节点必须在完成确认之后才能返回睡眠状态。S-MAC协议原理图如下:
如上所示,节点A向节点B发送数据之前首先发送控制信息RTS,节点B收到信息后得知有数据发给自己,那么发送一个CTS作为应答。节点A在接到CTS回复后便可开始发送DATA数据了。其他节点在收到RTS或CTS消息之后,如果确认这个数据包不是发给自己的,则利用一个定时器设置虚拟载波侦听时间,然后进入休眠状态。休眠状态的时间由RTS或CTS信息包里