netfilter 流程

 

注:红色部分是我自己的补充说明。 

 

 

 

转:Linux-2.6.21.1 网络函数调用流程 

 

http://www.cublog.cn/u/12313/showart_312426.html 

 

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。

msn: yfydz_no1@hotmail.com 

来源:http://yfydz.cublog.cn 

 

接收以太帧: 

netif_rx

  -> queue     //管理队列 

  -> netif_receive_skb    // 将帧的拷贝交给注册的协议函数处理、初始化skb->{h,nh,mac} 

    -> bond     //多个接口绑定成一个 

 -> packet_type_all: deliver_skb

 -> bridge    //桥接 

 -> packet_type(IPV4)->func == ip_rcv    //交给IP分组处理函数 

接收IPv4包: 

ip_rcv

  -> NF_HOOK(PREROUTING)    //netfilter钩子 

    ->ip_rcv_finish    //检查包的地址、校验和等 

      -> ip_route_input    //路由缓存查找 

        -> ip_route_input_cached

          -> ip_route_input_slow    //路由表项查找 

            -> ip_mkroute_input

              -> __mkroute_input

                dst->input = ip_forward    //数据包转发处理 

                dst->output = ip_output    //dst->output是包发送的处理 

      -> dst_input    //如果skb->dst有效 

        -> LOCAL_IN: dst->input == ip_local_deliver    //本地处理 

          -> NF_HOOK(NF_INPUT)

            -> ip_local_deliver_finish   //处理分片等 

              -> ipprot->handler(tcp, udp, icmp ...)

        -> FORWARD:  dst->input == ip_forward    //数据包转发处理   

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangxing1018/archive/2009/07/04/4322120.aspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值