LINUX系统中网络协议栈管理方法及系统.pdf

上传人:a3 文档编号:1682240 上传时间:2018-07-04 格式:PDF 页数:8 大小:488.74KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510305747.2

申请日:

2015.06.04

公开号:

CN104852833A

公开日:

2015.08.19

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):H04L 12/26申请日:20150604|||公开

IPC分类号:

H04L12/26; H04L29/06; G06F9/445

主分类号:

H04L12/26

申请人:

上海斐讯数据通信技术有限公司

发明人:

刘柱

地址:

201616上海市松江区思贤路3666号

优先权:

专利代理机构:

上海光华专利事务所31219

代理人:

高彦

PDF下载: PDF下载
内容摘要

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

权利要求书

权利要求书1.  一种Linux系统中网络协议栈管理方法,其特征在于,包括:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。2.  根据权利要求1所述的Linux系统中网络协议栈管理方法,其特征在于,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。3.  根据权利要求2所述的Linux系统中网络协议栈管理方法,其特征在于,所述socket通信结构体是通过netlink_kernel_create()函数创建的。4.  根据权利要求1所述的Linux系统中网络协议栈管理方法,其特征在于,所述交互界面通过curses库构建。5.  根据权利要求1所述的Linux系统中网络协议栈管理方法,其特征在于,所述钩子节点包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING、FORWARD、OUTPUT及POSTROUTING。6.  一种Linux系统中网络协议栈管理系统,其特征在于,包括:交互模块,用于建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控模块,用于监控各钩子节点的网络数据流情况;显示模块,用于将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;操作模块,用于根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。7.  根据权利要求6所述的Linux系统中网络协议栈管理系统,其特征在于,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。8.  根据权利要求7所述的Linux系统中网络协议栈管理系统,其特征在于,所述socket通信结构体是通过netlink_kernel_create()函数创建的。9.  根据权利要求6所述的Linux系统中网络协议栈管理系统,其特征在于,所述交互界面通过curses库构建。10.  根据权利要求6所述的Linux系统中网络协议栈管理系统,其特征在于,所述钩子节点包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING、FORWARD、OUTPUT及POSTROUTING。

说明书

