CN104852833A - Linux***中网络协议栈管理方法及*** - Google Patents
Linux***中网络协议栈管理方法及*** Download PDFInfo
- Publication number
- CN104852833A CN104852833A CN201510305747.2A CN201510305747A CN104852833A CN 104852833 A CN104852833 A CN 104852833A CN 201510305747 A CN201510305747 A CN 201510305747A CN 104852833 A CN104852833 A CN 104852833A
- Authority
- CN
- China
- Prior art keywords
- protocol stack
- network protocol
- user
- linux system
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供Linux***中网络协议栈管理方法及***,建立Linux***中用户空间同内核空间的通信通道,网络协议栈在内核空间内,网络协议栈内注册有多个钩子节点,通信通道用于提供各钩子节点的网络数据流信息、及传输对应各钩子节点的操作信息;监控各钩子节点的网络数据流情况;将通过监控获取的网络数据流信息传输至用户空间并通过交互界面显示;根据用户在交互界面的输入来生成操作信息并通过通信通道向内核空间传输;本发明实现数据包在网络协议栈中流经过程的可视化显示,可以清楚的了解数据包流过协议栈时的处理过程,通过可视化的操作方式在网络协议栈的某些节点上添加、删除或编辑规则,以达到过滤数据包的目的。
Description
技术领域
本发明涉及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网络协议栈中流经过程的可视化显示,可以清楚的了解数据包流过协议栈时的处理过程,通过可视化的操作方式在网络协议栈的某些节点上添加、删除或编辑规则,以达到过滤数据包的目的。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所屈技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
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。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510305747.2A CN104852833A (zh) | 2015-06-04 | 2015-06-04 | Linux***中网络协议栈管理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510305747.2A CN104852833A (zh) | 2015-06-04 | 2015-06-04 | Linux***中网络协议栈管理方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104852833A true CN104852833A (zh) | 2015-08-19 |
Family
ID=53852200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510305747.2A Pending CN104852833A (zh) | 2015-06-04 | 2015-06-04 | Linux***中网络协议栈管理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104852833A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183472A (zh) * | 2015-09-06 | 2015-12-23 | 中国石油天然气集团公司 | 一种Linux***中信息筛选的方法及装置 |
CN106330530A (zh) * | 2016-08-10 | 2017-01-11 | 上海斐讯数据通信技术有限公司 | 一种可视化配置参数方法 |
CN106487797A (zh) * | 2016-10-25 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种网络数据处理方法及*** |
CN106603345A (zh) * | 2017-02-04 | 2017-04-26 | 广东欧珀移动通信有限公司 | 监控应用程序使用流量的方法、装置及终端 |
CN108632113A (zh) * | 2018-05-07 | 2018-10-09 | 上海市共进通信技术有限公司 | 基于Linux内核的数据流监控方法及*** |
CN109547580A (zh) * | 2019-01-22 | 2019-03-29 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
CN112383445A (zh) * | 2020-10-27 | 2021-02-19 | 上海市共进通信技术有限公司 | 基于netfilter和netlink实现家庭网关数据访问监控的方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101854391A (zh) * | 2010-05-25 | 2010-10-06 | 南京邮电大学 | 一种基于对等网络的阿瑞斯协议分析***的实现方法 |
CN101873640A (zh) * | 2010-05-27 | 2010-10-27 | 华为终端有限公司 | 流量处理方法、装置和移动终端 |
CN101944060A (zh) * | 2010-09-10 | 2011-01-12 | 华南理工大学 | 一种基于嵌入式软件的细粒度检测方法 |
CN102118320A (zh) * | 2011-04-18 | 2011-07-06 | 北京神州数码思特奇信息技术股份有限公司 | 一种协议识别和流量控制方法 |
CN103414725A (zh) * | 2013-08-21 | 2013-11-27 | 北京网秦天下科技有限公司 | 用于检测和过滤数据报文的方法和设备 |
-
2015
- 2015-06-04 CN CN201510305747.2A patent/CN104852833A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101854391A (zh) * | 2010-05-25 | 2010-10-06 | 南京邮电大学 | 一种基于对等网络的阿瑞斯协议分析***的实现方法 |
CN101873640A (zh) * | 2010-05-27 | 2010-10-27 | 华为终端有限公司 | 流量处理方法、装置和移动终端 |
CN101944060A (zh) * | 2010-09-10 | 2011-01-12 | 华南理工大学 | 一种基于嵌入式软件的细粒度检测方法 |
CN102118320A (zh) * | 2011-04-18 | 2011-07-06 | 北京神州数码思特奇信息技术股份有限公司 | 一种协议识别和流量控制方法 |
CN103414725A (zh) * | 2013-08-21 | 2013-11-27 | 北京网秦天下科技有限公司 | 用于检测和过滤数据报文的方法和设备 |
Non-Patent Citations (1)
Title |
---|
张恒,: ""特定流量下网络时延测量方法的设计与实现"", 《中国优秀硕士学位论文全文数据库-信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183472A (zh) * | 2015-09-06 | 2015-12-23 | 中国石油天然气集团公司 | 一种Linux***中信息筛选的方法及装置 |
CN105183472B (zh) * | 2015-09-06 | 2018-10-16 | 中国石油天然气集团公司 | 一种Linux***中信息筛选的方法及装置 |
CN106330530A (zh) * | 2016-08-10 | 2017-01-11 | 上海斐讯数据通信技术有限公司 | 一种可视化配置参数方法 |
CN106487797A (zh) * | 2016-10-25 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种网络数据处理方法及*** |
CN106603345A (zh) * | 2017-02-04 | 2017-04-26 | 广东欧珀移动通信有限公司 | 监控应用程序使用流量的方法、装置及终端 |
CN106603345B (zh) * | 2017-02-04 | 2019-07-09 | Oppo广东移动通信有限公司 | 监控应用程序使用流量的方法、装置及终端 |
CN108632113A (zh) * | 2018-05-07 | 2018-10-09 | 上海市共进通信技术有限公司 | 基于Linux内核的数据流监控方法及*** |
CN109547580A (zh) * | 2019-01-22 | 2019-03-29 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
CN109547580B (zh) * | 2019-01-22 | 2021-05-25 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
CN112383445A (zh) * | 2020-10-27 | 2021-02-19 | 上海市共进通信技术有限公司 | 基于netfilter和netlink实现家庭网关数据访问监控的方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104852833A (zh) | Linux***中网络协议栈管理方法及*** | |
CN110611651B (zh) | 网络监控方法、网络监控装置和电子设备 | |
CN107733746A (zh) | 一种混合云平台的组网方法及混合云平台*** | |
CN104486246A (zh) | 一种基于SDN架构的VXLAN的QoS机制实现方法 | |
US11138216B2 (en) | Automatically invoked unified visualization interface | |
CN109639534B (zh) | 一种测试网络传输性能的方法、装置及计算机存储介质 | |
CN104410538A (zh) | 一种网络拓扑结构管理方法及*** | |
US20210247967A1 (en) | Design interface object manipulation based on aggregated property values | |
CN109901938A (zh) | 基于WebSocket通信的可交互大屏***及可视化展示方法 | |
CN103595550A (zh) | 一种eoc设备网络拓扑显示方法 | |
CN108134698B (zh) | 一种工业多协议物联网关的图形化配置平台 | |
WO2013153567A1 (ja) | 可視化装置、可視化システムおよび可視化方法 | |
CN114422010B (zh) | 一种基于网络虚拟化的卫星通信仿真平台的协议测试方法 | |
CN105227375B (zh) | 一种构建虚拟的交换机网络的方法及*** | |
CN115333787A (zh) | 5g工控网络***自动化安全测试方法、***及存储介质 | |
CN104753695A (zh) | Sdn网络拓扑结构的发现及实时呈现***及方法 | |
TWI651667B (zh) | 一種虛實網路資源拓樸之介面系統 | |
US11736338B2 (en) | Network management apparatus, method, and program | |
CN103399844A (zh) | 报表的生成方法和生成装置 | |
CN106027396A (zh) | 一种路由控制方法、装置和*** | |
CN107919975A (zh) | 一种业务资源分配方法和装置 | |
Xiaohua et al. | Design and implementation of OpenDayLight manager application | |
CN104917623A (zh) | 一种实现sdn网络通信管理的方法及装置 | |
CN106612207B (zh) | 以太网设备rstp信息的管控方法和装置 | |
CN103995720A (zh) | 在拼墙***上实现集中可视化显示控制的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150819 |
|
RJ01 | Rejection of invention patent application after publication |