原创文章,转发请注明链接和作者。(而且作者很懒,没有检查错别字)
工作于OSI模型第二层的BATMAN.adv以内核模块的形式加载至OpenWrt系统。图1为一般Linux网络信息发送示意图,应用层的信息通过套接字发起连接。应用程序组织套接字,需要发送的信息进入Linux内核空间,依次经过传输层,网络层和数据链路层,最终通过硬件设备发送。应用程序通过套接字选定TCP或UDP协议就可顺利建立网络连接并发送信息,无需关心下层协议过程。传输层、网络层和数据链路层均在Linux内核空间实现,可以通过加载内核模块的方式添加更多协议。
图1 Linux网络信息发送示意图
BATMAN.adv内核模块虚拟一个默认名称为bat0的网络接口,实际使用中通常会修改配置文件,将虚拟接口与其它接口桥接。BATMAN.adv协议栈与一般网络的协议栈对比如图2。
图2 BATMAN.adv协议栈与一般网络的协议栈对比