基于linux的嵌入IPv4协议栈的内容过滤防火墙系统(3)-内容过滤防火墙系统简介

一。内容过滤防火墙系统简介

1。1 技术背景(方法,软件)

所采用的技术:

1.1.1 模块编程

也可以叫做内核编程,因为系统对数据包进行过滤的工作量非常大,使用模块编的话,可以提高系统的效率。在本程序中,包过滤模块,内容过滤模块和数据交互模块都使用的模块编程。

1.1.2 防火墙技术

作为一个内容过滤防火墙系统,具有防火墙功能可以说是必不可少的(虽然本程序主要功能是对内容进行过滤),事实上,在Linux下已经有了一个很好的防火墙过滤规则,叫ipchains,我们在进行防火墙的设计时,完全可以调用系统的防火墙过滤规则。在本程序中,防火墙规则模块主要采用防火墙技术。

1.1.3 包过滤技术

这是本程序的重点之一,要对网络上传输的数据进行过滤,首先必须捕获到网络上传输的数据包,获取数据包里面的内容,才能进行内容过滤。在本程序中,包过滤模块主要采用这种技术。

1.1.4 内容过滤技术

这是本程序的又一个重点,它主要是对网络传输的rar文件和文本文件(包括网页,telnet传输的数据和邮件)进行过滤,怎样才能有效的进行过滤,又该如何获得我们所需要的数据(比如说怎么读出rar文件里面的文件名)等等。在本程序中,内容过滤模块主要采用这种技术。

1.1.5 数据交互技术

在本程序中,包过滤模块和内容过滤模块都是在内核中实现的,而界面又是在用户空间中实现,要怎样才能把包过滤模块和内容过滤模块所获得的数据显示在界面上呢?这就需要采用数据交互技术了。在本程序中,数据交互模块主要采用这种技术了。

1。2 开发工具

1。2。1 开发平台:linux

Linux简介:

Linux 是一种可以运行在PC机上的免费的UNIX操作系统。它是由芬兰赫尔辛基大学的学生 Linus Torvalds 在1991年开发出来的。 Linus Torvalds 把 Linux 的源程序在 Internet 上公开,世界各地的编程爱好者自发组织起来对 Linux 进行改进和编写各种应用程序,今天Linux已发展成一个功能强大的操作系统,成为操作系统领域最耀眼的明星。

Linux的开发以及它的源代码是在GNU(General Public License一般公共许可)的保护下的。它们对每个人都是完全免费的。但是这并不意味着Linux和它的一些周边软件发行版本也是免费的。 Linux有着广泛的用途,包括网络,软件开发,用户平台等等,Linux被认为是一种高性能,低开支的可以替换其他昂贵操作系统的系统.

Linux的工作方式类似于Uinx,是免费的,源代码也是开放的,符合标准规范的32位(在64位CPU上是64位)操作系统。Linux拥有现代操作系统的所具有的内容,例如:

· 真正的抢先式多任务处理,支持多用户

· 内存保护

· 虚拟内存

· 支持对称多处理机SMP(symmetric multiprocessing),即多个CPU机器,以及通常的单CPU(UP)机器

· 符合POSIX标准

· 联网

· 图形用户接口和桌面环境(实际上桌面环境并不只一个)

· 速度和稳定性

严格说来,Linux并不是一个完整的操作系统。当我们在安装通常所说的Linux时,我们实际安装的是很多工具的集合。这些工具协同工作以组成一个功能强大的实用系统。Linux本身只是这个操作系统的内核,是操作系统的心脏、灵魂、指挥中心。(整个系统应该称为GNU/Linux,其原因在本章的后续内容中将会给以介绍。)内核以独占的方式执行最底层任务,保证系统正常运行--协调多个并发进程,管理进程使用的内存,使它们相互之间不产生冲突,满足进程访问磁盘的请求等等。

1。2。2 编程工具和编程语言

1。2。2。1。Gtk+Gnome编程

