linux netfilter hook中自己构造skbuff,发送全新数据包! 大虾可以给点思路:em02: :em02: :em02: 如果自己申请skbuff内存,最后,到底怎么让其释放掉~
by meijusan123 - 内核源码 - 2014-08-17 23:26:06 阅读(10147) 回复(28)
netfilter在网络报文在协议栈的处理流程中插入钩子,插入点包括以下五个位置 #define NF_IP_PRE_ROUTING 0 /* If the packet is destined for this box. */ #define NF_IP_LOCAL_IN 1 /* If the packet is destined for another interface. */ #define NF_IP_FORWARD 2 /* Packets coming from a local process. */ #define NF_IP_LOCAL_OUT 3 /* Packets about to hit the wire. */ #define NF_I...
通俗的说,netfilter的架构就是在整个网络流程的若干位置放置了一些检测点(HOOK ),而在每个检测点上上登记了一些处理函数进行处理(如包过滤,NAT等,甚至可以是 用户自定义的功能)。 IP层的五个HOOK点的位置如下图所示(copy from ) : --->[1]--->[ROUTE]--->[3]--->[4]---> | ^ | | | [ROUTE] v | [2] [5] | ^ | | v | [local process] [1]:NF...
在netfilter里面,注册一个hook函数如下: static struct nf_hook_ops _ops[] __read_mostly = { { .hook = _local_in, .owner = THIS_MODULE, .pf = PF_INET, .hooknum = NF_INET_LOCAL_IN, .priority = NF_IP_PRI_LAST, } }; 这里设定了NF_IP_PRI_LAST,那接受到的数据包里面的sk_buff是否是已经分片重组过了呢? 另外一个问题: 在netfilter的hook里面使用内核的 textsearch_prepare("kmp", pattern, strlen(pattern...
LINUX网络协议栈实现分析(-) skbuff的实现 本文是我尝试分析LINUX网络协议栈实现的一系列文章中的第一篇,主要分析 LINUX网络协议栈中skbuff的实现。分析以LINUX2.2.x为基础,同时也包 括了相同的描述对象在LINUX2.4.x中的新变化。本文引用的代码的版本分别 是:LINUX2.2.25,LINUX2.4.20。 1 简介 了解网络协议栈的人都知道,网络协议栈是一个有层次的软件结构,层与层之 间通过预定的接口传递网络报文。网络报文中包含了在协议...
最近好多问题想问,但,有个最尖锐的问题想问对协议栈有所了解的朋友。 linux协议栈的skbuff资源的申请和释放相关,有所不清楚。 就是,发送数据包的过程中,我们对缓冲区的申请和释放的问题。感觉对skbuff是不可控的,资源是你申请的,最后等数据包发送出去,资源也必须由你来释放。 很想知道,是不是缓冲区就是用了这一块资源,经由协议栈的tcp/udp,ip,链路层,最后到了网卡驱动的流程,最后把他释放了? 还是,在每一层都有一...
Linux中skbuff的实现(转载) Linux中skbuff的实现(转载) 本文是我尝试分析LINUX网络协议栈实现的一系列文章中的第一篇,主要分析 LINUX网络协议栈中skbuff的实现。分析以LINUX2.2.x为基础,同时也包 括了相同的描述对象在LINUX2.4.x中的新变化。本文引用的代码的版本分别 是:LINUX2.2.25,LINUX2.4.20。 1 简介 了解网络协议栈的人都知道,网络协议栈是一个有层次的软件结构,层与层之 间通过预定的接口传递网络...
Linux中skbuff的实现(转载) Linux中skbuff的实现(转载) 本文是我尝试分析LINUX网络协议栈实现的一系列文章中的第一篇,主要分析 LINUX网络协议栈中skbuff的实现。分析以LINUX2.2.x为基础,同时也包 括了相同的描述对象在LINUX2.4.x中的新变化。本文引用的代码的版本分别 是:LINUX2.2.25,LINUX2.4.20。 1 简介 了解网络协议栈的人都知道,网络协议栈是一个有层次的软件结构,层与层之 间通过预定的接口传递网络报...
Linux中skbuff的实现(转载) 本文是我尝试分析LINUX网络协议栈实现的一系列文章中的第一篇,主要分析 LINUX网络协议栈中skbuff的实现。分析以LINUX2.2.x为基础,同时也包 括了相同的描述对象在LINUX2.4.x中的新变化。本文引用的代码的版本分别 是:LINUX2.2.25,LINUX2.4.20。 1 简介 了解网络协议栈的人都知道,网络协议栈是一个有层次的软件结构,层与层之 间通过预定的接口传递网络报文。网络报文中包含了在协议...