数据包转发方法、装置及系统的制作方法
【专利摘要】本发明公开了一种数据包转发方法、装置及系统,该方法包括以下步骤:获取并解析客户端的静态IP地址;根据所述静态IP地址,查询与之对应的权限信息;根据所述权限信息,分配与之对应权限的数据包,并将其转发至所述客户端。实施本发明,通过虚拟网络设备Tun网卡模拟基于硬件的网络层,从而系统地实现了模拟从服务器接受数据包的转发过程,避免了在数据包转发过程中对硬件的依赖。同时,通过为客户端分配静态IP地址,直接将静态IP地址作为用户的身份识别信息,身份验证以及鉴权过程得到简化,避免了输入明文密码,增强了安全性,提高了用户体验。
【专利说明】数据包转发方法、装置及系统
【技术领域】
[0001] 本发明涉及通信【技术领域】,尤其涉及一种数据包转发方法、装置及系统。
【背景技术】
[0002] 针对现有技术中,服务器与客户端之间的数据包的转发通常包括加密、解密、验 证、鉴权等操作过程。当客户端与服务器建立通信连接后,服务器动态分配客户端的IP地 址。当客户端或者服务器有数据包的转发需求时,首先通过客户端向服务器上传用户的身 份验证信息,当该用户的身份验证信息经过服务器的验证并通过后,再通过读取相关的访 问权限,根据用户的访问权限获取相应的数据包,最后完成数据包的转发操作。
[0003] 可以理解,在现有技术中,通过服务器动态分配客户端的IP地址时,需要提供明 文密码来进行用户身份的验证以及鉴权,安全性较差,容易造成用户身份信息的泄露。同 时,在服务器端,对用户身份进行验证的过程较为复杂,另一方面,采用传统的网卡传输模 式,需要依靠硬件网路板卡以实现数据包的转发,不利于系统精简化以及轻量化的需求。
【发明内容】
[0004] 有鉴于此,本发明要解决的技术问题是提供一种数据包转发方法、装置及系统,以 解决现有技术中,针对于在数据包的转发过程中,用户身份的验证以及鉴权过程较为复杂、 安全性较低,同时,采用明文密码容易造成用户身份信息泄露,需要依靠硬件网路板卡支持 的缺陷。
[0005] 本发明解决上述技术问题所采用的技术方案如下:
[0006] 提出一种数据包转发方法,该方法包括以下步骤:
[0007] 获取并解析客户端的静态IP地址;
[0008] 根据静态IP地址,查询与之对应的权限信息;
[0009] 根据权限信息,分配与之对应权限的数据包,并将其转发至客户端。
[0010] 优选地,获取并解析客户端的静态IP地址之前还包括,通过服务器向与之建立通 信连接的客户端分配静态IP地址。
[0011] 优选地,根据静态IP地址,查询与之对应的权限信息具体包括:
[0012] 解析静态IP地址,生成用户身份信息;
[0013] 在服务器的数据库内查询与用户身份信息对应的权限信息。
[0014] 优选地,根据权限信息,分配与之对应权限的数据包,并将其转发至客户端具体包 括:
[0015] 接收客户端发送的数据包转发请求;
[0016] 在数据包转发请求的范围内,根据权限信息分配与之对应权限的数据包;
[0017] 读取数据包,并将其转发至客户端。
[0018] 优选地,在转发数据包的过程中:
[0019] 通过虚拟网络设备Tun网卡在客户端与服务器之间设置路由;
[0020] 通过路由在服务器内读取数据包;
[0021] 通过服务器将数据包写入虚拟网络设备Tun网卡;
[0022] 通过虚拟网络设备Tun网卡将数据包转发至客户端。
[0023] 本发明还提出了一种数据包转发装置,该装置包括:
[0024] 地址解析模块,用于获取并解析客户端的静态IP地址;
[0025] 权限查询模块,用于根据静态IP地址,查询与之对应的权限信息;
[0026] 数据处理模块,用于根据权限信息,分配与之对应权限的数据包,并将其转发至客 户端。
[0027] 优选地,还包括地址分配模块,用于向与服务器建立通信连接的客户端分配静态 IP地址。
[0028] 优选地,权限查询模块包括身份信息验证单元以及权限信息查询单元,其中,
[0029] 身份信息验证单元用于解析静态IP地址,生成用户身份信息;
[0030] 权限信息查询单元用于在服务器的数据库内查询与用户身份信息对应的权限信 肩、。
[0031] 优选地,数据处理模块包括数据包请求单元、数据包分配单元、数据包读取单元以 及数据包转发单元,其中,
[0032] 数据包请求单元用于接收客户端发送的数据包转发请求;
[0033] 数据包分配单元用于在数据包转发请求的范围内,根据权限信息分配与之对应权 限的数据包;
[0034] 数据包读取单元用于读取数据包;
[0035] 数据包转发单元用于将数据包转发至客户端;
[0036] 装置还包括路由设置模块,数据处理模块还包括数据包写入单元,其中,
[0037] 路由设置单元用于通过虚拟网络设备Tun网卡在客户端与服务器之间设置路由;
[0038] 数据包读取单元还用于通过路由在服务器内读取数据包;
[0039] 数据包写入单元用于通过服务器将数据包写入虚拟网络设备Tun网卡;
[0040] 数据包转发单元还用于通过虚拟网络设备Tun网卡将数据包转发至客户端。
[0041] 本发明还提出了一种数据包转发系统,该系统包括上述数据包转发装置。
[0042] 实施本发明,通过虚拟网络设备Tun网卡模拟基于硬件的网络层,从而系统地实 现了模拟从服务器接受数据包的转发过程,避免了在数据包转发过程中对硬件的依赖。同 时,通过为客户端分配静态IP地址,直接将静态IP地址作为用户的身份识别信息,身份验 证以及鉴权过程得到简化,避免了输入明文密码,增强了安全性,提高了用户体验。
【专利附图】
【附图说明】
[0043] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0044] 图1是本发明较佳实施例提供的数据包转发方法的流程图;
[0045] 图2图1示出的根据静态IP地址,查询与之对应的权限信息的具体步骤流程图;
[0046] 图3是图1示出的根据权限信息,分配与之对应权限的数据包,并将其转发至客户 端的具体步骤流程图;
[0047] 图4是本发明另一较佳实施例提供的数据包转发方法的流程图;
[0048] 图5是本发明较佳实施例提供的数据包转发装置的结构框图;
[0049]图6是本发明较佳实施例提供的数据包转发系统的结构框图。
【具体实施方式】
[0050] 为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结 合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅 用以解释本发明,并不用于限定本发明。
[0051] 图1是本发明较佳实施例提供的数据包转发方法的流程图。该方法包括如下步 骤:
[0052] S1,获取并解析客户端的静态IP地址。
[0053] 在计算机网络中,TUN是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路 板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提 供与硬件的网络设备完全相同的功能。TUN模拟了网络层设备,操作第三层数据包比如IP 数据封包。操作系统通过TUN设备向绑定该设备的用户空间的程序发送数据,反之,用户空 间的程序也可以像操作硬件网络设备那样,通过TUN设备发送数据。在后种情况下,TUN设 备向操作系统的网络栈投递(或"注入")数据包,从而模拟从外部接受数据的过程。服务 器如果拥有TUN模块,则可以开启VPN代理功能。
[0054] 在该步骤中,服务器与客户端的Tun网卡建立虚拟网络通信连接,通过该服务器 获取Tun网卡赋予的客户端的静态IP地址。
[0055] S2,根据静态IP地址,查询与之对应的权限信息。在服务器内建立用于保存客户 端权限信息的数据库。首先,当服务器获取到客户端的静态IP地址时,对该静态IP地址进 行解析,使之符合数据库的匹配查询格式;然后,在上述数据库中查找匹配与该静态IP地 址相对应的权限信息,同时,提取该权限信息至服务器的处理端口;最后,服务器的处理端 口对该权限信息进行分析处理,获取该客户端所持有的权限。
[0056] S3,根据权限信息,分配与之对应权限的数据包,并将其转发至客户端。将待转发 的数据包存储至该服务器的存储空间,按上述步骤,获取该客户端所持有的权限后,在该权 限的范围内,在上述存储空间内调取与之对应权限的数据包,然后再将调取的数据包转发 至客户端的Tun网卡。
[0057] 实施例一
[0058] 在本实施例中,获取并解析客户端的静态IP地址之前还包括,通过服务器向与之 建立通信连接的客户端分配静态IP地址。
[0059] 首先,在服务器与客户端之间建立基于Tun的虚拟网卡接口,该虚拟网卡接口的 数据包接收和发送操作并不直接和真实的物理网卡关联,而是通过用户空间来进行数据包 的转交。例如,在linux下,通过虚拟网卡接口实现核心态和用户态数据包的交互,有以下 多种方式:可以通用socket创建特殊套接字,利用套接字实现数据交互;通过proc文件系 统创建文件来进行数据交互;还可以使用设备文件的方式,访问设备文件会调用虚拟网卡 接口相应的例程,虚拟网卡接口本身就是核心态和用户态的一个接口,基于Tun的虚拟网 卡接口即是利用设备文件实现用户态和核心态的数据包交互过程。
[0060] 可以理解,本实施例的基于Tun的虚拟网卡接口中包含两个部分,一部分是字符 设备驱动接口,还有一部分是网卡驱动接口。利用网卡驱动接口接收来自TCP/IP协议栈的 网络分包并发送或者反过来将接收到的网络分包传给协议栈处理;字符驱动接口则将网络 分包在内核与用户态之间传送,模拟物理链路的数据接收和发送。
[0061] 实施本实施例,通过基于Tun的虚拟网卡接口系统地实现了两种驱动接口的结 合,为模拟物理链路的数据包接收和发送建立了通信连接。
[0062] 实施例二
[0063] 图2图1示出的根据静态IP地址,查询与之对应的权限信息的具体步骤流程图。 该步骤具体包括:
[0064] S21,解析静态IP地址,生成用户身份信息。静态IP地址即为一行字符串,本实施 例将该字符串作为用户的身份信息,在服务器端,直接验证该字符串,识别客户端的身份信 息;当完成身份信息识别后,可以对该字符串的格式做相应的调整,以匹配在数据库内的查 询格式。
[0065] S22,在服务器的数据库内查询与用户身份信息对应的权限信息。例如,在服务器 端,对不同的IP地址,分配有相应的权限,或者,针对不同网段下的IP地址,分配相应的权 限。
[0066] 由上述实施例可知,通过Tun网卡设置客户端的IP地址,不受硬件网卡的限制,因 此,本实施例可以根据用户的不同需求,对客户端的IP做相应的设置。
[0067] 实施例三
[0068] 图3是图1示出的根据权限信息,分配与之对应权限的数据包,并将其转发至客户 端的具体步骤流程图。该步骤具体包括:
[0069] S31,接收客户端发送的数据包转发请求。可以理解,可以是由其它客户端向本客 户端发送数据包转发请求,也可以是由本客户端向服务器发送数据包转发请求。
[0070] S32,在数据包转发请求的范围内,根据权限信息分配与之对应权限的数据包。可 以理解,在服务器端,数据包的分配方式有多种:按权限等级由高到低存储待发送的数据 包,再根据客户端的权限等级分配该等级的数据包;在客户端对数据包的访问权限内,任意 选择需要转发的数据包。
[0071] S33,读取数据包,并将其转发至客户端。在服务器的数据库内读取待转发的数据 包,或者,接收其它客户端转发的数据包至系统缓存,然后在该系统缓存内读取待发送的数 据包。
[0072] 通过分析客户端的权限信息,并根据该权限信息分配与之对应权限的数据包,增 强了数据包转发过程中的安全性。
[0073] 实施例四
[0074] 图4是本发明另一较佳实施例提供的数据包转发方法的流程图。该方法具体包括 以下步骤:
[0075] S41,通过Tun网卡在客户端与服务器之间设置路由。通过Tun网卡完成连接的初 始化过程,包括设置网卡驱动接口的初始化函数以及网络缓冲区链表的初始化和等待队列 的初始化;然后,
[0076] S42,通过路由在服务器内读取数据包。该步骤如上例所述,在此不再赘述。
[0077] S43,通过服务器将数据包写入Tun网卡。例如,在服务端,经过协议栈把数据传送 给Tun网卡接口,Tun网卡接口调用注册好的hard_start_xmit函数发送,hard_start_xmit 函数调用tun_net_xmit函数,其中skb (缓冲区)将会被加入skb链表,然后唤醒被阻塞的 使用Tun网卡接口读数据包的进程,通过Tun网卡调用其tun_chr_read()的过程中,读取 skb链表,并将每一个读到的skb发往用户区,以完成基于Tun虚拟网卡的数据包发送。
[0078] S44,通过Tun网卡将数据包转发至客户端。在Tun网卡端,当使用write ()系统 调用向Tun网卡接口的字符设备文件写入数据时,tun_chr_write函数将被调用,它使用 tun_get_user从用户区接受数据,其中,将数据存入skb中,然后调用关键的函数netif_ rx (skb),将skb送给tcp/ip协议栈处理,以完成基于Tun虚拟网卡的数据包接收。
[0079] 通过Tun网卡接口进行数据包的发送与接收,无需硬件依赖,增强了数据包转发 过程中的可扩展性和灵活性。
[0080] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以 通过程序来控制相关的硬件完成,所述的程序可以在存储于一计算机可读取存储介质中, 所述的存储介质,如R0M/RAM、磁盘、光盘等。
[0081] 实施例五
[0082] 图5是本发明较佳实施例提供的数据包转发装置的结构框图。该装置包括:
[0083] 地址解析模块10,用于获取并解析客户端的静态IP地址;
[0084] 权限查询模块20,用于根据静态IP地址,查询与之对应的权限信息;
[0085] 数据处理模块30,用于根据权限信息,分配与之对应权限的数据包,并将其转发至 客户端200。
[0086] 优选地,本装置还包括地址分配模块40,用于向与服务器100建立通信连接的客 户端200分配静态IP地址。
[0087] 优选地,权限查询模块20包括身份信息验证单元21以及权限信息查询单元22,其 中:
[0088] 身份信息验证单元21用于解析静态IP地址,生成用户身份信息;
[0089] 权限信息查询单元22用于在服务器100的数据库内查询与用户身份信息对应的 权限信息。
[0090] 优选地,数据处理模块30包括数据包请求单元31、数据包分配单元32、数据包读 取单元33以及数据包转发单元34,其中:
[0091] 数据包请求单元31用于接收客户端200发送的数据包转发请求;
[0092] 数据包分配单元32用于在数据包转发请求的范围内,根据权限信息分配与之对 应权限的数据包;
[0093] 数据包读取单元33用于读取数据包;
[0094] 数据包转发单元34用于将数据包转发至客户端200 ;
[0095] 优选地,该装置还包括路由设置模块50,数据处理模块30还包括数据包写入单元 35,其中,
[0096] 路由设置模块50用于通过Tun网卡在客户端200与服务器100之间设置路由;
[0097] 数据包读取单元33还用于通过路由在服务器100内读取数据包;
[0098] 数据包写入单元35用于通过服务器100将数据包写入Tun网卡;
[0099] 数据包转发单元34还用于通过Tun网卡将数据包转发至客户端200。
[0100] 实施例六
[0101] 图6是本发明较佳实施例提供的数据包转发系统的结构框图。
[0102] 本发明还提出了一种基于Tun网卡的数据包转发系统,该系统包括上述基于Tun 网卡的数据包转发装置。图6中,本系统的Tun网卡管理组件300、转发启动组件310、转发 停止组件320、路由设置组件330、数据包转发组件340、写入数据包组件350、IP设置组件 360均可以根据上述方法实施例适应性地完成相应的功能。
[0103] 需要说明的是,上述方法实施例中的技术特征在本装置以及本系统均对应适用, 这里不再重述。
[0104] 实施本发明,通过Tun网卡模拟基于硬件的网络层,从而系统地实现了模拟从服 务器接受数据包的转发过程,避免了在数据包转发过程中对硬件的依赖。同时,通过为客户 端分配静态IP地址,直接将静态IP地址作为用户的身份识别信息,身份验证以及鉴权过程 得到简化,避免了输入明文密码,增强了安全性,提高了用户体验。
[0105] 以上参照【专利附图】
【附图说明】了本发明的优选实施例,并非因此局限本发明的权利范围。本 领域技术人员不脱离本发明的范围和实质,可以有多种变型方案实现本发明,比如作为一 个实施例的特征可用于另一实施例而得到又一实施例。凡在运用本发明的技术构思之内所 作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
【权利要求】
1. 一种数据包转发方法,其特征在于,所述方法包括以下步骤: 获取并解析客户端的静态IP地址; 根据所述静态IP地址,查询与之对应的权限信息; 根据所述权限信息,分配与之对应权限的数据包,并将其转发至所述客户端。
2. 根据权利要求1所述的数据包转发方法,其特征在于,获取并解析客户端的静态IP 地址之前还包括,通过服务器向与之建立通信连接的客户端分配静态IP地址。
3. 根据权利要求2所述的数据包转发方法,其特征在于,根据所述静态IP地址,查询与 之对应的权限信息具体包括: 解析所述静态IP地址,生成用户身份信息; 在所述服务器的数据库内查询与所述用户身份信息对应的权限信息。
4. 根据权利要求3所述的数据包转发方法,其特征在于,根据所述权限信息,分配与之 对应权限的数据包,并将其转发至所述客户端具体包括: 接收客户端发送的数据包转发请求; 在所述数据包转发请求的范围内,根据所述权限信息分配与之对应权限的数据包; 读取所述数据包,并将其转发至所述客户端。
5. 根据权利要求4所述的数据包转发方法,其特征在于,在转发所述数据包的过程中: 通过虚拟网络设备Tun网卡在所述客户端与服务器之间设置路由; 通过所述路由在所述服务器内读取所述数据包; 通过所述服务器将所述数据包写入所述虚拟网络设备Tun网卡; 通过所述虚拟网络设备Tun网卡将所述数据包转发至所述客户端。
6. -种数据包转发装置,其特征在于,所述装置包括: 地址解析模块,用于获取并解析客户端的静态IP地址; 权限查询模块,用于根据所述静态IP地址,查询与之对应的权限信息; 数据处理模块,用于根据所述权限信息,分配与之对应权限的数据包,并将其转发至所 述客户端。
7. 根据权利要求6所述的数据包转发装置,其特征在于,还包括地址分配模块,用于向 与所述服务器建立通信连接的客户端分配静态IP地址。
8. 根据权利要求7所述的数据包转发装置,其特征在于,所述权限查询模块包括身份 信息验证单元以及权限信息查询单元,其中, 所述身份信息验证单元用于解析所述静态IP地址,生成用户身份信息; 所述权限信息查询单元用于在所述服务器的数据库内查询与所述用户身份信息对应 的权限信息。
9. 根据权利要求8所述的数据包转发装置,其特征在于,所述数据处理模块包括数据 包请求单元、数据包分配单元、数据包读取单元以及数据包转发单元,其中, 所述数据包请求单元用于接收客户端发送的数据包转发请求; 所述数据包分配单元用于在所述数据包转发请求的范围内,根据所述权限信息分配与 之对应权限的数据包; 所述数据包读取单元用于读取所述数据包; 所述数据包转发单元用于将所述数据包转发至所述客户端; 所述装置还包括路由设置模块,所述数据处理模块还包括数据包写入单元,其中, 所述路由设置单元用于通过所述虚拟网络设备Tun网卡在所述客户端与服务器之间 设置路由; 所述数据包读取单元还用于通过所述路由在所述服务器内读取所述数据包; 所述数据包写入单元用于通过所述服务器将所述数据包写入所述虚拟网络设备Tun 网卡; 数据包转发单元还用于通过所述虚拟网络设备Tun网卡将所述数据包转发至所述客 户端。
10. -种数据包转发系统,其特征在于,所述系统包括权利要求6-9所述的数据包转发 装直。
【文档编号】H04L9/32GK104158817SQ201410422377
【公开日】2014年11月19日 申请日期:2014年8月25日 优先权日:2014年8月25日
【发明者】周恒恭, 魏宇星 申请人:深圳市中兴移动通信有限公司