Gtk+Gnome简介 GNOME提供了一个丰富,成熟的桌面环境让你使用你的应用程序.在这个环境的图形前端是一个健壮的结构,允许开发者花费更少的时间来创建应用程序,通过使用它提供的工具可以让你的应用程序保持在计算机技术的前沿. 本文所述技术细节包括:GTK+,GNOME和窗口管理器的关系,CORBA和ORBit,和GNOME成像结构. 1。2。2。1。1 GTK+ GTK+是一个成熟,高效的构件集合.它在保持了扩展性和效率的前提下提供了现代的视觉和感觉效果.GTK+为应用程序开发者提供了一个强大的系统对象,它具有动态查询的能力,还可以在运行时修改对象和构件.GTK+是一个可以扩展的工具箱,例如,GNOME有内嵌的,高层构件来缩短应用程序的开发周期. 有很多理由使用GTK+诸如:许可证,捆绑的语言,国际化,拖放支持. 1。2。2。1。2 许可证 GPL 1。2。2。1。3 语言捆绑 因为GTK+开发的开放性,许多人发布了捆绑GTK+的语言.除了C还有许多语言可以用来创建GTK+应用程序:C++,Perl,Python,Pascal,Objective C,Guile,和Ada. 1。2。2。1。4 国际化 GTK+支持国际化文本显示,输入使用XIM扩展工具.因此,你的应用程序立即可以使用非罗马字符集例如亚洲语言. 1。2。2。1。5 拖放 GTK+拖放功能支持Xdnd和Motif拖放协议,它们允许其它支持这两个协议的其它构件使用拖放功能.使用其它支持拖放协议的构件(例如Motif, Qt)写的程序可以和GTK+应用程序共享拖放功能. 1。2。2。1。6 GNOME,窗口管理器和X 新的使用者很难理解GNOME和窗口管理器,GNOME和X的关系. X窗口系统是将图形元素写到屏幕上的软件.它是整个系统的基础,提供显示图形的库和技术. 窗口管理器定义窗口在屏幕上的位置和窗口边界外观与行为. GNOME是一个运行在X窗口系统和一个窗口管理器上的桌面环境.GNOME被设计成独立于任何窗口管理器.用户可以选择窗口管理器.GNOME提供了一些机制(hints)让窗口管理器和它无缝地工作在一起.如果一个窗口管理器包含了这些机制就和GNOME兼容.当前,只有很少的窗口管理器和GNOME全部或者部分兼容. 1。2。2。1。7 GNOME中的CORBA GNOME提供了CORBA作为应用程序的通信机制.CORBA(Common Object Request Broker Archiecture通用对象请求代理结构)是由OMG开发的.CORBA允许程序互相通信而无论它在本地还是网络或者它们是如何实现的(使用何种语言/操作系统).例如,一个运行在LINUX上使用C语言写的程序可以使用CORBA向一个使用Python写成的运行于Windows系统上的程序发出申请. GNOME应用程序之间的通信是通过对象请求代理(ORB)实现的.简言之,ORB是允许两个程序进行通讯的中间件. 1。2。2。1。8 ORBit ORBit是一个由GNOME工程组开发的ORB.早期,由于受到许可证的限制,几乎没有可以用在GNOME中的ORB.一群黑客写了一个小的,轻量级的ORB叫做ORBit. 1。2。2。1。9 GNOME成像结构 GNOME成像结构为开发者提供了创建交互图形显示,高质量打印,印刷质量字体的工具.在GNOME成像结构中有四个组件:Canvas,Libart,GNOME打印,GNOME字体. 1。2。2。1。10 Cavas GNOME Cavas是一个创建结构化图形的高层显示引擎.一个Cavas显示诸如线,矩形,弧形,文本的集合.Cavas是个可扩展的,高层,面向对象的绘画构件.应用程序可以使用cavas的基本绘画原语来创建交互的显示,或者定义他们自己的类型来提供复杂的显示.. GNOME Cavas通过俩种模式来显示图象. 1.使用Xlib,快速但是质量低; 2.使用Libart,高质量,但是需要更多的系统资源. 1。2。2。1。11 Llibart Libart是一个高质量的执行引擎.它使用了很多的技术来提高性能,例如,microtile数组.一个microtile数组是一个类网格的数据结构,它让canvas有效地代表需要重划区域. Libart使用GdkRGB为所有的图象创建24位的执行空间,而不管最后的显示是多少位的.如果图象使用少于24位的深度来显示,Libart在显示之前仍然使用24位RGB空间来计算,然后,根据X的显示深度对图象进行转换.这样提高了执行的效率,而且使用24位的深度进行计算可以保证图象的画质.

