毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
基于Netfilter的网络数据包捕获与分析(5)
(1)针对每种网络协议(IPv4、IPv6等)定义若干个钩子(IPv4、IPv6都定义了5个钩子点),这些钩子点在协议栈中被精心定位;数据包在通过IP协议栈时,根据路由表会经过其中的某些钩子点。
(2)内核模块可以在一个或多个这样的钩子点注册挂接钩子函数。
(3)这样,数据包在通过某个钩子点时,就会调用注册在此钩子点上的钩子函数,此函数实现对数据包的具体处理,并将处理结果换回相应的内核模块。
2.2.4 Netfilter工作原理
开发基于Netfilter框架的内核模块一般有一下几个步骤:分析功能需求,确定要在哪几个钩子挂载点处注册钩子函数;按照钩子函数的接口规范编写钩子函数;在挂载点处注册钩子函数。
Netfilter的设计为Linux内核中其它模块动态参与IP层中的数据包处理提供了途径。其实现方法是:
(1)在内核中建立了一个函数指针链表,即钩子函数链表,加入到链表中的函数指针所指的函数称为钩子函数(Hook Function)。当内核模块需要参与IP层中对数据包的处理时,通过调用Netfilter中钩子函数的注册函数,注册内核模块的数据包处理函数,Netfilter将在钩子函数链表中记录下此模块中的数据包处理函数指针。
(2)IP层在数据包处理过程中,会检查相应的钩子函数链表中是否有钩子函数被注册:如果存在注册的钩子函数,便会调用此函数,并且根据该函数的处理结果,决定是继续完成IP层中的后续处理过程,还是丢弃此数据包,中断数据包的传输;如果不存在注册的钩子函数,则继续完成IP层中的后续处理。
(3)当内核模块不需要参与IP层的数据包处理时,调用Netfilter钩子注销函数,Netfilter从钩子函数链表中去掉此钩子函数指针,这样IP层检测不到钩子函数的存在,会继续其后续操作。
钩子和挂载函数是Netfilter架构中的核心部分。Linux内核的Netfilter框架为IPv4协议实现了五个钩子函数挂载点,分别为:NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_POST_ROUTING,NF_IP_LOCAL_OUT。当数据包流经IPv4协议栈的五个挂载点时,内核就会调用在挂载点注册的回调函数对数据包进行处理。Netfilter挂载点回调函数的调用代码是通过NF_HOOK宏嵌入在网络协议栈的代码之中的,其定义在include/linux/netfilter.h中。
共5页:
上一页
1
2
3
4
5
下一页
上一篇:
fMRI中的时序信号比对分析+文献综述
下一篇:
基于NS2的COPE编码机制实现仿真
基于Apriori算法的电影推荐
PHP+IOS的会议管理系统的设计+ER图
数据挖掘在电子商务中的应用
数据挖掘的主题标绘数据获取技术与实现
基于PageRank算法的网络数据分析
基于神经网络的验证码识别算法
基于网络的通用试题库系...
公寓空调设计任务书
中国学术生态细节考察《...
AT89C52单片机的超声波测距...
神经外科重症监护病房患...
医院财务风险因素分析及管理措施【2367字】
C#学校科研管理系统的设计
承德市事业单位档案管理...
10万元能开儿童乐园吗,我...
国内外图像分割技术研究现状
志愿者活动的调查问卷表