Contiki 操作系统中实现的网络协议栈略微不同于TCP/IP 协议中采用的5层模型,在物理层和网络层之间,也就是通常数据链路层所在层有三个不同的层:Framer、RDC(Radio Duty-Cycle)和MAC。图9-1 说明了Contiki 操作系统中各层之间的结构关系。
图9-1 Contiki系统网络协议栈
可以通过在编译时定义的全局变量 NETSTACK_FRAMER、NETSTACK_RDC 和NETSTACK_MAC 访问网络层,在内核程序core/net/netstack.h 中可以找到这些变量,在该文件的开始位置用语句#define 定义了协议栈的各个层。(www.xing528.com)
Framer 层不是一个正常层的实现,它实际上是一些辅助函数的集合,这些函数用于建立要传输的数据帧和用于解析接收到的数据帧。在文件夹core/net/mac 中能够找到Framer 类型的例子,有Framer 层的两种类型定义文件:framer-802154.c和framer-nullmac.c。
RDC(Radio Duty-Cycle)层主要负责节点的睡眠周期,这是最重要的一层,因为它要为精确地安排分组传输时间负责,也要为保证接收数据分组的节点在分组到达时处于唤醒状态负责。RDC协议的源代码位于文件夹core/net/mac 中,实现RDC 层的例子有contikimac.c、xmac.c、lpp.c、nullrdcnoframer.c、nullrdc.c 和sicslowmac.c。
最后,MAC 层负责寻址和丢失的数据分组重传问题,这部分源代码位于文件夹core/net/mac 中,仅有两种类型可用的MAC 层协议,即csma.c 和nullmac.c。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。