netfliter状态跟踪之动态协议的实现浅析(tftp实现)

netfliter状态跟踪之动态协议的实现浅析(tftp实现)

ID:9513341

大小:97.50 KB

页数:17页

时间:2018-05-02

netfliter状态跟踪之动态协议的实现浅析(tftp实现)_第1页
netfliter状态跟踪之动态协议的实现浅析(tftp实现)_第2页
netfliter状态跟踪之动态协议的实现浅析(tftp实现)_第3页
netfliter状态跟踪之动态协议的实现浅析(tftp实现)_第4页
netfliter状态跟踪之动态协议的实现浅析(tftp实现)_第5页
资源描述:

《netfliter状态跟踪之动态协议的实现浅析(tftp实现)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Netfliter状态跟踪之动态协议的实现浅析(tftp实现)~教育资源库  注:这些贴子,包括iptables,Netfilter的包过滤,Netfliter的状态检测,都只是笔记性质的贴子,供有共同兴趣的朋友一起讨论,其中有不少错误的地方,希望大家指正,(并不是谦虚,我自己也在不断地改正和完善:em02:)!另,照旧,源码版本是2.6.12  1、模块的注册  源码在ip_conntrack_tftp.c中:  init函数中定义了staticstructip_conntrack_helpertftp[MAX_PORTS];  

2、并初始化它,并注册它:memset(tftp,0,sizeof(structip_conntrack_helper));ret=ip_conntrack_helper_register(tftp);  tftp是一个数组,最大允许MAX_PORTS个,并且变量ports_c决定其个数,因为它做为注册时for循环的终值,目前,只注册了一个tftp。  tftp是一个ip_conntrack_helper类型,我在后文中,会把它叫做helper模块,也就是说,初始化函数中,调用ip_conntrack_helper_register函数

3、注册了一个tftp的helper模块。  在tftp的成员的赋初始化值的时候,我们可以对照理解structip_conntrack_helper结构的许多重要的成员:  tftp.tuple.dst.protonum=IPPROTO_UDP;    //协议  tftp.tuple.src.u.udp.port=htons(ports);    //目标端口,即69,这样,UDP:69成为认识tftp的唯一标志  tftp.mask.dst.protonum=0xFF;      //目标地址掩码,以及下面一个源端口掩码,以做比较之

4、用  tftp.mask.src.u.udp.port=0xFFFF;  tftp.max_expected=1;        //最大expect,这是什么东东?后面会详解  tftp.timeout=5*60;/*5minutes*/    //超时时间  tftp.me=THIS_MODULE;  tftp.help=tftp_help;        //这个函数指针是最重要的东东了,后面再来分析它的具体作用    ip_conntrack_helper_register函数实质上是把该模块添加进以全局变量helpers为

5、首的链表中去:intip_conntrack_helper_register(structip_conntrack_helper*me){  BUG_ON(me->timeout==0);  p;ip_conntrack_lock);  list_prepend(helpers,me);  p;ip_conntrack_lock);  return0;}  OK,tftp的helper模块被注册了,它什么时候被调用?以及它有什么用呢??  回忆在连接跟踪的初时化时,注册的两个钩子:/*连接跟踪初始化时,注册helperHook

6、*/staticstructnf_hook_opsip_conntrack_helper_out_ops={.hook=ip_conntrack_help,.o=NF_IP_POST_ROUTING,.priority=NF_IP_PRI_CONNTRACK_HELPER,/*此优先级比同Hook上的ip_confirm的高*/};staticstructnf_hook_opsip_conntrack_helper_in_ops={.hook=ip_conntrack_help,.o=NF_IP_LOCAL_IN,.priority

7、=NF_IP_PRI_CONNTRACK_HELPER,};  对于中转包过滤来讲,我们关心第一个钩子,它注册在NF_IP_POST_ROUTINGHook上,并且,比我们讲过的ip_confirm优先级要高。  这样,也就是数据包经过这个Hook点时,ip_conntrack_help函数将被调用。  2.我的例子  结合一个实际的tftp传输来分析代码,先来看这个例子(该例取自《TCP/IP详解卷一》p161)1.  192.168.0.1:1106  ->  192.168.1.1:69    udp  19  PRQ 

8、 test1.c2.  192.168.1.1:1077  ->  192.168.0.1:1106  udp  5163.  192.168.0.1:1106  ->  192.168.1.1:1077  udp  44

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。