本发明涉及ipv4/ipv6通信技术领域,具体涉及一种用于跨网络传递客户端源地址的方法、系统及相关设备。
背景技术:
随着ipv4地址的枯竭,人们开始使用ipv6网络替代ipv4网络,在替代的过渡阶段经常同时存在ipv4和ipv6网络共存的情况,用户使用ipv4或ipv6网络时也就存在ipv4和ipv6两个网络之间互不兼容的问题。因为存在两种网络互不兼容的问题,客户端对网站的访问请求就不能简单地从客户端的浏览器直达网站的服务器,中间可能经过协议转换系统或代理服务器等设备,所以服务器接收到客户端的访问请求时,数据包中的源ip地址已不是客户端的源地址。
现有技术中,有时会由协议转换系统或代理服务器将客户端源地址写入到http请求数据包的xff字段中,然后再发送给服务器,服务器通过读取xff字段从而获得客户端的源地址。但是在实际应用中,客户端在发出数据包时通常会对应用层进行加密,使得协议转换系统或代理服务器等设备不便于在xff中添加客户端源地址,以致于无法将客户端源地址传递到服务器。
有鉴于此,特提出本发明。
技术实现要素:
为了解决现有技术中的上述问题,本发明提出了一种用于跨网络传递客户端源地址的方法、系统及相关设备,解决了在应用层被加密后客户端源地址的跨网络传输问题。
本发明的第一方面,提出一种用于跨网络传递客户端源地址的方法,所述方法包括:
协议转换设备接收客户端的第一协议数据包,其中,所述第一协议数据包的应用层已被加密;
对所述第一协议数据包进行协议转换,并将客户端源地址添加到tcp或ip包头的选项字段中或者ip包的扩展包头中,得到包含所述客户端源地址的第二协议数据包;
将所述第二协议数据包发送到源地址信息转换设备;
所述源地址信息转换设备对所述第二协议数据包的应用层进行解密,并读取所述客户端源地址;
将所述客户端源地址添加到所述第二协议数据包的xff字段中;
将所述第二协议数据包发送到服务器;
其中,所述第一协议与所述第二协议分别为ipv4和ipv6中的一种,且互不相同。
优选地,在“将所述第二协议数据包发送到源地址信息转换设备”之前,所述方法还包括:
所述协议转换设备将所述客户端要访问的第一协议目的地址转换为所述服务器的第二协议地址。
本发明的第二方面,提出一种用于跨网络传递客户端源地址的方法,所述方法包括:
协议转换设备接收客户端的第一协议数据包,其中,所述第一协议数据包的应用层已被加密;
对所述第一协议数据包进行协议转换,并将客户端源地址添加到tcp或ip包头的选项字段内或者ip包的扩展包头内,得到包含所述客户端源地址的第二协议数据包;
将所述第二协议数据包发送到源地址信息转换设备,以使所述源地址信息转换设备完成:对所述第二协议数据包的应用层进行解密、读取所述客户端源地址、将所述客户端源地址添加到xff字段,并将所述第二协议数据包发送到服务器;
其中,所述第一协议与所述第二协议分别为ipv4和ipv6中的一种,且互不相同。
优选地,在“将所述第二协议数据包发送到源地址信息转换设备”之前,所述方法还包括:
所述协议转换设备将所述客户端要访问的第一协议目的地址转换为所述服务器的第二协议地址。
本发明的第三方面,提出一种用于跨网络传递客户端源地址的方法,所述方法包括:
源地址信息转换设备接收第二协议数据包,其中,所述第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内包含客户端源地址,且所述第二协议数据包的应用层已被加密,所述客户端源地址为发起访问请求的客户端的第一协议地址;
对所述第二协议数据包的应用层进行解密,并读取所述客户端源地址;
将所述客户端源地址添加到所述第二协议数据包的xff字段中;
将所述第二协议数据包发送到服务器;
其中,所述第一协议与所述第二协议分别为ipv4和ipv6中的一种,且互不相同。
本发明的第四方面,提出一种用于跨网络传递客户端源地址的系统,所述系统包括:协议转换设备和源地址信息转换设备;
所述协议转换设备配置为:接收客户端的第一协议数据包,其中,所述第一协议数据包的应用层已被加密;对所述第一协议数据包进行协议转换,并将客户端源地址添加到tcp或ip包头的选项字段中或者ip包的扩展包头中,得到包含所述客户端源地址的第二协议数据包;将所述第二协议数据包发送到源地址信息转换设备;
所述源地址信息转换设备配置为:对所述第二协议数据包的应用层进行解密,并读取所述客户端源地址;将所述客户端源地址添加到所述第二协议数据包的xff字段中;将所述第二协议数据包发送到服务器;
其中,所述第一协议与所述第二协议分别为ipv4和ipv6中的一种,且互不相同。
优选地,所述源地址信息转换设备包括:解密设备和xff写入设备;
所述解密设备配置为对所述第二协议数据包的应用层进行解密;
所述xff写入设备配置为:读取所述客户端源地址,将所述客户端源地址添加到所述第二协议数据包的xff字段中,将所述第二协议数据包发送到服务器。
优选地,所述协议转换设备还配置为:
将所述客户端要访问的第一协议目的地址转换为所述服务器的第二协议地址。
本发明的第五方面,提出一种用于跨网络传递客户端源地址的协议转换设备,所述协议转换设备包括:接收模块、转换模块、注入模块和发送模块;
所述接收模块配置为接收客户端的第一协议数据包,其中,所述第一协议数据包的应用层已被加密;
所述转换模块配置为将所述第一协议数据包转换为第二协议数据包;
所述注入模块配置为将客户端源地址添加到所述第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内,得到包含所述客户端源地址的所述第二协议数据包;
所述发送模块配置为将所述第二协议数据包发送到源地址信息转换设备,以使所述源地址信息转换设备完成:对所述第二协议数据包的应用层进行解密、读取所述客户端源地址、将所述客户端源地址添加到xff字段,并将所述第二协议数据包发送到服务器;
其中,所述第一协议与所述第二协议分别为ipv4和ipv6中的一种,且互不相同。
优选地,所述转换模块还配置为:
将所述客户端要访问的第一协议目的地址转换为所述服务器的第二协议地址。
本发明的第六方面,提出一种用于跨网络传递客户端源地址的源地址信息转换设备,所述源地址信息转换设备包括:接收模块、解密模块、地址读取模块、地址添加模块和发送模块;
所述接收模块配置为接收第二协议数据包,其中,所述第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内包含客户端源地址,且所述第二协议数据包的应用层已被加密,所述客户端源地址为发起访问请求的客户端的第一协议地址;
所述解密模块配置为对所述第二协议数据包的应用层进行解密;
所述地址读取模块配置为从所述第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内读取所述客户端源地址;
所述地址添加模块配置为将所述客户端源地址添加到所述第二协议数据包的xff字段中;
所述发送模块配置为将所述第二协议数据包发送到服务器;
其中,
所述第一协议与所述第二协议分别为ipv4和ipv6中的一种,且互不相同;
所述接收模块、所述解密模块、所述地址读取模块、所述地址添加模块和所述发送模块设置于相同或不同的装置中。
第二协议数据包的xff字段中;将所述第二协议数据包发送到服务器;
本发明的第七方面,提出一种存储设备,其存储有程序,所述程序适于由处理器加载并执行,以实现上面所述的用于跨网络传递客户端源地址的方法。
本发明的第八方面,提出一种处理设备,包括处理器和存储器;
所述处理器适于执行程序;
所述存储器适于存储所述程序;
所述程序适于由所述处理器加载并执行,以实现上面所述的用于跨网络传递客户端源地址的方法。
与最接近的现有技术相比,本发明具有如下有益效果:
本发明提出的用于跨网络传递客户端源地址的方法与系统,针对客户端跨网络访问服务器的情况,由协议转换设备接收客户端的第一协议数据包,对第一协议数据包进行协议转换,并将客户端源地址添加到tcp或ip包头的选项字段中或者ip包的扩展包头中,得到第二协议数据包;源地址信息转换设备对第二协议数据包的应用层进行解密,读取客户端源地址并添加到xff字段中,将第二协议数据包发送到服务器,从而使得服务器可以从xff字段中获取客户端源地址。本发明解决了加密后的数据包中不便于将客户端源地址添加到xff中的问题,在保证数据传输安全性的基础上,实现了跨网络传递客户端源地址。
附图说明
图1是本发明的用于跨网络传递客户端源地址的方法实施例一的主要步骤示意图;
图2是本发明的用于跨网络传递客户端源地址的方法实施例二的主要步骤示意图;
图3是本发明的用于跨网络传递客户端源地址的方法实施例三的主要步骤示意图;
图4是本发明的用于跨网络传递客户端源地址的系统实施例的主要构成示意图;
图5是本发明的用于跨网络传递客户端源地址的协议转换设备实施例的主要构成示意图;
图6是本发明的用于跨网络传递客户端源地址的源地址信息转换设备实施例的主要构成示意图。
具体实施方式
下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
本发明中提到的“跨网络”,是指ipv4网络的客户端去访问ipv6网络的服务器,或者ipv6网络的客户端去访问ipv4网络的服务器。“第一协议”与“第二协议”分别为ipv4和ipv6中的一种,且互不相同。“第一协议”为ipv4,且“第二协议”为ipv6;或者,“第一协议”为ipv6,且“第二协议”为ipv4。客户端所处的网络使用第一协议,服务器所处的网络使用第二协议。
本领域人员应当明白,只要符合本发明的设计思路,实施例中的设备的名称、构成和执行步骤均可以进行适当的变化,不会对本发明要求保护的范围构成限制。
下面实施例一至三的主要思路是:协议转换设备在接收到客户端的数据包(该数据包的应用层已经被加密)后,先进行协议转换并将客户端源地址添加到tcp或ip包头的选项字段中或者ip包的扩展包头中(当第一协议为ipv4时,添加到tcp或ip包头的选项字段中;当第一协议为ipv6时,添加到tcp包头的选项字段中或ip包的扩展包头中),然后将数据包发送到源地址信息转换设备,由源地址信息转换设备完成后续的应用层解密、读取客户端源地址并添加到http包头的xff字段中。其中,实施例一是以协议转换设备和源地址信息转换设备作为执行主体对跨网络传递客户端源地址的方法进行描述,而实施例二以协议转换设备为执行主体进行描述,实施例三以源地址信息转换设备作为执行主体进行描述。
图1是本发明的用于跨网络传递客户端源地址的方法实施例一的主要步骤示意图。如图1所示,本实施例的方法可以包括步骤a10-a60:
步骤a10,协议转换设备接收客户端的第一协议数据包,其中,第一协议数据包的应用层已被加密(如,进行了ssl加密)。
步骤a20,对第一协议数据包进行协议转换,并将客户端源地址添加到tcp或ip包头的选项字段中或者ip包的扩展包头中,得到包含客户端源地址的第二协议数据包。
实际应用中,可以先做协议转换得到第二协议的数据包,再将客户端源地址加入第二协议数据包的tcp或ip包头的选项字段中或者ip包的扩展包头中;也可以先将客户端源地址加入第一协议数据包的tcp或ip包头的选项字段中或者ip包的扩展包头中,再做协议转换得到包含客户端源地址的第二协议数据包。不管采用哪种方式,最后生成的第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内要包含客户端源地址。
步骤a30,将第二协议数据包发送到源地址信息转换设备。
本实施例中,协议转换设备可以为一个设备,由该设备来完成步骤a10-a30的全部操作;协议转换设备也可以包括多个设备,由每个设备来完成a10-a30中的一项或多项操作。
步骤a40,源地址信息转换设备对第二协议数据包的应用层进行解密,并读取客户端源地址。
对应用层进行解密,以及从tcp或ip包头的选项字段中或者ip包的扩展包头中读取客户端源地址,这两个步骤可以交换顺序,也可以并列执行。如果是先进行解密后读取地址的话,可以令解密后的数据包中tcp或ip包头的选项字段或者ip包的扩展包头的内容继承解密前的内容,以便后续可以顺利读取客户端源地址,另外,也可以从解密前的数据包中读取客户端源地址。
步骤a50,将客户端源地址添加到第二协议数据包的xff字段中。
步骤a60,将第二协议数据包发送到服务器。
本实施例中,源地址信息转换设备可以为一个设备,由该设备来完成步骤a40-a60的全部操作;源地址信息转换设备也可以包括多个设备,由每个设备完成a40-a60中的一项或多项操作,例如分成两个设备:第一个设备负责对应用层进行解密,第二个设备负责读取客户端源地址并加入xff字段,然后发送到服务器。
在实际应用中,当处于ipv6网络的客户端想要访问ipv4网络中的服务器时,因为客户端可能设置于局域网中,在接入广域网的时候通常要经过nat66设备,将客户端的私网ip转换为公网ip,那么在协议转换设备中接收到的来自客户端的数据包中“客户端源地址”就是转换后的公网ip,以致后续传输到服务器的“客户端源地址”就是转换后的公网ip;类似地,当处于ipv4网络中的客户端想要访问ipv6网络中的服务器时,也可能会通过nat44对客户端地址进行转换。因为nat66和nat44均为本领域常规技术,我们在后续的实施例中不再提及,但是本领域技术人员应当明白,根据实际使用场景,它们是可能会被应用到。
在另一种可选的实施例中,用于跨网络传递客户端源地址的方法还可以包括:
步骤a25,协议转换设备将客户端要访问的第一协议目的地址转换为服务器的第二协议地址。
例如,ipv6客户端要访问ipv4服务器的话,协议转换设备将ipv6客户端要访问的ipv6目的地址转换为服务器的ipv4地址。
图2是本发明的用于跨网络传递客户端源地址的方法实施例二的主要步骤示意图。如图2所示,本实施例的方法可以包括步骤b10-b30:
步骤b10,协议转换设备接收客户端的第一协议数据包,其中,第一协议数据包的应用层已被加密。
步骤b20,对第一协议数据包进行协议转换,并将客户端源地址添加到tcp或ip包头的选项字段内或者ip包的扩展包头内,得到包含客户端源地址的第二协议数据包。
在实际应用中,可以先进行协议转换得到第二协议数据包,再将客户端源地址添加到第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内;也可以先将客户端源地址添加到第一协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内,再将包含客户端源地址的第一协议数据包转换为第二协议数据包。不管采用哪种方式,最后生成的第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内都包含客户端源地址。
步骤b30,将第二协议数据包发送到源地址信息转换设备,以使源地址信息转换设备完成:对第二协议数据包的应用层进行解密、读取客户端源地址、将客户端源地址添加到xff字段,并将第二协议数据包发送到服务器。
本实施例中,协议转换设备可以为一个设备,也可以包括多个设备,只要能完成上述操作即可。
在一种可选的实施例中,用于跨网络传递客户端源地址的方法还包括:
步骤b25,协议转换设备将客户端要访问的第一协议目的地址转换为服务器的第二协议地址。
图3是本发明的用于跨网络传递客户端源地址的方法实施例三的主要步骤示意图。如图3所示,本实施例的方法包括步骤c10-c40:
步骤c10,源地址信息转换设备接收第二协议数据包。
其中,第二协议为ipv4或ipv6;接收到的第二协议数据包中tcp或ip包头的选项字段内或者ip包的扩展包头内包含客户端源地址,且第二协议数据包的应用层已被加密,客户端源地址为发起访问请求的客户端的第一协议地址。
步骤c20,对第二协议数据包的应用层进行解密,并读取客户端源地址。
因为客户端源地址是在tcp或ip包头的选项字段中或者ip包的扩展包头中,因此,读取客户端源地址和对应用层进行解密的操作,彼此之间没有依赖关系,这两个操作可以颠倒顺序执行,也可以并列执行。如果是先进行解密后读取地址的话,可以令解密后的数据包中tcp或ip包头的选项字段或者ip包的扩展包头的内容继承解密前的内容,以便后续可以顺利读取客户端源地址,另外,也可以从解密前的数据包中读取客户端源地址。
步骤c30,将客户端源地址添加到第二协议数据包的xff字段中。
步骤c40,将第二协议数据包发送到服务器。
上述实施例一至三中虽然将各个步骤按照上述先后次序的方式进行了描述,但是本领域技术人员可以理解,为了实现本实施例的效果,不同的步骤之间不必按照这样的次序执行,其可以同时(并行)执行或以颠倒的次序执行,这些简单的变化都在本发明的保护范围之内。
本发明还提供了系统实施例,与上面的方法实施例基于相同的技术构思,下面进行详细说明。
图4是本发明的用于跨网络传递客户端源地址的系统实施例的主要构成示意图。如图4所示,本实施例中,第一协议和第二协议分别为ipv6和ipv4;客户端10处于ipv6网络中,其地址为ipv6源地址;服务器20处于ipv4网络中,其地址为ipv4地址,也就是客户端10要访问的ipv4目的地址;系统30包括:协议转换设备31和源地址信息转换设备32。
其中,协议转换设备31配置为:接收客户端10的第一协议(本实施例中为ipv6)数据包,其中第一协议数据包的应用层已被加密,对第一协议数据包进行协议转换,并将客户端源地址添加到tcp或ip包头的选项字段中(因为这里已经转换成了第二协议ipv4,所以没有ip扩展包头,只能添加到tcp或ip包头的选项字段中),得到包含客户端源地址的第二协议(本实施例中为ipv4)数据包,将第二协议数据包发送到源地址信息转换设备32;源地址信息转换设备32配置为:对第二协议数据包的应用层进行解密,并读取客户端源地址,将客户端源地址添加到第二协议数据包的xff字段中,将第二协议数据包发送到服务器20。
具体地,本实施例中的源地址信息转换设备32可以包括:解密设备和xff写入设备。其中,解密设备配置为对第二协议数据包的应用层进行解密;xff写入设备配置为:读取客户端源地址,将客户端源地址添加到第二协议数据包的xff字段中,将第二协议数据包发送到服务器。
在一种可选的实施例中,协议转换设备31还可以进一步配置为:将客户端10要访问的第一协议目的地址转换为服务器20的第二协议地址。对应于图4来说,就是将客户端10要访问的ipv6目的地址转换为服务器20的ipv4地址。
图5是本发明的用于跨网络传递客户端源地址的协议转换设备实施例的主要构成示意图。如图5所示,本实施例的协议转换设备31可以包括:接收模块311、转换模块312、注入模块313和发送模块314。
其中,接收模块311配置为接收客户端10的第一协议(本实施例中为ipv6)数据包,其中,第一协议数据包的应用层已被加密;转换模块312配置为对第一协议数据包转换为第二协议(本实施例中为ipv4)数据包,将客户端10要访问的第一协议目的地址转换为服务器的第二协议地址;注入模块313配置为将客户端源地址添加到第二协议数据包中tcp或ip包头的选项字段内,得到包含客户端源地址的第二协议数据包;发送模块314配置为将第二协议数据包发送到源地址信息转换设备32,以使源地址信息转换设备32完成:对第二协议数据包的应用层进行解密、读取客户端源地址、将客户端源地址添加到xff字段,并将第二协议数据包发送到服务器20。
图6是本发明的用于跨网络传递客户端源地址的源地址信息转换设备实施例的主要构成示意图。如图6所示,本实施例中的源地址信息转换设备32可以包括:接收模块321、解密模块322、地址读取模块323、地址添加模块324和发送模块325。
其中,接收模块321配置为接收第二协议(本实施例中为ipv4)数据包,其中,第二协议数据包中tcp或ip包头的选项字段内包含客户端源地址,且第二协议数据包的应用层已被加密,客户端源地址为发起访问请求的客户端10的第一协议地址;解密模块322配置为对第二协议数据包的应用层进行解密;地址读取模块323配置为从第二协议数据包中tcp或ip包头的选项字段内内读取客户端源地址;地址添加模块324配置为将客户端源地址添加到第二协议数据包的xff字段中;发送模块325配置为将第二协议数据包发送到服务器。
本实施例中,接收模块321、解密模块322、地址读取模块323、地址添加模块324和发送模块325可以设置在相同或不同的装置中,即源地址信息转换设备32可以为一个设备,也可以包括多个设备,可以根据实际使用场景进行设置。在实际应用中,接收模块321、解密模块322、地址读取模块323、地址添加模块324和发送模块325可以依次电连接;或者接收模块321、地址读取模块323、解密模块322、地址添加模块324和发送模块325依次电连接;或者解密模块322与地址读取模块323并联在一起组成并联模块,接收模块321、并联模块、地址添加模块324和发送模块325依次电连接。
本文中虽然只给出了将客户端ipv6源地址传递到服务器ipv4地址的系统实施例,但是,本领域技术人员明白,将客户端ipv4源地址传递到服务器ipv6地址可以采用类似的技术手段,这些都在本发明的保护范围之内。
进一步地,本发明还提供了一种存储设备的实施例。本实施例的存储设备中存储有程序,所述程序适于由处理器加载并执行,以实现上面所述的用于跨网络传递客户端源地址的方法。
更进一步地,本发明还提供了一种处理设备的实施例。本实施例的处理设备包括处理器和存储器。其中,处理器适于执行程序,存储器适于存储所述程序;所述程序适于由所述处理器加载并执行,以实现上面所述的用于跨网络传递客户端源地址的方法。
本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的方法步骤、设备、模块,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。