易截截图软件、单文件、免安装、纯绿色、仅160KB

【转帖LINUX】netfilter中的conntrack内核阅读笔记(3)

2008-07-07 22:06
PREROUTING:ip_conntrack_defrag à ip_conntrack_in
1,ip_conntrack_defrag:
通常当IP报文被送至L4层处理时,如果该报文是分片报文,那么报文就会先被保存起来,直到所有分片到达后重组成一个完整报文后,再被分发到L4层。当没有启动conntrack时,netfilter各HOOK点对报文操作时,并不检查该报文是否分片;但是如果启动conntrack功能,则必须保证进入netfilter HOOK点的报文是一个完整的报文,因此ip_conntrack_defrag一般处于最前端的HOOK,负责将分片报文重组。
/* 若报文分片,则 调用ip_ct_gather_frags 组装报文,如果所有分片均已到达,pskb指向新生成的报文,继续沿着HOOK链进行下一步处理;否则为空,报文被缓存等待下一分片到来*/
if ((*pskb)->nh.iph->frag_off & htons(IP_MF|IP_OFFSET)) {
     *pskb = ip_ct_gather_frags(*pskb,
                                hooknum == NF_IP_PRE_ROUTING ?
                      IP_DEFRAG_CONNTRACK_IN :
                      IP_DEFRAG_CONNTRACK_OUT);
     if (!*pskb)
          return NF_STOLEN;
}
return NF_ACCEPT;
ip_ct_gather_frags直接调用ip_defrag处理IP分片报文。对于分片报文的重组主要在ip_fragment.c中完成。
 
3, resolve_normal_ct:
   resolve_normal_ct在全局连接表中,查找与该报文相应的连接状态,返回的是ip_conntrack的指针,用于描述和记录连接的状态;若该连接尚不存在,则创建相应的结构,并进行初始化,设置连接状态。
   /*1,将数据包的内容转化成相应的tuple,对于和协议相关的部分,如端口,则调用相关协议的处理函数pkt_to_tuple*/
      if (!ip_ct_get_tuple(skb->nh.iph, skb, skb->nh.iph->ihl*4,
         


相关文档:

linux—select详解

linux—select详解
select系统调用时用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。
关于文件句柄,其实就是一个整数,通过socket函数的声明就明白了:
int socket(int domain, int type, int protocol);
我们最熟悉的句柄是0、1、2 ......

Linux EXT3文件系统下成功恢复误删的文件

  环境:CentOS 5.3 x86_64下,/dev/sdb1为数据分区/data0,EXT3文件系统。
  前因:误删了/data0/tcsql/cankao/phpcws-1.5.0/httpcws.cpp文件。由于忘了备份httpcws.cpp文件,重新开发工作量较大,因此只有恢复该文件一条路可走。
  debugfs命令针对EXT2分区还行,但对EXT3分区就帮不上忙了。偶然发现的一款开源软 ......

study linux website

1. LinuxCommand
  LinuxCommand是一个学习Linux命令行最好的网站之一。网站分为:学习Shell、写Shell脚本、脚本库、超级MAN页面。
       http://linuxcommand.org/
2. O’Reilly的Linux命令指南目录
  O’Reilly的Linux命令指南目录是一个极好的快速参考指南,列出了大 ......

Linux LVM 的使用详解

Linux LVM 的使用详解
摘要: Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如Patition Magic等),但这都只是暂时解决办法,没有根本解决问题。随着L ......

【转帖LINUX】netfilter中的conntrack内核阅读笔记(2)


2008-07-07 22:05
初始化
1,ip_conntrack_standalone_init是contrack模块的初始化函数。它主要完成以下内容:
   /*1, 初始化conntrack相关的数据结构,如hash表,ip_conntrack_protocol以及内存管理等*/
ret = ip_conntrack_init();
if (ret < 0)
     return ret;
#ifdef CON ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号