4 利用系统提供Module: Netfilter
4.1 Netfilter简介
参考 http://www.ibm.com/developerworks/cn/linux/l-ntflt/index.html
Netfilter是从2.4内核引入的,与Linux中的TCP/IP协议族紧密结合,提供了对网络功能的扩展功能。下面分别从报文发送和报文接收两个流程介绍Netfilter,Netfilter以NF_HOOK()的形式出现在报文处理的过程之中。
4.2 IP报文发送接收介绍
在介绍Netfilter之前,先要介绍一下Linux中网络报文的发送、接收、中转过程,这里以IP报文为例。
4.2.1报文发送
采用ipip模块发送IP Tunnel报文为例, 从net/ipv4/ipip.c::ipip_tunnel_xmit()开始,到net/core/dev.c::dev_queue_xmit()
4.2.2 报文接收
报文接收从网卡驱动开始,当网卡报文接收从网卡驱动程序开始,当网卡收到一个报文时,会产生一个中断,其驱动程序中的中断服务程序将调用确定的接收函数来处理。以下仍以IP Tunnel报文为例。流程分成两个阶段:驱动程序中断服务程序阶段和IP协议栈处理阶段:
报文接收流程之驱动程序阶段
报文接收流程之协议栈阶段
如果报文需要转发,则在上图红箭头所指处调用ip_forward():
4.2.3报文转发流程
本文介绍了Linux内核中的Netfilter机制,该机制与TCP/IP协议紧密结合,为网络功能提供扩展支持。文章详细阐述了Netfilter在IP报文发送及接收流程中的工作原理,并分析了报文转发的具体过程。
893

被折叠的 条评论
为什么被折叠?