1。2。2。2。linux下的c编程

C语言简介

C语言是目前世界上流行、使用最广泛的高级程序设计语言。

C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。

C 语言具有下列特点:

1. C是编译性的第三代高级语言

它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2. C是结构式语言

结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C 语言是以函数形式提供给用户的, 这些函数可方便的调用, 并具有多种循环、条件语句控制程序流向, 从而使程序完全结构化。

3. C语言功能齐全

C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大, 可以实现决策目的。

4. C语言适用范围大

C 语言还有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。

在Linux下有自由软件基金FSF创建的重磅炸弹---GCC,它是一个强大的编译器,目前堪称是全世界效率最高的C/C++编译器,现在已经广泛应用在各种UNIX环境下。虽然,现在还没有C语言的集成开发环境,但这丝毫不影响GCC的流行,这也许就是自由的力量吧!

1。3 开发过程

总的流程图如下:

其中,用户界面模块负责用户界面的实现,防火墙规则模块负责设置系统的防火墙规则,包过滤模块负责对网络上传输的数据包进行过滤,内容过滤模块负责对数据包的内容进行过滤,包过滤模块和数据过滤模块都是在内核里实现的,数据交互模块负责对内核的数据和用户界面的数据进行交互。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DevOps时代的专栏

软件测试金字塔

? “测试金字塔”是一个隐喻,它告诉我们将软件测试分成不同颗粒度的桶,也给出了我们应该在这些组中进行多少次测试的想法。尽管测试金字塔的概念已经存在了一段时间,...

59050
来自专栏互联网杂技

开源巨献:Google最热门60款开源项目

0、机器学习系统 TensorFlow ★Star 62533 ? TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,Tenso...

1K60
来自专栏顶级程序员

开源巨献:Google最热门60款开源项目

作者:程序猿(微信号:imkuqin) 猿妹 链接:https://www.itcodemonkey.com/article/329.html(点击尾部阅读原...

74790

来亲自试一试NoSQL

针对Web开发人员,DBA,程序员,本文介绍了NoSQL数据库的基本概念,不同类型及其特性。

22530
来自专栏张善友的专栏

复合事件处理(Complex Event Processing)介绍

近年来,面向服务架构 SOA一直是热门的议题。面向服务架构SOA 使用了比组件、程序(procedure)层次更高的服务做为处理单元,通过开放格式交换标准例如X...

33470
来自专栏陈树义

【超实用】面对枯燥的源码,如何才能坚持看下去?

一个软件开发人员,工作到了一定的年限(一般是3、4年左右),如果他还没学会阅读源码,那么他就会遇到瓶颈。因为到了这个时候的开发,他应该不仅仅只会做那些 CURD...

17650
来自专栏nothing

2018 年,Unity 带来了新的 ECS

Unity3D 带来的 ECS 曾经广受诟病。 在之前的这个版本中,Unity 做出了以编辑器为中心,数据驱动的开发框架。从此策划可以直接在编辑器中开发新的关卡...

91380
来自专栏社区的朋友们

Amazon Aurora 深度探索(一)

本文对 Aurora 系统的实现从整体架构、存储、事务处理三个方面进行深入探讨,基于其论文和相关资料讨论具体实现细节,又跳出其外、从数据库内核技术实现的角度对 ...

2.4K20
来自专栏SEO

「知识」你不知道的百度网页分块权重评估方法

29560
来自专栏杨平安的专栏

微信 PaxosStore:海量数据冷热分级架构

导语 本文整理自笔者在“腾讯大讲堂”的演讲。 作者介绍:杨平安,来自广州的微信事业群,在腾讯已经工作五年。 主要分享内容: 为何公司卓越研发金奖花落PaxosS...

2.5K90

扫码关注云+社区

领取腾讯云代金券