专利名称:虚拟个人网络系统内部服务器和客户端的通信方法
技术领域:
本发明涉及一种VPN系统内部服务器和客户端的通信方法。
背景技术:
在日常的工作中,常常需要分布处理一些数据!典型的是服务器端创建保存对象,在客户端显示数据。也就是说服务器方保存具体的对象,而客户端可以根据服务器对象的层次关系,画出拓扑图,操作人员可以在客户端显示,更改服务器侧对象的一些信息。一般的应用中,包括最初的VPN管理系统采用的就是客户端直接可以操作服务器端的数据。如图1所示,为常见的VPN系统结构示意图。这种方式实现起来比较简单,但是不容易扩展,层次关系不明显,并且每一个客户都可以直接操作服务器上的数据,安全性差。
发明内容
针对上述现有VPN管理系统通信中所存在的问题和不足,本发明的目的是VPN管理系统中在服务器和客户机之间提供一种可以传递层次复杂信息的通信方法。这种通信方法定义了通信的框架并列出了实现的具体报文,这样就可以使得服务器和客户机能够安全,准确的传递层次信息。
本发明是这样实现的一种VPN系统内部服务器和客户端的通信方法,包括以下步骤,1)数据库和组件设置于服务器上,服务器和客户机通过协议层互相连接;2)客户机向服务器发送连接报文,服务器认证后打开连接,并根据客户机的要求从数据库或其他的存储介质中获得客户相应对象的信息,从而在组件的层次上构造出一个虚拟客户,装载客户机要求的信息后,服务器向客户机发送回应报文,建立连接结束;3)客户机向服务器发送具体的操作报文,服务器根据操作报文的信息提取其数据库中的相应信息,并返回给客户机。
进一步地,该方法还包括,若客户机和服务器之间一段时间没有数据交互,服务器发送空报文给客户机以确认其工作状态。
进一步地,该方法还包括,客户机退出或服务器关闭时,发送关闭报文给对方,服务器关闭相应的组件系统或将相应客户的组件从系统中清除。
进一步地,所述报文包括认证部分和内容部分,其中,认证部分为包括了用户帐号标志和帐号认证信息的客户机标志。
进一步地,所述报文中的数据包括基本类型、结构类型和上下文类型,其中,结构类型数据主要定义表格中的数据;上下文类型数据主要针对具体的命令而设置。
进一步地,所述数据利用BER编码标准进行编码,其包括类型域、长度域和值域,其中,类型域用于区别数据类型;长度域用于表明数据的长度;值域即包括了具体的数据。
本发明所有的应用操作基本上都在服务器上执行,对于操作的日志以及权限的分配就很集中,同时用户还可以在客户端上操作,这样就达到了安全和方便的统一;客户端不再设置数据库和组件系统,客户端也得到了简化,方便了客户的移植;因为所有的客户是连接在一个组件系统上的,这样就比较容易控制他们的数据,每一个用户都直接操作相同的数据库就保证了数据库数据逻辑上的正确性。
本发明提高了系统的安全性,客户机不再拥有对数据库以及关键组件信息的控制,如果客户机要访问其他的资源,那么它必须通过服务器端进行访问,这样服务器就相当于具有了防火墙功能;同时也便于服务器对资源权限的控制。客户机访问相同的数据库,这也使得数据的一致性得到了加强。并且,系统采用了分层的原则,方便了系统的维护工作。
下面结合附图,对本发明作出详细描述。
图1是现有VPN系统结构示意图;图2是本发明系统结构示意图;图3是本发明的数据结构示意图;图4是本发明IPADDRESS数据结构示意图;图5是本发明的报文的结构示意图;图6是本发明keepalive报文的结构示意图;图7是本发明shutdown报文的结构示意图;图8是本发明open报文通信的结构示意图;图9是本发明shutdown报文通信的结构示意图;图10是本发明操作报文通信的结构示意图;图11是本发明update报文通信的结构示意图。
具体实施例方式
如图2所示,本发明与图1的结构相比,将组件系统和数据库设置于服务器上,这样本发明主要靠服务器上的数据库来进行数据的共享。客户机和服务器之间通过新协议处理模块进行信息交互。新协议同时也定义了客户机和服务器之间的相应数据传输的格式,所有的客户机共用同一个设置于服务器上的组件系统。
本发明的新协议采用ASN.1在OSI的ISO 8824/ITU X.208(说明语法)和ISO 8825/ITUX.209(说明基本编码规则)标准。要想使客户机和服务器交流起来,本发明还需要选择适合它们之间用来交流的报文。本发明采用了包括Open报文,shutdown报文,keepalive报文,update报文,以及数据操作报文等等。本发明的协议的报文整体上划分为两个部分,一个是认证部分,另一个是报文内容部分。认证部分主要包含的是客户的标志,其是为了适应更复杂的认证关系而设置的。报文内容包含具体的报文的相关内容。
本发明的数据类型主要有以下几种基本类型、结构类型和上下文类型。其中,基本类型分为UNSIGHED、INTEGER、OBJECT IDENTIFIER、DISPLAYSTRING和IPADDRESS,UNSIGHED主要描述无符号整数,INTERGER类型主要是描述有符号数字信息,OBJECT IDENTIFIER主要是描述对象的,DISPLAYSTRING主要是描述字符串的信息,IPADDRESS主要是描述ip地址的信息。结构类型主要定义表格中的数据,本发明利用SEQUENCE进行表示。上下文类型数据主要针对系统中的具体命令而设置的。下面将详细描述本发明的数据结构。
在网络上,传递的都是字节流,需要从这些字节流中分离出来需要的数据。传输的可能字符串、数值或者IP地址等信息。而在网络上流的就是字节,对于多元信息,只能通过编码规则来实现。本发明选用的是BER编码规则。主要原因是BER比较简单,比较容易实现。BER标准,也就是类型-长度-值的编码结构,如图3所示。类型域就是提示目标机器接收的数据的结构;类型域就是用于区别上述三种类型的。本发明类型域的前两位(从左起)是用来区分类型的,00表示基本类型,10代表上下文类型,第三位(左起)表示是原始的,还是结构化的。所谓原始的,也就是代表着它不是嵌套的,所谓结构化的,代表着它对一个或者更多得数据的值进行编码。剩下位的表示具体的类型。
下表是本发明数据的具体描述信息
本发明以IPADDRESS为例对数据结构进行说明。若一个值为“128.150.161.8”的IP地址的编码为如图4所示。
报文的认证部分主要包含的是客户的标志,即是为了适应更复杂的认证关系,增加了账号标志和账号认证。内容部分也就是协议的PDU部分,主要包含协议相关的内容PDU类型,这里的PDU类型也就是上述的上下文类型。报文主要包括Addobject、editobject、delobject、getobject、getnextobject、open、keepalive和update等类型。请求和回应代表是请求的消息还是回应的消息。请求ID是一个序列号。出错状态0代表成功,其他数值有应用程序设置。其余的部分是一些变量捆绑,也就是一组对象ID和对象的值的组合。如图5为本发明报文的结构示意图。
本发明相互通讯前首先通过连接报文建立连接,连接报文也就是open报文,主要是用于客户机向服务器打开连接。打开连接以后,服务器一般的操作是根据客户端的要求从数据库或者其他的存储介质中获得客户机的相应对象的信息,从而在组件的层次上构造出一个客户出来,为以后客户访问服务器做好准备。一般来说服务器在装载客户机要求的信息的时候,一般要花费一些时间,所以,客户机一般要等待服务器向客户机发回回应以后,才确定建立连接结束。
keepalive报文相对比较简单,服务器想查询客户端是否还存在的时候,就调用这个报文来验证对方工作是否正常!这个报文没有对象和值的列表,比较简单。如图6所示。
Addobject、editobject、delobject、getobject和getnextobject属于数据操作报文。其格式与前述报文基本相同。主要的区别是这些报文需要指明具体操作的对象,具体操作的对象由PDU的第一个objectid来表示。getnextobject用于获得数组中的元素,当需要获得数组的下一个数据的时候,可以附加这个数组的上一个数据,就可以获得数组结构中的下一个值。当到达最后一个的时候,就不能再继续使用getnextobject了,这时候继续使用,将会导致异常,错误标志就被设为-1,代表到达数组的最后一个。
shutdown报文主要是用来相互通知客户离开或者服务器要关闭的情况,增加这个报文主要是提供“gracely”关机服务。shutdown报文比较简单,类似于open报文。如图7所示。
本发明分别以open、shutdown、getobject和update的几个报文的交互过程来详述。open报文主要用于客户端通知服务器端,客户端已经启动,要求在服务器上建立自己的组件系统,open报文结束以后就可以从服务器上真正地获得对象。如图8所示,首先客户端向服务器端发送open报文,通知服务器,要建立连接。服务器接到通知以后,立即回应一个消息,之所以这样,主要是因为服务器初始化某个客户的组件系统的时间有点长,立即回一个消息,有助于客户端的处理。服务器发送消息以后,就根据open报文的内容,创建对应的组件系统。当创建完毕以后,就发送一个初始化完成的消息,这样连接就正式建立,客户和服务器就可以进行正常的通讯了。
如图9所示,shutdown报文是为了当客户退出的时候,告诉服务器关闭相应的组件系统。当服务器关闭的时候,需要把相应客户的组件从系统中清除。shutdown报文和open报文类似,不同的是open报文主要是客户机向服务器发送的,shutdown可以是双向的。例如当服务器关闭的时候,可以给每一个客户发送一个shutdown报文。
与对象有关的报文主要是对指定对象的增加、删除或进行其他编辑,以及获得一个对象的报文等。该报文在第一个object id中需要保存要操作的对象。本发明以getobject报文为例详细说明客户端和服务器端是如何交互的。如图10所示。
update报文是为了当服务器方面的对象发生改变的时候,服务器方为了通知客户端而采用的报文。其交互模型比较简单,如图11所示。
权利要求
1.一种VPN系统内部服务器和客户端的通信方法,包括以下步骤,1)数据库和组件设置于服务器上,服务器和客户机通过协议层交互数据;2)客户机向服务器发送连接报文,服务器认证后打开连接,并根据客户机的要求从数据库或其他的存储介质中获得客户机的相应对象的信息,从而在组件的层次上构造出一个虚拟客户,装载客户机要求的信息后,服务器向客户机发回应报文,连接建立结束;3)客户机向服务器发送具体的操作报文,服务器根据操作报文的信息提取其数据库中的相应信息,并组成应答报文返回给客户机。
2.如权利要求1所述的VPN系统内部服务器和客户端的通信方法,其特征在于,该方法还包括,若客户机和服务器之间一段时间没有数据交互,服务器发送空报文给客户机以确认其工作状态。
3.如权利要求1所述的VPN系统内部服务器和客户端的通信方法,其特征在于,该方法还包括,客户机退出或服务器关闭时,发送关闭报文给对方,服务器关闭相应的组件系统或将相应客户的组件从系统中清除。
4.如权利要求1至3中任一权利要求所述的VPN系统内部服务器和客户端的通信方法,其特征在于,所述报文包括认证部分和内容部分,其中,认证部分为包括了用户帐号标志和帐号认证信息的客户机标志。
5.如权利要求4所述的VPN系统内部服务器和客户端的通信方法,其特征在于,所述报文中的数据包括基本类型、结构类型和上下文类型,其中,结构类型数据主要定义表格中的数据;上下文类型数据主要针对具体的命令而设置。
6.如权利要求5所述的VPN系统内部服务器和客户端的通信方法,其特征在于,所述数据利用BER编码标准进行编码,其包括类型域、长度域和值域,其中,类型域用于区别数据类型;长度域用于表明数据的长度;值域即包括了具体的数据。
全文摘要
本发明公开了一种VPN系统内部服务器和客户端的通信方法,包括,数据库和组件设置于服务器上,服务器和客户机通过协议层互相连接;客户机向服务器发送连接报文,服务器认证后打开连接,并根据客户机的要求从数据库或其他的存储介质中获得客户相应对象的信息,从而在组件的层次上构造出一个虚拟客户,装载客户机要求的信息后,服务器向客户机发送回应报文,建立连接结束;客户机向服务器发送具体的操作报文,服务器根据操作报文的信息提取其数据库中的相应信息,并返回给客户机。本发明所有的应用操作基本上都在服务器上执行,对于操作的日志以及权限的分配就很集中,同时用户还可以在客户端上操作,达到了安全和方便的统一;客户端得到了简化,方便了客户的移植。
文档编号H04L29/06GK1614968SQ200410009730
公开日2005年5月11日 申请日期2004年10月29日 优先权日2004年10月29日
发明者张立杰 申请人:港湾网络有限公司