说明书Linux系统中网络协议栈管理方法及系统
技术领域
本发明涉及Linux系统技术领域,特别是涉及Linux系统中网络协议栈管理方法及系统。
背景技术
基于Linux操作系统平台的网络协议栈的处理流中注册有多个钩子节点(Hook),用于对网络数据报文进行相应的处理操作,这些实现的基础是通过使用现有netfilter/iptables系统提供的特殊命令iptables,建立这些规则,并将规则加到内核空间内特定信息包的过滤表内的链上,例如,$iptables[-t table]command[match][target],命令格式由表、命令、匹配和目标组成。
Netfilter中共定义有IINPUT,PREROUTING,FORWARD,OUTPUT,POSTROUTING五个钩子节点(HOOK),当物理网络上有数据到来时,ip_rcv()函数会接收到,该函数在最后调用NF_HOOK将控制权交给netfilter在PREROUTING点的处理规则处理。如果该网络数据是发给本地的,就会调用ip_local_deliver()函数,由netfilter的INPUT处理规则处理,INPUT处理完以后交给传输层,传给应用层中的用户进程。如果此数据是转发,会调用ip_rcv_finish()函数,查询路由表,调用ip_route_input()函数将控制权交给ip_forward(),由netfilter的FORWARD处理规则处理,ip_send()函数将数据发送,在发出此数据之前会通过NF_HOOK函数宏,由netfilter的POSTROUTING处理规则处理。如果本地机器要发送网络数据时,netfilter会在将数据交给规则POSTROUTING处理之前,由处理规则OUTPUT先进行处理;而这些规则都是通过iptables命令行配置下发,对于不熟悉这些规则的人员来说很复杂。
现有的用于对Linux网络协议栈各钩子注册点规则的用户操作都是以命令行的方式,在需要向网络协议栈的钩子节点处添加或删除规则等操作时,需要对网络协议栈对数据包的处理流程有清晰的了解,并且需要对用户层的操作方式有清晰的了解,掌握各种参数以及操作方式,这使得对网络协议栈钩子节点处的规则注册、去注册过程变得困难。
因此,需要提供一种简易有效地的操作方式,从而快速实现相关功能,提高产品开发的进度及质量。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供Linux系统中网络协议栈管理方 法及系统,将网络协议栈内规则处理数据包的信息通过可视化的交互界面显示,使信息监控更加简单直观,且更便于对钩子节点即规则的操作。
为实现上述目标及其他相关目标,本发明提供一种Linux系统中网络协议栈管理方法,包括:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。
可选的,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。
可选的,所述socket通信结构体是通过netlink_kernel_create()函数创建的。
可选的,所述交互界面通过curses库构建。
可选的,所述钩子节点包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING、FORWARD、OUTPUT及POSTROUTING。
为实现上述目标及其他相关目标,本发明提供一种Linux系统中网络协议栈管理系统,包括:交互模块,用于建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控模块,用于监控各钩子节点的网络数据流情况;显示模块,用于将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;操作模块,用于根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。
可选的,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。
可选的,所述socket通信结构体是通过netlink_kernel_create()函数创建的。
可选的,所述交互界面通过curses库构建。
可选的,所述钩子节点包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING、FORWARD、OUTPUT及POSTROUTING。
如上所述,本发明提供Linux系统中网络协议栈管理方法及系统,建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子 节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输;本发明实现数据报文在Linux网络协议栈中流经过程的可视化显示,可以清楚的了解数据包流过协议栈时的处理过程,通过可视化的操作方式在网络协议栈的某些节点上添加、删除或编辑规则,以达到过滤数据包的目的。
附图说明
图1显示为本发明一实施例中的Linux系统中网络协议栈管理方法的流程示意图。
图2显示为本发明一实施例中的Linux系统中网络协议栈管理方法具体实现的软件架构示意图。
图3显示为本发明一实施例中的Linux系统中网络协议栈管理系统的结构示意图。
元件标号说明
1       网络协议栈管理系统
11      交互模块
12      监控模块
13      显示模块
14      操作模块
S1~S3  方法步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示,本发明提供一种Linux系统中网络协议栈管理方法,包括:
步骤S1:建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;
步骤S2:监控各钩子节点的网络数据流情况;
步骤S3:将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示,并且根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。
具体的,用户在linux/netlink.h定义所述建立的通信通道所对应的新的协议类型,内核空间使用struct sock*netlink_kernel_create()创建socket通信结构体,相对应的,用户空间使用通用的socket APIs(接口)来建立与内核空间的通信通道,这个通道将用于监控各个钩子节点的网络数据情况以及下发由用户配置的操作信息。
进而,整个软件架构可例如图2所示,Linux网络协议栈中会有netfilter防火墙功能框架,其构成就是在整个网络流程的若干位置放置了一些检测点(HOOK,钩子节点),而在每个检测点上登记了一些处理函数进行处理(如包过滤,NAT等,甚至可以是用户自定义的功能);在本实施例中,在用户空间中通过initsscr()函数开启curses模式,即使用curses图形库来建立所述用户交互界面,用于实时显示数据包在内核空间的网络协议栈中被处理时,经过各钩子节点(包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING、FORWARD、OUTPUT及POSTROUTING等规则)的处理情况,在钩子节点调用时则将当前处理流信息通过所述通信通道传回给用户空间,并在所述交互界面显示,此即完成了网络数据流信息的可视化显示,例如,在Linux平台上使用curses建立显示系统,分别在网络协议栈内netfilter结构的IINPUT,PREROUTING,FORWARD,OUTPUT,POSTROUTING五个钩子处设立监控点,当有网络数据经过通过netlink建立的通道将数据上传到用户空间,显示在屏幕上。
并且,还在用户空间中提供给用户进行对钩子节点的规则的操作接口并反映在所述交互界面,当所述交互界面获取操作信息(例如修改等)时,通过所述通信通道下发到内核空间以配置给各所述钩子节点。
具体的,所述交互界面的显示可由在用户空间内软件实现的显示子系统来完成,各所述钩子节点的操作信息(例如规则修改、编辑等)的获取可由在用户空间内软件实现的操作子系统来完成;而所述通信协议用于支撑用户空间的显示子系统和操作子系统与内核支持子系统的通信,即所述通信通道的通信;而数据包在网络协议栈中流动时的监控可由内核空间中软件实现的支持子系统来完成,该支持子系统可在例如netfilter的IINPUT,PREROUTING,FORWARD,OUTPUT,POSTROUTING五个钩子处设立监控点。
如图3所示,与方法实施例原理相类似的是,本发明提供一种Linux系统中网络协议栈管理系统1,由于前述方法实施例中的技术特征可应用于本发明的系统实施例中,因此不作重复赘述;所述网络协议栈管理系统1包括:交互模块11,用于建立Linux系统中用户空间 同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控模块12,用于监控各钩子节点的网络数据流情况;显示模块13,用于将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;操作模块14,用于根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输。
在具体实现上,所述交互模块11对应所述通信通道,所述监控模块12对应所述支持子系统,所述显示模块13对应所述显示子系统,所述操作模块14对应所述操作子系统。
在一实施例中,所述通信通道是通过:在内核空间创建socket通信结构体并在用户空间使用对应的socket接口来建立的。
在一实施例中,所述socket通信结构体是通过netlink_kernel_create()函数创建的。
在一实施例中,所述交互界面通过curses库构建。
在一实施例中,所述钩子节点包括:网络协议栈内netfilter结构中的IINPUT、PREROUTING、FORWARD、OUTPUT及POSTROUTING。
如上所述,本发明提供Linux系统中网络协议栈管理方法及系统,建立Linux系统中用户空间同内核空间的通信通道,所述网络协议栈在所述内核空间内,所述网络协议栈内注册有多个钩子节点,所述通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过所述监控获取的网络数据流信息传输至用户空间并通过交互界面显示;根据用户在所述交互界面的输入来生成所述操作信息并通过所述通信通道向内核空间传输;本发明实现数据报文在Linux网络协议栈中流经过程的可视化显示,可以清楚的了解数据包流过协议栈时的处理过程,通过可视化的操作方式在网络协议栈的某些节点上添加、删除或编辑规则,以达到过滤数据包的目的。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所屈技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

LINUX系统中网络协议栈管理方法及系统.pdf_第1页
第1页 / 共8页
LINUX系统中网络协议栈管理方法及系统.pdf_第2页
第2页 / 共8页
LINUX系统中网络协议栈管理方法及系统.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《LINUX系统中网络协议栈管理方法及系统.pdf》由会员分享,可在线阅读,更多相关《LINUX系统中网络协议栈管理方法及系统.pdf(8页珍藏版)》请在专利查询网上搜索。

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1