应用于不同局域网的终端相互通讯的虚拟网卡通讯装置的制作方法

文档序号:7723568阅读:220来源:国知局
专利名称:应用于不同局域网的终端相互通讯的虚拟网卡通讯装置的制作方法
技术领域
本发明属于计算机通讯范畴的虚拟网卡通讯技术领域,特别是提供了一种应用于两个不同的局域网中的终端相互通讯的虚拟网卡通讯装置。
背景技术
在不同局域网中的通讯终端的地址是该局域网中的路由器/NAT分配的,这些通讯地址一般只在当前局域网中有效,跨越两个不同局域网的用户是不能直接相互访问到的。但是,在人们日常的生产生活中有大量的通讯需求,要求双方能建立直接的联系,比如网络电话、语音、视频聊天等。对于这些应用需求,有很多种解决方法,比如在路由器/NAT 中添加地址映射建立虚拟主机、采用UDP/TCP打洞技术开放通讯地址、采用中继服务器技术来转发数据包,或者采用专门的VPN技术将TCP/IP数据包加密后封装在特定数据包中在网络上传输,接收方在收到该数据包后再解密拆包再还原出通讯的内容,等等。采用这些方案需要对应用进行特别处理,往往需要对原来在局域网中的应用进行重新编程,相对代价比较高昂,一般使用于企业用户,不适合在因特网上普遍推广。本专利设计的目的是提出一种解决此类问题的通讯装置,这个通讯装置包括两个分别部署在两个不同局域网的终端和一个部署在因特网上的服务器组成,两个终端上应用通过虚拟网卡进行通讯;两个虚拟网卡相互直接的通讯地址通过公网上的服务器交换得到,而在虚拟网卡上层,两个应用通过地址交换服务器分配的虚拟IP地址通讯,在虚拟网卡内部实现跨越两个不同局域网进行通讯的复杂的通讯逻辑,包括传输地址获取、连接性检查、连接建立、断线重连、连接管理等。通过这样的装置,双方通讯就如同在一个局域网内,这样企业应用的开发者只需要开发基于局域网的应用,在企业内部网络拓扑发生变化的时候只需要修改虚拟网卡的配置即可,这样对于保护用户的投资,减少或者避免现有系统的更改,保持系统稳定有着重大意义。详细介绍技术背景,并描述已有的与本发明最相近似的技术方案作为本发明基础的且帮助理解本发明公知技术内容网卡(Network Interface Card,简称NIC),也称网络适配器,是电脑与局域网相互连接的设备。无论是普通电脑还是高端服务器,只要连接到局域网,就都需要安装一块网卡。如果有必要,一台电脑也可以同时安装两块或多块网卡。网卡(NIC)插在计算机主板插槽中,负责将用户要传递的数据转换为网络上其它设备能够识别的信息格式,该信息进一步通过网络介质传输到网络上其他主机的网卡之中。网卡对流经自己的所有数据包进行检测,对与自己有关联的数据包进行处理后再进一步转发到其他主机上。虚拟网卡是一种软件模拟技术,通过软件的方式在计算机虚拟出一块“网卡”, 这个网卡的功能和真实的网卡的功能完全一样,虚拟网卡也有个一个地址,通过该虚拟地址虚拟网卡可以和外部网络进行无差别的通讯。比如,在使VMWare公司的VMWare Workstation虚拟机软件时,通过虚拟网卡可以使本机和虚拟机进行通讯;通过虚拟网卡技术,可以完全实现已有的网卡功能,实现一些特殊用途的通信。
地址收集技术。两个不同局域网的两个虚拟网卡能够通讯的前提是必须要有合适的通讯地址,而这个通讯地址的获得可以采用多种方法得到,比如本地的通讯地址可以通过遍历本机上的所有网卡的地址;检查当前终端在路由器WAN(广域网)侧的通讯地址,可以得到路由器的映射地址;还可以从一个专门的中继服务器上获取一个专门用于转发的通讯地址。不同类型的通讯地址的质量和传输速率是不一样的,在实际数据传输的时候需要从中筛选出最佳的通讯地址再进行进一步的通讯。网络穿越技术NAT的英文全称为Network Address ^Translators,它的主要功能是负责当前路由器管理的局域网和公共网络之间的地址转换和转发。在NAT上可能部署有防火墙,能阻止某些协议类型的数据包通过。STUN技术介绍在RFC3489 中,STUN 定义为 Simple Traversal of UDP through NAT,使用 UDP 方式对NAT的穿越。主要步骤包括在内网的STUN客户端向NAT外的STUN服务器发送STUN请求消息查询自己转换后的地址,STUN服务器在收到请求消息后,获得自己看到的来源STUN 消息的来源地址信息,将这个信息作为负载存入响应消息中。STUN客户端通过返回消息中的内容得知在NAT上的对应的外部地址,将这个信息存入以后呼叫协议的UDP负载中。由于通过STUN协议已经在NAT上预先建立了媒体流的NAT映射表项,故数据流可顺利穿越NAT。TURN技术介绍TURN 技术的英文全称为 Traversal Using Relay NAT (TURN) —种穿越 NAT 的协议,它允许一个在NAT (或者防火墙)后的终端通过TCP/UDP连接接受数据。TURN是一个简单的客户端服务器协议,包括一个TURN服务器和一个TURN客户端。TURN协议采用和STUN 协议相同的语法和操作规则。TURN可以运行在TCP和UDP之上。通过TURN实现网关穿越的基本步骤是TURN客户端首先要去发现TURN服务器的地址。一旦发现了一个TURN服务器,客户端会发送一个TURN Allocate请求给TURN服务器。TURN提供了一种基于共享私密对既包括请求又包括响应的交互式认证和完整消息检验机制。在消息得到验证之后,TURN服务器会记录请求方(简称SA)的源传输地址,然后在TURN应答中返回一个公共的传输地址(简称PA)。TURN服务器有责任保证发送到PA的数据包转发到TURN Server。TURN Server于是在PA上等待数据。当接收到数据后,TURN krver会接受这个连接(在TCP的情况下), 并且存储数据来源的地址和端口信息(RA)。在接收到数据之后,数据就会被转发到SA。这样TURN krver就充当了一个中继服务器的角色,将从SA接收到的数据转发到RA,将从RA 到PA的数据转发到SA。现有实现虚拟网卡的技术主要是通过VPN技术来实现。VPN主要采用IP隧道技术来实现通讯过程,来自客户端的数据包首先被重定向到虚拟网卡,虚拟网卡将客户端的数据采用指定的方式封装到IP数据报之中,这些数据报作为负载通过TCP/UDP发送到公网上的VPN服务器上,VPN服务器对这些数据包进行处理,将负载中的用户地址转换为真实的IP 地址,发给目标客户。VPN的缺点是一般都需要专门支持VPN的软硬件来支持,在公网上一般都有很多NAT/防火墙可以分析和过滤VPN数据包,在很多网络中VPN不能正常使用。而且VPN数据包需要进行IP封装,在传输过程中有比较大的带宽损耗。
以因果关系推理的方式推导出现有技术的缺点是什么?针对这些缺点,说明本发明的目的。现有实现跨越两个局域网的终端通讯的虚拟网卡技术大都采用VPN(虚拟专用网络)技术来实现。在这些实现方案中,实现通讯的步骤是1)终端将IP数据包(或者以太网数据包,日本Sof让ther虚拟网卡软件采用这种技术)提交给虚拟网卡;2)虚拟网卡对IP数据包(或者以太网数据包)进行加密处理,封装在UDP/TCP数据包中,然后通过真实网卡将数据包发送到公网的服务器;3)公网服务器收到该数据封包之后,对其数据包头进行解密,从中获得对方的IP 地址,然后将按照发送方的策略重新封装数据包,发送到接收方的虚拟网卡(接收方虚拟网卡已经提前连接到服务器上);4)接收方虚拟网卡在收到服务器发来的加密数据包,执行解密过程,获得原始数据包的数据。这样接收方就获得了原始数据包。VPN的最大特点是双方通讯需要特别的硬件支持,一般应用于企业用户,代价比较高昂;但VPN采用数据封包方式传输,即在TCP/IP数据包中又进行了进一步的封装,数据封包方式增大了负载,降低了有效数据的传送速度;在VPN服务器暂时失效的情况下,虚拟网卡就不能被访问到。而且很多防火墙都添加了对IPkc/VPN数据的过滤模块,这样在很多情况下通讯就不成功。

