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

linux内核netfilter的实现以及ipset

netfilter的实现机制基于四个层次的匹配,数据包在每个层次都要经过一个过滤链表,第一个层次就是hook,众所周知linux内核中一共拥有5个hooks,当然你也可以自己修改内核在任何地方添加hook;第二个层次就是每个hook下面的tables,每一个hook都过挂载零个或者若干个tables,数据包要一个一个经过这些tables;第三个层次就是rule,每个table下面拥有零个或者若干个rule,数据包要依次经过这些rules,只要有一个rule对数据包进行了裁决,那么将不再经过该hook的该table的对应rule的后面rules;第四个层次是matchs,和rules的遍历正好相反,数据包只有在对应rule下面的所有的matchs都匹配后才算匹配。
     在内核中,netfilter是由下面4个核心结构体支撑起来的:
struct xt_table_info
{
    unsigned int size;
    unsigned int number;
    unsigned int initial_entries;
    unsigned int hook_entry[NF_IP_NUMHOOKS];
    unsigned int underflow[NF_IP_NUMHOOKS];
    char *entries[NR_CPUS];
};
entries[cpu]指向了一个ipt_entry数组,该数组的内存组织形式是平坦的,通过ipt_entry的next_offset字段进行遍历:
struct ipt_entry
{
    struct ipt_ip ip;
    unsigned int nfcache;
    u_int16_t target_offset;
    u_int16_t next_offset;
    unsigned int comefrom;
    struct xt_counters counters;
    unsigned char elems[0];
};
elems指向了一块平坦内存模式的,包含了若干个matchs和一个target,target通过target_offset来定位,各个matchs正如上面所说,通过next_offset来进行遍历的:
struct xt_entry_match
{
    union {
        struct {
            u_int16_t match_size;
            char name[XT_FUNCTION_MAXNAMELEN-1];
            u_int8_t revision;
        } user;
        struct {
&nbs


相关文档:

linux进程调度浅析


操作系统要实现多进程,进程调度必不可少。
有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了
实际环境,这些结论是比较片面的。
而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对TASK_R ......

我的linux问题


 惠普服务器网卡问题,据说是缓冲池已满,可以用两张光盘修复,参考下边的资料
 
1.  Firmware Maintenance CD 8.70(下载后刻录压缩包内的ISO为引导盘引导重启服务器)
http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&cc=us&prodTyp ......

linux 模块中函数的调用(通俗易懂哦)

首先,应用程序是无法直接访问模块中的函数的(即使是你自编自挂的模块--实际上它也是内核模块),用户空间与内核空间之间只有通过一些特定的系统函数来进行通讯(如什么user_to_kernel),而绝对不可能通过“直接调用模块里的函数”这种形式来通讯。
那么,所编写的模块里的函数怎么才能被执行?由谁调用?其 ......

Windows,Linux启动机制简介


前言
本文内容只集中在操作系统启动原理的讲解上,不涉及启动的技术细节,因为这些细节都可以通过网络或者相关代码了解。只有了解了启动原理,才能在分析和解决有关启动的问题时具有针对性,不会有无从下手的感觉。限于作者经验的原因,本文内容只涉及关于
Windows

Linux
系统的启动过程。
 
 
启动 ......

linux启动配置

启动配置:
/etc/init.d/rcS
 
# mkfs.jffs2 -r yyfs/ -o yy.jffs2 -p -l -n -e 0x8000 -m size 
内核启动显示:
unable to open an initial console.
 
解决:
创建rootfs过程中,在/dev目录下手动创建如下节点:
mknod -m 660 null c 1 3
mknod -m 660 console c 5 1
Taking the GNU/Linux hos ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号