菜单
  

    (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中。
  1. 上一篇:fMRI中的时序信号比对分析+文献综述
  2. 下一篇:基于NS2的COPE编码机制实现仿真
  1. 基于MATLAB的图像增强算法设计

  2. jsp+sqlserver高校二手商品交...

  3. 基于Kinect的手势跟踪与识别算法设计

  4. JAVA基于安卓平台的医疗护工管理系统设计

  5. java+mysql设备监控记录的大...

  6. 基于核独立元分析的非线...

  7. 基于Hadoop的制造过程大数据存储平台构建

  8. 当代大学生慈善意识研究+文献综述

  9. 大众媒体对公共政策制定的影响

  10. 十二层带中心支撑钢结构...

  11. 杂拟谷盗体内共生菌沃尔...

  12. 电站锅炉暖风器设计任务书

  13. 河岸冲刷和泥沙淤积的监测国内外研究现状

  14. 中考体育项目与体育教学合理结合的研究

  15. 酸性水汽提装置总汽提塔设计+CAD图纸

  16. 乳业同业并购式全产业链...

  17. java+mysql车辆管理系统的设计+源代码

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回