发明内容
本发明技术方案的详细阐述,应该结合流程图、原理图、电路图、时序图进行说明一、通讯装置组成结构本发明提出了一种两个不同局域网的两个终端通过虚拟网卡进行通讯的装置,该装置的组成包括1)两个终端上的真实网卡NICA和NICB,它们的主要功能是对外界执行真实的网络数据接收和转发工作,是虚拟网卡工作的基础;2)虚拟网卡NIC_SIMA和NIC_ SIMB,它们为上层应用提供虚拟地址,上层应用使用该虚拟地址和对方通讯的时候,TCP/IP 数据包流经该虚拟网卡,虚拟网卡软件将虚拟地址转换为真实的通讯地址,通过分配该通讯地址的真实网卡和对方通讯;幻地址服务器S,它作为两个虚拟网卡通讯的中介,协调两个虚拟网卡一步步建立通讯过程。真实网卡作为终端真实的物理设备存在于终端的硬件设备之中,虚拟网卡为终端上的一个驻留程序存在,地址服务器S是部署在因特网上软件模块,可以从任何地方访问到该服务器。地址服务器S的主要功能包括1)统一管理所有连接到该服务的所有的虚拟地址,在虚拟网卡激活的时候为虚拟网卡分配通讯地址,在虚拟网卡断开的时候回收通讯地址;2)接受来自某个虚拟网卡软件的通讯地址信息,向有意连接该虚拟网卡的其他虚拟网卡发送通讯地址信息和连接方法;3)协调两个虚拟网卡之间通过双方发送的地址进行通讯,完成信息的交互、连接握手、连接建立、媒体、数据流的传送;4)应用结束后关闭两个虚拟网卡之间的连接、释放资源并确认;
5)统计虚拟网卡传输地址的连接信息,包括传输速率、传输质量、断线率和工作时间等信息,计算优先级,为连接方选择传输地址提供参考。虚拟网卡的主要功能包括1)通讯地址收集。收集当前终端可以用于双方建立通讯的地址,地址信息包括一个<IP地址,端口〉对,地址类别主要分为三类a)本机所有网卡的地址,通过遍历本机所有网卡得到;b)NAT映射地址。一般的路由器都有网络地址转换功能,可以将局域网内的地址映射为NAT出口的地址,可以在路由器上直接配置映射关系,也可以通过访问STUN服务器得到;c)中继地址。有些NAT是对称式的,不支持固定的NAT映射,对于这种NAT,只能向特定的TURN服务器申请一个中继地址,所有的通讯数据包要经过中继服务器转发。对于每种类型的地址,参照ICE (互动式连接建立)算法计算一个优先级别;2)虚拟地址注册;为了向上层应用提供服务,虚拟网卡需要向地址服务器S申请一个虚拟地址,同时将自己的通讯地址、身份认证等信息发送给服务器端;3)虚拟地址查询,为了和对等方虚拟网卡通讯,需要根据虚拟地址查询对方的通讯地址信息;4)传输地址选择。在收到对方的通讯地址信息之后,双方都需要根据这些通讯地址进行连接检查,从中获得一个最佳的传输地址作为最终的传输地址;5)使用通讯地址执行数据传输操作;6)发送心跳数据包。考虑到NAT分配的地址有时效性,虚拟网卡会定时发送心跳数据包给对方的通讯地址,进行检测,并发送当前地址的连接情况信息反馈给地址服务器 S,在通讯地址失效的情况下虚拟网卡会从地址列表中重新选择通讯地址并进行检测;7)虚拟地址注销。数据传输完毕后,虚拟网卡根据需要会断开了所有和对等方虚拟网卡的网络连接,同时发送注销请求给地址服务器S,地址服务器回收分配给该虚拟网卡的通讯地址,虚拟网卡断开。虚拟网卡的内部结构图如说明书附图1所示,主要包括下面这些模块a.网络协议接口单元用于处理访问该虚拟网卡的TCP/IP的数据包,对包含在数据包中的虚拟通讯地址进行转换和处理,根据转换后的地址选择真实网卡和外部通讯;b.通讯处理单元执行通讯地址收集、地址交换、连接检查、数据传输等功能。实现当前虚拟网卡和其他局域网的虚拟网卡的数据传输过程;c.信息管理单元该信息管理单元包含着当前在本虚拟网卡和其他虚拟网卡进行通讯过程中所有的数据结构,包括1)候选地址列表该表格中存储着收集到的可以用于其他虚拟网卡和自己通讯的地址列表,主要包括前面所述的三类地址信息,根据实际的应用,用户可以向这个列表中添加其他可以用于通讯的地址信息,添加完毕之后需要计算并更新每个地址的优先级,计算公式可以由用户自己定义。2)虚拟地址映射表该表格中存储对等方虚拟地址相关信息,通过该虚拟地址映射表可以查询到虚拟地址对应的真实连接地址。虚拟地址映射表中包含的信息包括虚拟地址、访问端口、本方真实传输地址、本方真实传输端口、对方传输地址、对方传输端口、地址状态、创建时间等信息。3)用户认证信息。虚拟网卡需要在连接地址服务器的时候,需要提供一个身份信息给地址服务器。经过认证之后,虚拟网卡才能注册和查询虚拟地址信息。4)好友和历史访问信息。在虚拟网卡内部有一个好友列表,每个好友是一个虚拟网卡用户,他们都注册到当前地址服务器。这个信息是在虚拟网卡初始化的时候,虚拟网卡从服务器上读取到的。好友级别的用户可以提供比其他用户更好的传输质量和传输速度。5)地址检查列表。在执行地址检查过程生成的临时数据。这个数据在数据传输完毕后可以被清除,作为一种优化的选项,这个列表信息可以保留,下次虚拟网卡重新启动后重新建立地址检查表的时候,考虑到这个优先级因子,以前高优先级的地址还会保持优先选择,这样用户选择的传输地址就能保持一个优化的状态。优化因子和优化算法可以由用户选择和定义,也可以根据当前网络变动情况进行演化,本专利不做特殊限制。6)输入输出缓冲区。用于临时缓存需要发送和接收的数据包。d.虚拟网卡与地址服务器交互单元。该单元的主要功能包括1)虚拟地址注册当前虚拟网卡必须要有一个IP地址来和其他虚拟网卡通讯。 首先,当前虚拟网卡向地址服务器发送一个注册请求,地址服务器S根据当前虚拟网卡的地址从自己内部的地址池中选择一个未占用的地址分配给该虚拟网卡用户,并标志该地址为占用状态;2)虚拟地址映射更新注册成功后,当前虚拟网卡将自己收集到的通讯地址发送给地址服务器S。当前地址服务器收到这个信息后,将虚拟地址放在服务端的一个映射表中。3)虚拟地址交换当前虚拟网卡为了和对等方通讯,需要向地址服务器查询对等方的通讯地址,当然,对方虚拟网卡是预先注册到该服务器并且更新了地址信息。为了保证通讯的安全,在虚拟地址交换的时候地址交换服务器需要对当前虚拟网卡的身份进行认证。4)通讯地址状态更新当前虚拟网卡获得了对方提供的传输地址,就进行了从连接检查到连接建立、数据传输等多个操作,在此之中,通讯地址的可用性和性能就是很重要的指标。在这些操作的每一步中,当前虚拟网卡会向地址服务器提供通讯地址状态的最新 fn息ο5)虚拟地址注销在双方通讯结束后,虚拟网卡需要从系统中注销。首先虚拟网卡会向地址服务器发送一个注销请求,地址服务器收到这个请求之后,将当前虚拟网卡的地址从服务器中清除掉,断开与服务器的连接,并且将该虚拟地址设置为可用状态。e.信息存储模块。需要存储的信息包括用户身份信息、好友信息和地址状态信息。 通过信息存储模块,虚拟网卡可以有效地保存各种参数信息,在虚拟网卡出现故障重新启动之后可以重新读取这些参数信息作为参考。f.地址优化模块。需要根据当前虚拟网卡的通讯状况,更新对方每个通讯地址的优先级,在本专利中使用ICE(互动式连接建立算法)中的优先级算法作为默认的优先级计算算法。为了提高系统的可用性,优化算法提供统一的接口,系统只需要调用该接口就可以对优先级进行计算,在实现的时候优化算法以动态库的方式出现,在系统初始化的时候加载,可以被同样接口的其他优化算法替换。虚拟网卡和地址交换服务器的消息通讯流程如图3表示。在图3中包含了两个虚拟网卡和一个地址交换服务器,交流的消息流程包括
1)虚拟地址注册请求。在收集完地址之后,虚拟网卡将外界可以和自己通讯的所有地址信息打成一数据包,加上自己的身份认证和好友信息(哪些虚拟网卡可以访问自己),加密后发送给地址服务器S ;2)注册应答消息。地址交换服务器在内部维护一个虚拟地址信息映射表,根据一定算法和规则向发送端返回一个未用的虚拟IP地址,并以该IP地址作为键值更新映射表, 然后再将该虚拟IP地址信息通过正常的TCP/IP数据包发送给该虚拟网卡。3)更新请求消息。当前虚拟网卡将自己收集到的通讯地址信息发送给地址交换服务器S。当前虚拟网卡在此之前已经做了一个连接检查的操作,考虑到网络的时延,某些地址的状态还没有及时返回,为了保持地址的有效性,虚拟网卡需要不断地将有效的地址信息更新到服务器中,服务器再将更新后的地址状态信息转发到其他虚拟网卡用户。4)更新应答消息。根据当前虚拟网卡的虚拟地址,地址交换服务器及时更新数据库中的地址信息,然后发送一个应答消息给虚拟网卡。5)认证请求。其他虚拟网卡需要和当前虚拟网卡通讯之前,需要提供身份认证信肩、ο6)认证应答对于来自某个虚拟网卡的认证请求,地址交换服务器需要核对当前虚拟网卡提交的身份信息,返回当前虚拟网卡的通讯权限和好友列表。7)查询请求。可以根据某个虚拟网卡地址查询到该虚拟网卡可用的地址信息。就是虚拟网卡在和其他虚拟网卡通讯之前,需要首先查询该虚拟网卡的真实地址,查询凭证就是对方虚拟网卡的虚拟地址。需要输入一个或者多个虚拟地址信息组成一个字符串给地址服务器,如果需要查询所有可访问的可以使用可以输入一个通配符*,查询到所有虚拟网卡组成的列表。8)查询应答消息。服务器在收到该请求消息后,会从数据库中进行查询,如果查询成功,则返回对应虚拟地址真实的传输地址信息,否则向发送方报告一个地址不可达信息;9)订阅消息。进行通讯的双方的网络状况有时是在不断地变动过程中,有的时候用户希望对方的网络地址发生变化的时候本方及时得到通知,这就需要订阅消息。订阅消息需要两个虚拟网卡、地址交换服务器三方参与,首先虚拟网卡向地址交换服务器发送订阅消息,该消息经该服务器转发到对方虚拟网卡所在的客户机;10)订阅消息应答。在收到订阅消息之后,对方虚拟网卡将发送一个确认消息(或者发送一个拒绝消息,表示拒绝提供订阅功能),这个确认消息表示两方存在这样一个订阅关系,在本方向地址交换服务器更新地址信息的时候,对方将收到一个通知,及时地处理通讯地址的变化。11)注销请求。客户机希望注销该虚拟网卡,需要从地址服务器S中移除掉本方地址信息,将发送该请求;12)注销应答。地址服务器S检查数据库中的虚拟地址映射表,从中移除掉该客户机的虚拟网卡地址映射信息,并发送一个应答给客户端。综上所述,如说明书附图4所示,两个处于不同局域网的虚拟网卡通过虚拟网卡为中介建立通讯过程可以简述如下a.首先在建立连接之前,双方虚拟网卡需要做收集地址的准备工作,所收集的地址可以是任何对方可以用来和自己进行通讯的地址,根据收集的地址的类型不同,双方虚拟网卡需要为每个地址计算一个优先级,做为后续连接检查中筛选地址的依据;b.双方向地址服务器S注册虚拟地址和传输地址的映射,并且根据虚拟地址向地址服务器S请求对方的传输地址;c.在获得对方提供的传输地址之后,再加上自身的传输地址,组成多组连接地址对,每个连接地址对有不同的优先级,这些地址就是进行连接检查的候选地址。双方根据候选地址列表开始进行连接检查测试,在检查过程中根据测试结果对候选地址进行筛选,从中选择一个最佳的地址对作为双方的通讯地址链路,并通知地址服务器,更新虚拟连接信肩、οd.双方开始根据虚拟地址传输数据。虚拟网卡查询地址服务器,得到最新的虚拟地址和真实通讯地址的映射,根据真实通讯地址选择真实网卡传输数据。e.某些通讯地址有时效性,当前虚拟网卡需要定时向该通讯地址发送特殊类型的数据包,该数据包的作用就是延长该地址的有效期,避免在数据传输过程中连接断开。f.在数据传输完毕后,根据需要,双方虚拟网卡可以向地址服务器注销,虚拟网卡回收分配为双方虚拟网卡的虚拟通讯地址,双方虚拟网卡连接断开。用推理方式推导出本发明的优点,可以对应3部分所要解决的技术问题或发明目的来描述。本发明相比VPN技术有如下创新点1)本发明提出了一个虚拟网卡通讯装置来实现跨越两个局域网的两个终端的建立直接的通讯过程。相比使用VPN技术来说,可以在地址收集过程中在NAT上实现UDP/TCP 打洞建立一个有效的地址映射,通讯双方使用映射后的地址传输速度是最快的,而VPN技术则使用了隧道传输技术,在传输的数据包中封装了原始的TCP/UDP数据包,增加了网络传输的负荷,传输效率相对较低。日本的SoftKher软件则是在TCP层次实现了对以太网的模拟技术,当相比之下还是不如建立直接的通讯链路效率高。2) VPN—般需要专门的厂家提供特定的软硬件产品来实现,它会受到路由器/NAT 的配置影响,或者受到网关代理设备的影响。而本虚拟网卡采用灵活的地址检测方案进行连接尝试,从使用直接的本地局域网地址通讯到使用专门的中继服务器来转发数据,这些地址信息可以通过检测得到,灵活地适应各种不同的网络变化情况,提高了本虚拟网卡的健壮性。3) VPN 一般需要特定的协议支持,比如IPSEC,而且不同厂商的VPN产品和解决方案很难兼容,脱离开具体的VPN设备VPN技术就没有了用武之地,相比之下本虚拟网卡采用标准的TCP/IP协议进行地址收集和连接性检测,上层应用使用虚拟地址通讯也是基于 TCP/IP的,没有硬件和协议限制。本发明在部署的时候,相对比较灵活,最基本的只需要在公网上架设一台地址服务器,现在需要路由器/NAT都提供了端口映射功能,可以提供专门的NAT映射地址,也可以在地址服务器上部署一台标准的STUN服务器和TURN服务器作为辅助,获取更多可用的通讯地址。本发明在地址搜集过程中可以使用标准的ICE技术来进行地址收集和检测。在 ICE规范中规定了三类地址作为可选的通讯地址本机地址、服务器映射地址和中继服务器地址;在连接检查过程中使用四步握手协议;在连接检查完毕后按照ICE规定的规则对地址进行排序,获得最佳的传输地址;对于传输过程中地址的选择,在虚拟网卡设计过程中每个虚拟网卡可以灵活地定义排序规则和演化规则,以获得最优的传输效果;同时,有可能检测到多条有效的传输通路,虚拟网卡可以使用多个传输通道来执行用户层的一个传输, 可以获得比单个真实网卡传输更好的效果;3)当前虚拟网卡给最终应用提供的是虚拟地址,最终应用只需要通过虚拟地址可以喝对方进行通讯;而在虚拟网卡中双方通过地址服务器交换地址、建立通讯的细节则被隐藏在虚拟网卡内部,不需要用户参与。4)当前虚拟网卡具备简单的数据存储功能,存储的数据包括认证信息、虚拟网卡好友信息、和地址状态信息。认证功能可以防止虚拟网卡执行未授权的传输操作,提高虚拟网卡的安全性;好友信息可以为当前虚拟网卡软件的用户进行分级,为不同级别的好友提供的传输数据的质量不同;传输速率也不同;通过缓存地址状态信息可以为每个传输地址提供一个历史的优先级因子,为当前网卡选择最佳的传输地址提供参考。幻为了保持传输地址的可靠性,虚拟网卡会定时向对方传输地址发送保持状态消息,这个操作不需要用户参与;在连接检测和数据传输过程中当前虚拟网卡会不断地向地址服务器发送传输地址的状态信息,包括传输地址源和目标、传输速率,地址类型、连通性情况等信息,为连接到当前地址服务器的所有虚拟网卡选择最佳的通讯地址提供参考。6)在某些网络中,比如无线网络,网络组成和网络结构是易变的,但是通过虚拟网卡通讯是使用相对固定的虚拟地址进行通讯的,对真实网络的检测是虚拟网卡内部的工作,虚拟网卡本身的状态相对稳定一些,可以保证上层网络的稳定性和健壮性,减少应用程序出错的概率。7)提供地址优化算法模块,该模块做成可插拔的动态库组件,可以方便地升级和替换,方便用户对虚拟网卡软件进行持续的改进和优化。针对技术方案,是否还有别的替代方案同样能完成发明目的?本方案是针对使用VPN技术进行私网通讯的改进方案,采用ICE和地址交换服务器进行虚拟地址的交换,通讯的细节交给虚拟网卡处理。从本专利的用途来说,尚无别的替代方案。


