Linux系统中网络协议栈管理方法及系统技术方案

技术编号:11900739 阅读:125 留言:0更新日期:2015-08-19 12:43
本发明专利技术提供Linux系统中网络协议栈管理方法及系统,建立Linux系统中用户空间同内核空间的通信通道,网络协议栈在内核空间内,网络协议栈内注册有多个钩子节点,通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过监控获取的网络数据流信息传输至用户空间并通过交互界面显示;根据用户在交互界面的输入来生成操作信息并通过通信通道向内核空间传输;本发明专利技术实现数据包在网络协议栈中流经过程的可视化显示,可以清楚的了解数据包流过协议栈时的处理过程,通过可视化的操作方式在网络协议栈的某些节点上添加、删除或编辑规则,以达到过滤数据包的目的。

【技术实现步骤摘要】

本专利技术涉及Linux系统
,特别是涉及Linux系统中网络协议栈管理方法及系统
技术介绍
基于Linux操作系统平台的网络协议栈的处理流中注册有多个钩子节点(Hook),用于对网络数据报文进行相应的处理操作,这些实现的基础是通过使用现有netfilter/iptables系统提供的特殊命令iptables,建立这些规则,并将规则加到内核空间内特定信息包的过滤表内的链上,例如,$iptables command ,命令格式由表、命令、匹配和目标组成。Netfilter 中共定义有 IINPUT,PREROUTING, FORWARD, OUTPUT,P0STR0UTING 五个钩子节点(Η00Κ),当物理网络上有数据到来时,ip_rcV()函数会接收到,该函数在最后调用NFJTO0K将控制权交给netfilter在PRER0UTING点的处理规则处理。如果该网络数据是发给本地的,就会调用ip_local_deliverO函数,由netfilter的INPUT处理规则处理,INPUT处理完以后交给传输层,传给应用层中的用户进程。如果此数据是转发,会调用ip_rcv_finish()函数,查询路由表,调用ip_route_input O函数将控制权交给ip_forward O,由netfilter的FORWARD处理规则处理,ip_send()函数将数据发送,在发出此数据之前会通过NFJTO0K函数宏,由netfilter的P0STR0UTING处理规则处理。如果本地机器要发送网络数据时,netfilter会在将数据交给规则P0STR0UTING处理之前,由处理规则OUTPUT先进行处理;而这些规则都是通过iptables命令行配置下发,对于不熟悉这些规则的人员来说很复杂。现有的用于对Linux网络协议栈各钩子注册点规则的用户操作都是以命令行的方式,在需要向网络协议栈的钩子节点处添加或删除规则等操作时,需要对网络协议栈对数据包的处理流程有清晰的了解,并且需要对用户层的操作方式有清晰的了解,掌握各种参数以及操作方式,这使得对网络协议栈钩子节点处的规则注册、去注册过程变得困难。因此,需要提供一种简易有效地的操作方式,从而快速实现相关功能,提高产品开发的进度及质量。
技术实现思路
鉴于以上所述现有技术的缺点,本专利技术的目的在于提供Linux系统中网络协议栈管理方法及系统,将网络协议栈内规则处理数据包的信息通过可视化的交互界面显示,使信息监控更加简单直观,且更便于对钩子节点即规则的操作。为实现上述目标及其他相关目标,本专利技术提供一种Linux系统中网络协议栈管理方法,包括:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。可选的,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。可选的,所述socket通信结构体是通过netlink_kernel_create O函数创建的。可选的,所述交互界面通过curses库构建。可选的,所述钩子节点包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING, FORWARD、OUTPUT 及 POSTROUTING。为实现上述目标及其他相关目标,本专利技术提供一种Linux系统中网络协议栈管理系统,包括:交互模块,用于建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控模块,用于监控各钩子节点的网络数据流情况;显示模块,用于将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;操作模块,用于根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。可选的,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。可选的,所述socket通信结构体是通过netlink_kernel_create O函数创建的。可选的,所述交互界面通过curses库构建。可选的,所述钩子节点包括:网络协议栈内netf i Iter结构中的I INPUT、PREROUTING, FORWARD、OUTPUT 及 POSTROUTING。如上所述,本专利技术提供Linux系统中网络协议栈管理方法及系统,建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输;本专利技术实现数据报文在Linux网络协议栈中流经过程的可视化显示,可以清楚的了解数据包流过协议栈时的处理过程,通过可视化的操作方式在网络协议栈的某些节点上添加、删除或编辑规则,以达到过滤数据包的目的。【附图说明】图1显示为本专利技术一实施例中的Linux系统中网络协议栈管理方法的流程示意图。图2显示为本专利技术一实施例中的Linux系统中网络协议栈管理方法具体实现的软件架构示意图。图3显示为本专利技术一实施例中的Linux系统中网络协议栈管理系统的结构示意图。元件标号说明I网络协议栈管理系统11交互模块12 监控模块13显示模块14 操作模块SI?S3方法步骤【具体实施方式】以下通过特定的具体实例说明本专利技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本专利技术的其他优点与功效。本专利技术还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。如图1所示,本专利技术提供一种Linux系统中网络协议栈管理方法,包括:步骤S1:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;步骤S2:监控各钩子节点的网络数据流情况;步骤S3:将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并且根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。具体的,用户在linux/netlink.h定义所述建立的通信通道所对应的新的协议类型,内核空间使用struct sock*netlink_kernel_create O创建socket通信结构体,相对应的,用户空间使用通本文档来自技高网
...

【技术保护点】
一种Linux系统中网络协议栈管理方法,其特征在于,包括:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘柱
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1