首页 理论教育 Contiki操作系统中的数据链路层实现及层级关系

Contiki操作系统中的数据链路层实现及层级关系

时间:2023-11-20 理论教育 版权反馈
【摘要】:Contiki 操作系统中实现的网络协议栈略微不同于TCP/IP 协议中采用的5层模型,在物理层和网络层之间,也就是通常数据链路层所在层有三个不同的层:Framer、RDC和MAC。图9-1 说明了Contiki 操作系统中各层之间的结构关系。最后,MAC 层负责寻址和丢失的数据分组重传问题,这部分源代码位于文件夹core/net/mac 中,仅有两种类型可用的MAC 层协议,即csma.c 和nullmac.c。

Contiki操作系统中的数据链路层实现及层级关系

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。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