下载此文档

linux,ip协议栈源代码分析,pdf.docx


文档分类:IT计算机 | 页数:约19页 举报非法文档有奖
1/19
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/19 下载此文档
文档列表 文档介绍
linux,ip协议栈源代码分析,pdf filter源代码分析详解一、概述 filter/filter/IPTables是继的IPfwadm、的IPchains之后,filter采用模块化设计,具有良好的可扩充性。filter的架构中,并允许使用者对数据报进行过滤、地址转换、处理等操作。 Netfilter提供了一个框架,将对网络代码的直接干涉降到最低,并允许用规定的接口将其他包处理代码以模块的形式添加到内核中,具有极强的灵活性。 Linux内核版本: /core/ Netfilter主头文件:include/linux/ IPv4相关: /filter/*.c 头文件:include/filter_ include/filter_ipv4/*.h IPv4协议栈主体的部分c文件,特别是与数据报传送过程有关的部分:ip_,ip_,ip_,ip_等 filter/IPTables-filter主要通过表、链实现规则,filter是表的容器,表是链的容器,链是规则的容器,最终形成对数据报处理规则的实现。filter/IPTables的体系结构可以分为三个大部分: filter的通用框架不依赖于具体的协议,而是为每种网络协议定义一套HOOK函数。这些HOOK函数在数据报经过协议栈的几个关键点时被调用,在这几个点中,协议栈将数据报及HOOK函数标号作为参数,filter框架。对于它在网络堆栈中增加的这些HOOK,内核的任何模块可以对每种协议的一个或多个HOOK进行注册,实现挂接。filter框架时,内核能检测到是否有任何模块对该协议和HOOK函数进行了注册。若注册了,则调用该模块的注册时使用的回调函数,这样这些模块就有机会检查、修改、filter将该数据报传入用户空间的队列。这样,HOOK提供了一种方便的机制:在数据报通过Linux内核的不同位置上截获和操作处理数据报。 IPTables基础模块实现了三个表来筛选各种数据报,具体地讲,内核提供的这三种数据报的处理功能是相互间独立的模块,filter的HOOK函数和各种表、链实现。这三个表包括:filter表,nat表以及mangle表。 1. (Conntrack) (NAT) (mangle) filter/IPTables总体架构如图 24896_所示三、HOOK的实现 filter-filter模块需要使用HOOK来启用函数的动态钩接,它在IPv4中定义了五个HOOK(位于文件include/filter_,Line39),分别对应0-4的hooknum 简单地说,数据报经过各个HOOK的流程如下: 数据报从进入系统,进行IP校验以后,首先经过第一个HOOK函数 NF_IP_PRE_ROUTING进行处理;然后就进入路由代码,其决定该数据报是需要转发还是发给本机的;若该数据报是发被本机的,则该数据经过HOOK函数NF_IP_LOCAL_IN处理以后然后传递给上层协议;若该数据报应该被转发则它被NF_IP_FORWARD处理;经过转发的数据报经过最后一个HOOK函数NF_IP_POST_ROUTING处理以后,再传输到网络上。本地产生的数据经过HOOK函数NF_IP_LOCAL_OUT处理后,进行路由选择处理,然后经过NF_IP_POST_ROUTING处理后发送出去。总之,filter-IPv4数据报筛选体系如图 24896_:(注:filter/IPTables均基于IPv4,不再赘述) 详细地说,各个HOOK及其在IP数据报传递中的具体位置如图 24896_ NF_IP_PRE_ROUTING 数据报在进入路由代码被处理之前,数据报在IP数据报接收函数ip_rcv(/ipv4/ip_,Line379)的最后,也就是在传入的数据报被处理之前经过这个HOOK。在ip_rcv中挂接这个HOOK之前,进行的是一些与类型、长度、版本有关的检查。经过这个HOOK处理之后,数据报进入ip_rcv_finish(/ipv4/ip_,Line306),进行查路由表的工作,并判断该数据报是发给本地机器还是进行转发。在这个HOOK上主要是对数据报作报头检测处理,以捕获异常情况。涉及功能(优先级顺序):Conntrack、mangle、DNAT NF_IP_LOCAL_IN 目的地为本地主机的数据报在IP数据报本地投递函数ip_local_deliver(/ipv4/ip_,Line290)的最后经过这个HOOK。经过这个HOOK处理之后,数据报进入ip_local_deliver_finish(/ipv4/ip_,Line219) 这

linux,ip协议栈源代码分析,pdf 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数19
  • 收藏数0 收藏
  • 顶次数0
  • 上传人glfsnxh
  • 文件大小30 KB
  • 时间2019-06-22