图1为虚拟网卡内部结构图。图2虚拟网卡通讯装置结构图。图3为虚拟网卡和地址服务器的消息交互图。图4为虚拟网卡实现数据通讯的基本流程图。
具体实施例方式参照图2,说明本专利实现两个不同局域网的终端通讯的实例。客户端1和客户端 2分别位于两个不同的局域网中,其中客户端1位于NATl后的局域网1中,在局域网1中的网络地址为192. 168. 0. 100,NAT1为客户端1所在的网关,它的局域网地址是192. 168. 0. 1, 公网地址是133. 155. 23. 26 ;客户端2位于NAT2后的局域网2中,在局域网2中的地址为 172. 16. 13. 11,NAT2为客户端2所在的网关,它的局域网地址是172. 16. 0. 1,公网地址是129. 33. 88. 6。两个NAT都非对称式的NAT,可以使用STUN协议来进行地址检测。在公网上部署了两台STUN服务器,用于发现每个客户端NAT出口的映射地址,两台STUN服务器的地址分别是129. 1. 23. 29和129. 1. 23. 30 ;还有一个地址交换服务器,用于在虚拟网卡通讯过程中交换地址信息,地址交换服务器的地址是12. 12. 1. 100。下面就这个网络拓扑来说明两个客户机是如何通过虚拟网卡来实现通讯过程的。首先,两个客户端上的虚拟网卡需要收集本方可以用于通讯的地址。在当前例子中,两个NAT都非对称式的NAT,所以不需要中继地址,只需要前两类地址,比如客户端1收集的地址包括两个地址192. 168. 0. 100 80为客户端1上的真实网卡的通讯地址;133. 155. 23. 26 :1234为客户端1通过STUN服务器查到的通讯地址;客户端2也是同样172. 168. 13. 11为客户端2上的真实网卡的通讯地址;129. 33. 88. 6为客户端2上通过STUN服务器查到的通讯地址。然后双方需要向地址服务器注册虚拟地址和真实传输地址的映射关系,在注册完毕之后可以通过地址服务器查询映射关系。经过这一步,客户端1注册的虚拟地址为 10. 10. 0. 101,客户端2注册的虚拟地址为10. 10. 0. 102.在两个虚拟网卡得到了双方的真实传输地址后,就开始对这些地址发送TCP/IP 数据包,执行连接检测过程。经过反复检测,发现客户端1可以和客户端2正常通讯的传输地址对为(192. 168. 0. 1 :80,129. 33. 88. 6 :4321)客户端2可以和客户端1正常通讯的传输地址对为(172. 16. 13. 11 :5566,133. 155. 23. 26 :1234)。这个信息会被保存到虚拟网卡内部的虚拟地址映射表中,供数据传输时使用。对于建立在双方虚拟网卡上的TCP/IP应用来说,它们使用虚拟地址来进行通讯, 虚拟地址是可以被虚拟网卡识别的,通过查询虚拟地址映射表,虚拟网卡内部使用真实的传输地址进行通讯。在数据传输完毕,两方可以根据需要可以从地址交换服务器上注销自己,双方的虚拟网卡就会显示为断开状态,也可以根据需要自动重新连接。
权利要求
1.一种应用于不同局域网的终端相互通讯的虚拟网卡通讯装置,其特征在于,包括 两个终端上的真实网卡NICA和OTCB,功能是对外界执行真实的网络数据接收和转发工作,是虚拟网卡工作的基础;虚拟网卡NIC_SIMA和NIC_SIMB,它们为上层应用提供虚拟地址,上层应用使用该虚拟地址和对方通讯的时候,TCP/IP数据包流经该虚拟网卡,虚拟网卡软件将虚拟地址转换为真实的通讯地址,通过分配该通讯地址的真实网卡和对方通讯;地址服务器S,它作为两个虚拟网卡通讯的中介,协调两个虚拟网卡一步步建立通讯过程;真实网卡作为终端真实的物理设备存在于终端的硬件设备之中,虚拟网卡为终端上的一个驻留程序存在,地址服务器S是部署在因特网上软件模块,可以从因特网上的任何地方访问到该服务器;地址服务器S的功能包括1)统一管理所有连接到该服务的所有的虚拟地址,在虚拟网卡激活的时候为虚拟网卡分配通讯地址,在虚拟网卡断开的时候回收通讯地址;2)接受来自某个虚拟网卡软件的通讯地址信息,向有意连接该虚拟网卡的其他虚拟网卡发送通讯地址信息和连接方法;3)协调两个虚拟网卡之间通过双方发送的地址进行通讯,完成信息的交互、连接握手、 连接建立、媒体、数据流的传送;4)应用结束后关闭两个虚拟网卡之间的连接、释放资源并确认;5)统计虚拟网卡传输地址的连接信息,包括传输速率、传输质量、断线率和工作时间等信息,计算优先级,为连接方选择传输地址提供参考。虚拟网卡NIC_SIMA和NIC_SIMB的功能包括通讯地址收集、虚拟地址注册、虚拟地址查询、传输地址选择、使用通讯地址执行数据传输操作、发送心跳数据包、虚拟地址注销; 虚拟网卡NIC_SIMA和NIC_SIMB的内部结构包括下面这些模块 网络协议接口单元用于处理访问该虚拟网卡的TCP/IP的数据包,对包含在数据包中的虚拟通讯地址进行转换和处理,根据转换后的地址选择真实网卡和外部通讯;通讯处理单元执行通讯地址收集、地址交换、连接检查、数据传输等功能;实现当前虚拟网卡和其他局域网的虚拟网卡的数据传输过程;信息管理单元该信息管理单元包含着当前在本虚拟网卡和其他虚拟网卡进行通讯过程中所有的数据结构。
2.根据权利要求1所述的虚拟网卡通讯装置,其特征在于,通讯地址收集收集当前终端可以用于双方建立通讯的地址,地址信息包括一个<IP 地址,端口〉对,地址类别主要分为三类本机所有网卡的地址,通过遍历本机所有网卡得到;NAT映射地址,一般的路由器都有网络地址转换功能,可以将局域网内的地址映射为 NAT出口的地址,在路由器上直接配置映射关系,或通过访问STUN服务器得到可供外部访问当前终端的映射地址;中继地址,有些NAT是对称式的,不支持固定的NAT映射,对于这种NAT,只能向特定的TURN服务器申请一个中继地址,所有的通讯数据包要经过中继服务器转发。对于每种类型的地址,参照ICE(互动式连接建立)算法计算一个优先级别,作为在后续地址检测中选择最佳通讯地址的参考;虚拟地址注册;为了向上层应用提供服务,虚拟网卡需要向地址服务器S申请一个虚拟地址,同时将自己的通讯地址、身份认证信息发送给服务器端;虚拟地址查询,为了和对等方虚拟网卡通讯,需要根据虚拟地址查询对方的通讯地址 fn息;传输地址选择在收到对方的通讯地址信息之后,双方都需要根据这些通讯地址进行连接检查,从中获得一个最佳的传输地址作为最终的传输地址;发送心跳数据包考虑到NAT分配的地址有时效性,虚拟网卡会定时发送心跳数据包给对方的通讯地址,进行检测,并发送当前地址的连接情况信息反馈给地址服务器S,在通讯地址失效的情况下虚拟网卡会从地址列表中重新选择通讯地址并进行检测;虚拟地址注销数据传输完毕后,虚拟网卡根据需要会断开所有和对等方虚拟网卡的网络连接,同时发送注销请求给地址服务器S,地址服务器回收分配给该虚拟网卡的通讯地址,虚拟网卡断开。
3.根据权利要求1所述的虚拟网卡通讯装置,其特征在于,所述的信息管理单元包含着当前在本虚拟网卡和其他虚拟网卡进行通讯过程中所有的数据结构,包括候选地址列表该表格中存储着收集到的可以用于其他虚拟网卡和自己通讯的地址列表,包括前面所述的三类地址信息,根据实际的应用,用户可以向这个列表中添加其他可以用于通讯的地址信息,添加完毕之后需要计算并更新每个地址的优先级,计算公式可以由用户自己定义;虚拟地址映射表该表格中存储对等方虚拟地址相关信息,通过该虚拟地址映射表可以查询到虚拟地址对应的真实连接地址;虚拟地址映射表中包含的信息包括虚拟地址、 访问端口、本方真实传输地址、本方真实传输端口、对方传输地址、对方传输端口、地址状态、创建时间等信息;用户认证信息虚拟网卡需要在连接地址服务器的时候,需要提供一个身份信息给地址服务器;经过认证之后,虚拟网卡才能注册和查询虚拟地址信息;好友和历史访问信息在虚拟网卡内部有一个好友列表,每个好友是一个虚拟网卡用户,他们都注册到当前地址服务器;这个信息是在虚拟网卡初始化的时候,虚拟网卡从服务器上读取到的;好友级别的用户可以提供比其他用户更好的传输质量和传输速度;地址检查列表在执行地址检查过程生成的临时数据,这个数据在数据传输完毕后可以被清除,作为一种优化的选项,这个列表信息可以保留,下次虚拟网卡重新启动后重新建立地址检查表的时候,考虑到这个优先级因子,以前高优先级的地址还会保持优先选择,这样用户选择的传输地址就能保持一个优化的状态;优化因子和优化算法由用户选择和定义,或以根据当前网络变动情况进行演化;输入输出缓冲区用于临时缓存需要发送和接收的数据包。
4.根据权利要求1所述的虚拟网卡通讯装置,其特征在于,虚拟网卡通过地址服务器实现通讯过程中交互的消息流程包括1)虚拟地址注册请求在收集完地址之后,虚拟网卡将外界可以和自己通讯的所有地址信息打成一数据包,加上自己的身份认证和好友信息,加密后发送给地址服务器S ;2)注册应答消息地址交换服务器在内部维护一个虚拟地址信息映射表,根据一定算法和规则向发送端返回一个未用的虚拟IP地址,并以该IP地址作为键值更新映射表,然后再将该虚拟IP地址信息通过正常的TCP/IP数据包发送给该虚拟网卡;3)更新请求消息当前虚拟网卡将自己收集到的通讯地址信息发送给地址交换服务器S ;当前虚拟网卡在此之前已经做了一个连接检查的操作,考虑到网络的时延,某些地址的状态还没有及时返回,为了保持地址的有效性,虚拟网卡需要不断地将有效的地址信息更新到服务器中,服务器再将更新后的地址状态信息转发到其他虚拟网卡用户;4)更新应答消息根据当前虚拟网卡的虚拟地址,地址交换服务器及时更新数据库中的地址信息,然后发送一个应答消息给虚拟网卡;5)认证请求其他虚拟网卡需要和当前虚拟网卡通讯之前,需要提供身份认证信息;6)认证应答对于来自某个虚拟网卡的认证请求,地址交换服务器需要核对当前虚拟网卡提交的身份信息,返回当前虚拟网卡的通讯权限和好友列表;7)查询请求可以根据某个虚拟网卡地址查询到该虚拟网卡可用的地址信息。就是虚拟网卡在和其他虚拟网卡通讯之前,需要首先查询该虚拟网卡的真实地址,查询凭证就是对方虚拟网卡的虚拟地址;需要输入一个或者多个虚拟地址信息组成一个字符串给地址服务器,如果需要查询所有可访问的可以使用可以输入一个通配符*,查询到所有虚拟网卡组成的列表;8)查询应答消息服务器在收到该请求消息后,会从数据库中进行查询,如果查询成功,则返回对应虚拟地址真实的传输地址信息,否则向发送方报告一个地址不可达信息;9)订阅消息进行通讯的双方的网络状况有时是在不断地变动过程中,有的时候用户希望对方的网络地址发生变化的时候本方及时得到通知,这就需要订阅消息;订阅消息需要两个虚拟网卡、地址交换服务器三方参与,首先虚拟网卡向地址交换服务器发送订阅消息,该消息经该服务器转发到对方虚拟网卡所在的客户机;10)订阅消息应答在收到订阅消息之后,对方虚拟网卡将发送一个确认消息或者发送一个拒绝消息,表示拒绝提供订阅功能;这个确认消息表示两方存在这样一个订阅关系, 在本方向地址交换服务器更新地址信息的时候,对方将收到一个通知,及时地处理通讯地址的变化;11)注销请求客户机希望注销该虚拟网卡,需要从地址服务器S中移除掉本方地址信息,将发送该请求;12)注销应答地址服务器S检查数据库中的虚拟地址映射表,从中移除掉该客户机的虚拟网卡地址映射信息,并发送一个应答给客户端。
全文摘要
一种应用于不同局域网的终端相互通讯的虚拟网卡通讯装置,属于计算机通讯范畴的虚拟网卡通讯技术领域。包括两个终端上的真实网卡NICA和NICB,功能是对外界执行真实的网络数据接收和转发工作,是虚拟网卡工作的基础;虚拟网卡NIC_SIMA和NIC_SIMB,它们为上层应用提供虚拟地址,上层应用使用该虚拟地址和对方通讯的时候,TCP/IP数据包流经该虚拟网卡,虚拟网卡软件将虚拟地址转换为真实的通讯地址,通过分配该通讯地址的真实网卡和对方通讯;地址服务器S,它作为两个虚拟网卡通讯的中介,协调两个虚拟网卡一步步建立通讯过程;真实网卡作为终端真实的物理设备存在于终端的硬件设备之中,虚拟网卡为终端上的一个驻留程序存在。
文档编号H04L12/46GK102281180SQ20111019710
公开日2011年12月14日 申请日期2011年7月14日 优先权日2011年7月14日
发明者李勇 申请人:冶金自动化研究设计院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1