CN105208138A - 不同版本互联网协议客户端之间的通信方法和系统 - Google Patents
不同版本互联网协议客户端之间的通信方法和系统 Download PDFInfo
- Publication number
- CN105208138A CN105208138A CN201410277703.9A CN201410277703A CN105208138A CN 105208138 A CN105208138 A CN 105208138A CN 201410277703 A CN201410277703 A CN 201410277703A CN 105208138 A CN105208138 A CN 105208138A
- Authority
- CN
- China
- Prior art keywords
- address
- main frame
- client
- version
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种不同版本互联网协议客户端之间的通信方法和系统,其中,方法包括:不同地址族的第一主机和第二主机上的CP客户端分别向CP服务器发送注册请求;第一用户与第二用户为好友关系,CP服务器向TURN服务器发送映射请求;TURN服务器从自身配置的地址池中分别向第一主机和第二主机分配中继地址并返回CP服务器,以及在映射表中建立相应的映射表项;CP服务器分别将为各主机分配的中继地址发送对端CP客户端;TURN服务器基于映射表项对CP客户端发送的数据流进行地址和协议的转换后转发给对方CP客户端。本发明实施例可以协助CP服务器完成v4/v6客户端之间的通信。
Description
技术领域
本发明涉及通信技术,尤其是一种不同版本互联网协议客户端之间的通信方法和系统。
背景技术
中国电信当前正积极推进用户、网络以及互联网内容从第四版本互联网协议(IPv4,简称:v4)向第六版本互联网协议(IPv6,简称:v6)演进,目前采用了如轻型双栈(DS-Lite)、网络地址转换(NAT)444等过渡技术。但这些技术的引入,主要解决的是如何在IPv6网络上传递IPv4用户与传统互联网服务器间的通信,如何避免IPv4地址短缺等情况。其它一些新型的过渡技术,如NAT64,一般也主要考虑如何实现IPv6用户访问IPv4互联网服务器上的资源。
上述所有过渡技术都没有考虑如何实现基于客户端的IPv4用户与IPv6用户间的直接通信。在现有实现IPv4用户与IPv6用户通信的一种方式中,内容提供商(CP)只能通过在其服务器侧自行部署实现IPv4与IPv6(表示为:IPv4/IPv6或v4/v6)协议转换、流量中转的设备来完成上述两类用户间的直接通信,IPv4用户向IPv6用户发送通信报文时,由IPv4用户与该设备的IPv4地址通信,该设备提取IPv4用户通信报文中的应用层数据,再通过其IPv6地址与IPv6用户通信;IPv6用户向IPv4用户发送通信报文时的流程同理。该实现IPv4用户与IPv6用户通信的方式至少存在以下问题:由CP来部署这样的设备,一方面会因为该设备部署较少或者部署位置不合适造成客户端与客户端(C/C)间通信的流量绕转,另一方面也需要花费大量精力来处理网络层面的协议转换,从而加重了IPv4向IPv6演进的成本。
在现有实现IPv4用户与IPv6用户通信的另一种方式中,基于通过中继网络地址翻译(NAT)实现的穿透(TraversalUsingRelayNAT,TURN)客户端(Client)与TURN服务器(Server)之间的通信模型,通过提前获取通信对端另一协议族的地址来实现IPv4用户与IPv6用户间的直接通信。其中的TURNClient与TURNServer可以表示为TURNClient/TURNServer间的通信模型。该TURNClient/TURNServer通信模型存在的问题是:没有考虑本架构如何被其他CP采用,以协助CP完成v4/v6客户端之间的通信。
发明内容
本发明实施例所要解决的技术问题是:提供一种不同版本互联网协议客户端之间的通信方法和系统,以协助CP服务器完成v4/v6客户端之间的通信,降低IPv4向IPv6演进的成本和难度。
本发明实施例提供的一种不同版本互联网协议客户端之间的通信方法,包括:
第一主机上的内容提供商CP客户端向CP服务器发送第一注册请求,该第一注册请求中包括第一用户的用户信息和第一主机使用的一个版本互联网协议IP地址信息;第二主机上的CP客户端向所述CP服务器发送第二注册请求,该第二注册请求中包括第二用户的用户信息和第二主机使用的另一版本IP地址信息;第一主机和第二主机上的CP客户端属于同一个CP的CP客户端;
CP服务器发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,作为通过中继网络地址翻译实现的穿透TURN客户端向TURN服务器发送映射请求,该映射请求中包括所述一个版本IP地址信息和所述另一版本IP地址信息;
TURN服务器从自身配置的地址池中,向所述第一主机分配另一版本的中继地址,向所述第二主机分配一个版本的中继地址;
TURN服务器在映射表中建立第一主机使用的一个版本IP地址、端口号和所述另一版本的中继地址之间的第一映射表项,建立第二主机使用的另一版本IP地址、端口号和所述一个版本的中继地址之间的第二映射表项,并向所述CP服务器返回所述另一版本的中继地址和所述一个版本的中继地址;所述中继地址包括中继IP地址和端口号;
CP服务器将所述另一版本的中继地址作为第一主机的地址信息发送给第二主机上的CP客户端,将所述一个版本的中继地址作为第二主机的地址信息发送给第一主机上的CP客户端;
TURN服务器接收到第一主机上的CP客户端基于所述一个版本的中继地址发送给第二主机上的CP客户端的第一数据流时,基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端;接收到第二主机上的CP客户端基于所述另一版本的中继地址发送给第一主机上的CP客户端的第二数据流时,基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端。
基于上述方法的另一个实施例中,所述一个版本IP地址为第四版本互联网协议IPv4地址,所述一个版本的中继地址包括中继IPv4地址和端口号;
所述另一版本IP地址为第六版本互联网协议IPv6地址,所述另一版本的中继地址包括中继IPv6地址和端口号。
基于上述方法的另一个实施例中,基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端包括:
将所述第一数据流从IPv4协议转换为IPv6协议,并查询第二映射表项,获取第一数据流中作为目的地址的中继IPv4地址和端口号对应的第二主机使用的IPv6地址和端口号,根据该第二主机使用的IPv6地址和端口号,将IPv6协议的第一数据流转发给第二主机上的CP客户端;
基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端包括:
将所述第二数据流从IPv6协议转换为IPv4协议,并查询第一映射表项,获取第二数据流中作为目的地址的中继IPv6地址和端口号对应的第一主机使用的IPv4地址和端口号,根据该第一主机使用的IPv4地址和端口号,将IPv4协议的第二数据流转发给第一主机上的CP客户端。
基于上述方法的另一个实施例中,通信网络中包括多个TURN服务器时,还包括:
CP服务器发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,从多个TURN服务器中选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器;
所述作为TURN客户端向TURN服务器发送映射请求具体为:向选择的TURN服务器发送映射请求。
基于上述方法的另一个实施例中,选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器包括:
分别计算第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器之间的距离,选择与第二主机使用的IPv6地址之间距离最小的TURN服务器。
基于上述方法的另一个实施例中,分别计算第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器之间的距离包括:
分别对第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器地址进行异或XOR运算。
本发明实施例提供的一种不同版本互联网协议客户端之间的通信系统,包括TURN服务器、作为TURN客户端的CP服务器、使用一个版本IP地址的第一主机和使用另一版本IP地址的第二主机,第一主机和第二主机上分别耦合设置有同一个CP的CP客户端;
所述第一主机上的CP客户端,用于向CP服务器发送第一注册请求,该第一注册请求中包括第一用户的用户信息和第一主机使用的一个版本IP地址信息;
所述第二主机上的CP客户端,用于向所述CP服务器发送第二注册请求,该第二注册请求中包括第二用户的用户信息和第二主机使用的另一版本IP地址信息;
所述CP服务器,用于发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,作为TURN客户端向TURN服务器发送映射请求,该映射请求中包括所述一个版本IP地址信息和所述另一版本IP地址信息;以及将TURN服务器返回的另一版本的中继地址作为第一主机的地址信息发送给第二主机上的CP客户端,将TURN服务器返回的一个版本的中继地址作为第二主机的地址信息发送给第一主机上的CP客户端;
所述TURN服务器,用于从自身配置的地址池中,向所述第一主机分配另一版本的中继地址,向所述第二主机分配一个版本的中继地址;在映射表中建立第一主机使用的一个版本IP地址、端口号和所述另一版本的中继地址之间的第一映射表项,建立第二主机使用的另一版本IP地址、端口号和所述一个版本的中继地址之间的第二映射表项,并向所述CP服务器返回所述另一版本的中继地址和所述一个版本的中继地址;所述中继地址包括中继IP地址和端口号;以及在接收到第一主机上的CP客户端基于所述一个版本的中继地址发送给第二主机上的CP客户端的第一数据流时,基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端;在接收到第二主机上的CP客户端基于所述另一版本的中继地址发送给第一主机上的CP客户端的第二数据流时,基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端。
基于上述系统的另一个实施例中,所述一个版本IP地址为IPv4地址,所述一个版本的中继地址包括中继IPv4地址和端口号;
所述另一版本IP地址为IPv6地址,所述另一版本的中继地址包括中继IPv6地址和端口号。
基于上述系统的另一个实施例中,所述TURN服务器基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端时,具体将所述第一数据流从IPv4协议转换为IPv6协议,并查询第二映射表项,获取第一数据流中作为目的地址的中继IPv4地址和端口号对应的第二主机使用的IPv6地址和端口号,根据该第二主机使用的IPv6地址和端口号,将IPv6协议的第一数据流转发给第二主机上的CP客户端;基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端时,具体将所述第二数据流从IPv6协议转换为IPv4协议,并查询第一映射表项,获取第二数据流中作为目的地址的中继IPv6地址和端口号对应的第一主机使用的IPv4地址和端口号,根据该第一主机使用的IPv4地址和端口号,将IPv4协议的第二数据流转发给第一主机上的CP客户端。
基于上述系统的另一个实施例中,所述通信系统包括多个TURN服务器;
所述CP服务器,具体在发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,从多个TURN服务器中选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器,并作为TURN客户端向TURN服务器发送映射请求具体为:向选择的TURN服务器发送映射请求。
基于上述系统的另一个实施例中,所述CP服务器具体分别计算第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器之间的距离,选择与第二主机使用的IPv6地址之间距离最小的TURN服务器,作为对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器。
基于本发明上述实施例提供的不同版本互联网协议客户端之间的通信方法和系统,基于TURNClient/TURNServer间的通信模型,通过在TURN服务器与CP服务器之间开放一个通信接口,协助CP服务器实现不同地址族的IPv4/IPv6客户端之间的通信,降低IPv4向IPv6演进的成本和难度,减轻其引进IPv6的压力,可保证在IPv6用户引入过程中,其与IPv4用户的通信不受影响,可有效推动CP客户端应用向IPv6演进。相对于现有各CP通过自身的协议转换来完成IPv4/IPv6客户端通信的架构,本本发明实施例可有效减轻CP在做v4/v6转换时的地址转换、协议转换以及数据流量中转的压力,而且运营商分布部署的TURNServer也可以实现多个CP共用,可被任意CP之间调用,实现能力的有效复用,每个CP的互通流量都可以得到优化。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为当前TURNClient/TURNServer间的通信架构示意图。
图2为现有CP实现IPv4/IPv6用户间通信的架构图。
图3为本发明不同版本互联网协议客户端之间的通信方法一个实施例的流程图。
图4为本发明不同版本互联网协议客户端之间的通信方法一个应用实施例的流程图。
图5为图4所示应用实施例的通信架构示意图。
图6为本发明不同版本互联网协议客户端之间的通信方法另一个应用实施例的通信架构示意图。
图7为本发明不同版本互联网协议客户端之间的通信系统一个实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
如图1所示,为当前TURNClient/TURNServer间的通信架构示意图。如果拥有IPv4地址的主机(Host)A想与拥有IPv6地址的HostB通信,则需要作为TURNClient通过TURNServer来获取对端另一协议族的地址,例如HostA获取到HostB的中继(Relay)IPv4地址;HostB获取到HostA的RelayIPv6地址,这样双方就可以通过TURNServer提供的Relay功能实现地址和协议翻译并完成流量中转。但TURNClient/TURNServer通信模型只是提供了一种通信能力,CP的客户间通信需要调用该功能才能完成IPv4/IPv6客户端之间的通信。
图2为现有CP实现IPv4/IPv6用户间通信的一个架构图。正如图2所示,不同CP如果要实现其IPv4/IPv6客户端之间的通信,则需要自行搭建相应的IPv4/IPv6转换(Converter)设备,CP1、CP2均需要实现地址分配、协议转换、流量转发等功能,这些要求会增加CP向IPv6演进的难度和成本。
图3为本发明不同版本互联网协议客户端之间的通信方法一个实施例的流程图。如图3所示,该实施例的通信方法包括:
110,第一主机上的CP客户端向CP服务器发送第一注册请求,该第一注册请求中包括第一用户的用户信息和第一主机使用的一个版本IP地址信息;第二主机上的CP客户端向CP服务器发送第二注册请求,该第二注册请求中包括第二用户的用户信息和第二主机使用的另一版本IP地址信息。
其中,第一主机和第二主机上的CP客户端属于同一个CP的CP客户端。
120,CP服务器发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族(即:采用不同版本IP地址)时,作为TURN客户端向TURN服务器发送映射请求,该映射请求中包括第一注册请求中的一个版本IP地址信息和第二注册请求中的另一版本IP地址信息。
130,TURN服务器从自身配置的地址池中,向第一主机分配上述另一版本的中继地址,向第二主机分配上述一个版本的中继地址。
其中,TURN服务器自身配置的地址池中包括配置给该TURN服务器使用的一个版本和另一版本的一个以上的IP地址。
140,TURN服务器在映射表中建立第一主机使用的一个版本IP地址、端口号和向第一主机分配的另一版本的中继地址之间的第一映射表项,建立第二主机使用的另一版本IP地址、端口号和向第二主机分配的一个版本的中继地址之间的第二映射表项,并向CP服务器返回该另一版本的中继地址和一个版本的中继地址。其中的中继地址包括中继IP地址和端口号。
150,CP服务器将接收到的另一版本的中继地址作为第一主机的地址信息发送给第二主机上的CP客户端,将接收到的一个版本的中继地址作为第二主机的地址信息发送给第一主机上的CP客户端。
160,TURN服务器接收到第一主机上的CP客户端基于上述一个版本的中继地址发送给第二主机上的CP客户端的第一数据流时,基于第二映射表项对第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端;接收到第二主机上的CP客户端基于上述另一版本的中继地址发送给第一主机上的CP客户端的第二数据流时,基于第一映射表项对第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端。
在本发明上述不同版本互联网协议客户端之间的通信方法的一个具体示例中,上述一个版本IP地址具体为IPv4地址,相应地,上述一个版本的中继地址包括中继IPv4地址和端口号;上述另一版本IP地址具体为IPv6地址,相应地,上述另一版本的中继地址包括中继IPv6地址和端口号。
在本发明上述不同版本互联网协议客户端之间的通信方法的另一个具体示例中,图3所示的操作160中,基于第二映射表项对第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端具体可以是:将第一数据流从IPv4协议转换为IPv6协议,并查询第二映射表项,获取第一数据流中作为目的地址的中继IPv4地址和端口号对应的第二主机使用的IPv6地址和端口号,根据该第二主机使用的IPv6地址和端口号,将IPv6协议的第一数据流转发给第二主机上的CP客户端。
同理,图3所示的操作160中,基于第一映射表项对第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端具体可以是:将第二数据流从IPv6协议转换为IPv4协议,并查询第一映射表项,获取第二数据流中作为目的地址的中继IPv6地址和端口号对应的第一主机使用的IPv4地址和端口号,根据该第一主机使用的IPv4地址和端口号,将IPv4协议的第二数据流转发给第一主机上的CP客户端。
图4为本发明不同版本互联网协议客户端之间的通信方法一个应用实施例的流程图。图5为图4所示应用实施例的通信架构示意图。该应用实施例中,HostA作为本发明实施例中的第一主机,采用IPv4地址,HostA上耦合设置有CP1客户端和CP2客户端;HostB作为本发明实施例中的第二主机,采用IPv6地址,HostB上也耦合设置有CP1客户端和CP2客户端,以下以HostA与HostB上CP1客户端之间的通信为例对本发明进行示例性说明。参见图4与图5,该应用实施例的流程包括:
210,用户A启动HostA上的CP1客户端,CP1客户端向CP1服务器发送第一注册请求,该第一注册请求中包括用户A的用户信息和HostA使用的IPv4地址(表示为Pub_Av4)信息。
其中的用户信息具体可以是用户的账号相关信息,例如QQ登录时的用户帐号和密码信息。
220,用户B启动HostB上的CP1客户端,CP1客户端向CP1服务器发送第二注册请求,该第二注册请求中包括用户B的用户信息和HostB使用的IPv6地址(表示为Pub_Bv6)信息。
其中,操作210与220之间不存在执行顺序限制,二者可以同时执行,也可以以任意先后顺序执行,本实施例附图4仅给出其中一种情况。
本领域技术人员知道,主机使用的IP地址即分配给其用户的IP地址。
230,CP1服务器发现用户A与用户B为好友关系、但HostA与HostB使用的IP地址属于不同的地址族时,作为TURN客户端,向TURN服务器发送映射请求,其中包括Pub_Av4和Pub_Bv6。
在实际应用中,每个用户信息中都包括一个好友关系信息(例如QQ中的好友列表),通过用户A、B中的一个用户信息中的好友关系信息即可获知用户A、B是否为好友关系。
240,TURN服务器从为该TURN服务器配置的地址池中,针对Pub_Av4分配一个中继IPv6地址(表示为Relay_Av6)和端口号,针对Pub_Bv6分配一个中继IPv4地址(表示为Relay_Bv4)和端口号。
250,TURN服务器在映射表中建立HostA使用的Pub_Av4、端口号和向其分配的Relay_Av6与端口号之间的第一映射表项,建立HostB使用的Pub_Bv6、端口号和向其分配的Relay_Bv4与端口号之间的第二映射表项,并向CP服务器返回向HostA分配的Relay_Av6与端口号、向HostB分配的Relay_Bv4和端口号信息。
如下表1所示,为TURN服务器中映射表的一个具体结构示例,其中,第1行为第一映射表项,第2行为第二映射表项。
表1
260,CP1服务器将向HostA分配的Relay_Av6地址与端口号作为HostA上CP1客户端的IPv6地址与端口号发送给HostB上的CP1客户端,将向HostB分配的Relay_Bv4和端口号作为HostB上CP1客户端的IPv4地址发送给HostA上的CP1客户端。
这样,HostA上的CP1客户端接收到的是TURN服务器发给它的、代表HostB上CP1客户端的Relay_IPv4地址;HostB上的CP1客户端接收到的是TURN服务器发给它的、代表HostA上CP1客户端的Relay_Av6地址。此后,HostA和HostB上的CP1客户端可以通过如下操作,经TURN服务器进行通信,由于TURN服务器的存在,HostA与HostB上的CP1客户端感知不到对方的存在,通信双方无地址族差异感知。
270,HostA上的CP1客户端基于Relay_Bv4和端口号向HostB上的CP1客户端发送第一数据流时,由于Relay_Bv4是TURN服务器的IPv4地址,该第一数据流发送到TURN服务器,TURN服务器将第一数据流从IPv4协议转换为IPv6协议,并查询第二映射表项,获取第一数据流中作为目的地址的Relay_Bv4地址和端口号(例如表1中的Relay_Bv4,PortY)对应的HostB使用的Pub_Bv6地址和端口号(例如表1中的Pub_Bv6,PortB),根据该HostB使用的Pub_Bv6地址和端口号,将IPv6协议的第一数据流转发给HostB上的CP1客户端。
280,HostB上的CP1客户端基于Relay_Av6和端口号向HostA上的CP1客户端发送第二数据流时,由于Relay_Av6是TURN服务器的IPv6地址,该第二数据流发送到TURN服务器,TURN服务器将第二数据流从IPv6协议转换为IPv4协议,并查询第一映射表项,获取第二数据流中作为目的地址的Relay_Av6地址和端口号(例如表1中的Relay_Av6,PortX’)对应的HostA使用的Pub_Av4地址和端口号(例如表1中的Pub_Av4,PortA),根据该HostA使用的Pub_Av4地址和端口号,将IPv4协议的第二数据流转发给HostA上的CP1客户端。
其中,操作270与280不存在执行顺序限制,基于各自记载的相应触发条件触发执行。本实施例附图4仅提供其中一个示例。
对于HostA与HostB上CP2客户端之间的通信也可以采用类似图4所示的流程,只需开放与CP服务器与TURN服务器之间的接口,即可共用运营商TURN服务器的协议转换功能。
在具体应用中,为了减少不同地址族客户端之间的流量绕转,运营商部署可以部署多个覆盖区域不同的TURN服务器。根据本发明不同版本互联网协议客户端之间的通信方法另一个实施例,在此场景下,操作120中,CP服务器发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,可以从多个TURN服务器中选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器,然后作为TURN客户端向选择的TURN服务器发送映射请求。从而使得CP服务器可以选择合理的TURN服务器来提供不同地址族客户端之间的数据流量中转服务,以最大可能降低流量远程绕转的概率。
具体地,选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器可以通过如下方式实现:分别计算第二主机使用的IPv6地址与多个TURN服务器中每一个TURN服务器之间的距离,例如分别对第二主机使用的IPv6地址与多个TURN服务器中每一个TURN服务器地址进行异或(XOR)运算,来选择与第二主机使用的IPv6地址之间距离最小的TURN服务器。由于IPv6地址前缀可包含使用该IPv6地址的节点(例如终端或主机)所处的地理位置信息(如所在省或者区县)。IPv6地址与某个TURN服务器IPv6地址进行XOR运算的值越小,代表这两个地址的前缀相同位数越多,距离也就越近。
在实现本发明的过程中,发明人发现,IPv4地址空间小,无法编入更多的地址信息;而IPv6地址的分配更具规划性和地域特征,例如,对于IPv6地址来说,比较其地址的前几位即可确定使用这些IP地址的终端或主机是否位于同一片区域,但IPv4地址较难做到这点。本发明实施例以IPv6地址作为索引,计算其与不同TURN服务器之间的距离,选择距离小的那个TURN服务器作为真正的中继服务器,实现了对TURN服务器的有效选择,可以最大限度降低流量远程绕转。
图6为本发明不同版本互联网协议客户端之间的通信方法另一个应用实施例的通信架构示意图。其示出基于本发明上述实施例的选择方式选择TURN服务器后,不同地址族客户端之间数据流量就近被中继的路径示意。HostA、HostB、HostC(即:Host用户)分别使用IPv4、IPv6和IPv6地址,分别表示为Pub_Av4、Pub_Bv6和Pub_Cv6。参见图6,位于HostA、HostB、HostC上的CP1客户端启动后,各自向CP1服务器发送注册请求进行用户信息注册;
CP1服务器接收到HostA、HostB、HostC发送的注册请求后,发现用户A与用户B、用户C是好友,则先计算HostB、HostC使用的IPv6地址与TURN服务器A、TURN服务器B的IPv6地址间的距离,计算结果是HostA与HostB上CP1客户端之间通信使用TURN服务器A较好,HostA与HostC上CP1客户端之间通信使用TURN服务器B较好;
CP1服务器则以HostA与HostB使用的地址为索引,向TURN服务器A发起地址映射请求;以HostA与HostC使用的地址为索引,向TURN服务器B发起地址映射请求;
TURN服务器A分别向HostA与HostB分配中继地址与端口号并建立相应的映射表项,由CP1服务器分别发送给HostB与HostA上的CP1客户端;TURN服务器B分别向HostA与HostC分配中继地址与端口号并建立相应的映射表项,由CP1服务器分别发送给HostC与HostA上的CP1客户端;
后续HostA上的CP1客户端将以TURN服务器A为HostB分配的中继地址和端口号与HostB上的CP1客户端通信,流量经过TURN服务器A进行地址、协议转换后进行数据流量转发;HostA上的CP1客户端将以TURN服务器B为HostC分配的中继地址和端口号与HostC上的CP1客户端通信,流量经过TURN服务器B进行地址、协议转换后进行数据流量转发。
如下表2所示,为CP1服务器选择TURN服务器时的一个XOR运算结果示例。
表2
Pub_Bv6 | 距离(XOR) |
TURN服务器A | 64(A/B通信Realy) |
TURN服务器B | 128 |
Pub_Cv6 | 距离(XOR) |
TURN服务器A | 128(A/C通信Realy) |
TURN服务器B | 64 |
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图7为本发明不同版本互联网协议客户端之间的通信系统一个实施例的结构示意图。该实施例的通信系统可用于实现本发明上述各通信方法实施例的流程。如图7所示,其包括TURN服务器、作为TURN客户端的CP服务器、使用一个版本IP地址的第一主机和使用另一版本IP地址的第二主机,第一主机和第二主机上分别耦合设置有同一个CP的CP客户端。其中:
第一主机上的CP客户端,用于向CP服务器发送第一注册请求,该第一注册请求中包括第一用户的用户信息和第一主机使用的一个版本IP地址信息。
第二主机上的CP客户端,用于向CP服务器发送第二注册请求,该第二注册请求中包括第二用户的用户信息和第二主机使用的另一版本IP地址信息。
CP服务器,用于发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,作为TURN客户端向TURN服务器发送映射请求,该映射请求中包括第一注册请求中的一个版本IP地址信息和和第二注册请求中的另一版本IP地址信息;以及将TURN服务器返回的另一版本的中继地址作为第一主机的地址信息发送给第二主机上的CP客户端,将TURN服务器返回的一个版本的中继地址作为第二主机的地址信息发送给第一主机上的CP客户端。
TURN服务器,用于从自身配置的地址池中,向第一主机分配上述另一版本的中继地址,向第二主机分配上述一个版本的中继地址;在映射表中建立第一主机使用的一个版本IP地址、端口号和为其分配的另一版本的中继地址之间的第一映射表项,建立第二主机使用的另一版本IP地址、端口号和为其分配的一个版本的中继地址之间的第二映射表项,并向CP服务器返回分配的另一版本的中继地址和一个版本的中继地址,其中的中继地址包括中继IP地址和端口号;以及在接收到第一主机上的CP客户端基于上述一个版本的中继地址发送给第二主机上的CP客户端的第一数据流时,基于第二映射表项对第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端;在接收到第二主机上的CP客户端基于上述另一版本的中继地址发送给第一主机上的CP客户端的第二数据流时,基于第一映射表项对第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端。
在本发明上述不同版本互联网协议客户端之间的通信系统的一个具体示例中,上述一个版本IP地址具体为IPv4地址,相应地,上述一个版本的中继地址包括中继IPv4地址和端口号;上述另一版本IP地址具体为IPv6地址,相应地,上述另一版本的中继地址包括中继IPv6地址和端口号。
在本发明上述不同版本互联网协议客户端之间的通信系统的另一个具体示例中,TURN服务器基于第二映射表项对第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端时,具体将第一数据流从IPv4协议转换为IPv6协议,并查询第二映射表项,获取第一数据流中作为目的地址的中继IPv4地址和端口号对应的第二主机使用的IPv6地址和端口号,根据该第二主机使用的IPv6地址和端口号,将IPv6协议的第一数据流转发给第二主机上的CP客户端;基于第一映射表项对第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端时,具体将第二数据流从IPv6协议转换为IPv4协议,并查询第一映射表项,获取第二数据流中作为目的地址的中继IPv6地址和端口号对应的第一主机使用的IPv4地址和端口号,根据该第一主机使用的IPv4地址和端口号,将IPv4协议的第二数据流转发给第一主机上的CP客户端。
在本发明上述不同版本互联网协议客户端之间的通信系统的另一个实施例中,具体可以多个TURN服务器。相应地,该实施例中,CP服务器具体在发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,可以从多个TURN服务器中选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器,并作为TURN客户端向TURN服务器发送映射请求具体为:向选择的TURN服务器发送映射请求。
示例性地,CP服务器具体可以分别计算第二主机使用的IPv6地址与多个TURN服务器中每一个TURN服务器之间的距离,选择与第二主机使用的IPv6地址之间距离最小的TURN服务器,作为对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法、系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (11)
1.一种不同版本互联网协议客户端之间的通信方法,其特征在于,包括:
第一主机上的内容提供商CP客户端向CP服务器发送第一注册请求,该第一注册请求中包括第一用户的用户信息和第一主机使用的一个版本互联网协议IP地址信息;第二主机上的CP客户端向所述CP服务器发送第二注册请求,该第二注册请求中包括第二用户的用户信息和第二主机使用的另一版本IP地址信息;第一主机和第二主机上的CP客户端属于同一个CP的CP客户端;
CP服务器发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,作为通过中继网络地址翻译实现的穿透TURN客户端向TURN服务器发送映射请求,该映射请求中包括所述一个版本IP地址信息和所述另一版本IP地址信息;
TURN服务器从自身配置的地址池中,向所述第一主机分配另一版本的中继地址,向所述第二主机分配一个版本的中继地址;
TURN服务器在映射表中建立第一主机使用的一个版本IP地址、端口号和所述另一版本的中继地址之间的第一映射表项,建立第二主机使用的另一版本IP地址、端口号和所述一个版本的中继地址之间的第二映射表项,并向所述CP服务器返回所述另一版本的中继地址和所述一个版本的中继地址;所述中继地址包括中继IP地址和端口号;
CP服务器将所述另一版本的中继地址作为第一主机的地址信息发送给第二主机上的CP客户端,将所述一个版本的中继地址作为第二主机的地址信息发送给第一主机上的CP客户端;
TURN服务器接收到第一主机上的CP客户端基于所述一个版本的中继地址发送给第二主机上的CP客户端的第一数据流时,基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端;接收到第二主机上的CP客户端基于所述另一版本的中继地址发送给第一主机上的CP客户端的第二数据流时,基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端。
2.根据权利要求1所述的方法,其特征在于,所述一个版本IP地址为第四版本互联网协议IPv4地址,所述一个版本的中继地址包括中继IPv4地址和端口号;
所述另一版本IP地址为第六版本互联网协议IPv6地址,所述另一版本的中继地址包括中继IPv6地址和端口号。
3.根据权利要求2所述的方法,其特征在于,基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端包括:
将所述第一数据流从IPv4协议转换为IPv6协议,并查询第二映射表项,获取第一数据流中作为目的地址的中继IPv4地址和端口号对应的第二主机使用的IPv6地址和端口号,根据该第二主机使用的IPv6地址和端口号,将IPv6协议的第一数据流转发给第二主机上的CP客户端;
基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端包括:
将所述第二数据流从IPv6协议转换为IPv4协议,并查询第一映射表项,获取第二数据流中作为目的地址的中继IPv6地址和端口号对应的第一主机使用的IPv4地址和端口号,根据该第一主机使用的IPv4地址和端口号,将IPv4协议的第二数据流转发给第一主机上的CP客户端。
4.根据权利要求2或3所述的方法,其特征在于,通信网络中包括多个TURN服务器时,还包括:
CP服务器发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,从多个TURN服务器中选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器;
所述作为TURN客户端向TURN服务器发送映射请求具体为:向选择的TURN服务器发送映射请求。
5.根据权利要求4所述的方法,其特征在于,选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器包括:
分别计算第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器之间的距离,选择与第二主机使用的IPv6地址之间距离最小的TURN服务器。
6.根据权利要求4所述的方法,其特征在于,分别计算第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器之间的距离包括:
分别对第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器地址进行异或XOR运算。
7.一种不同版本互联网协议客户端之间的通信系统,其特征在于,包括TURN服务器、作为TURN客户端的CP服务器、使用一个版本IP地址的第一主机和使用另一版本IP地址的第二主机,第一主机和第二主机上分别耦合设置有同一个CP的CP客户端;
所述第一主机上的CP客户端,用于向CP服务器发送第一注册请求,该第一注册请求中包括第一用户的用户信息和第一主机使用的一个版本IP地址信息;
所述第二主机上的CP客户端,用于向所述CP服务器发送第二注册请求,该第二注册请求中包括第二用户的用户信息和第二主机使用的另一版本IP地址信息;
所述CP服务器,用于发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,作为TURN客户端向TURN服务器发送映射请求,该映射请求中包括所述一个版本IP地址信息和所述另一版本IP地址信息;以及将TURN服务器返回的另一版本的中继地址作为第一主机的地址信息发送给第二主机上的CP客户端,将TURN服务器返回的一个版本的中继地址作为第二主机的地址信息发送给第一主机上的CP客户端;
所述TURN服务器,用于从自身配置的地址池中,向所述第一主机分配另一版本的中继地址,向所述第二主机分配一个版本的中继地址;在映射表中建立第一主机使用的一个版本IP地址、端口号和所述另一版本的中继地址之间的第一映射表项,建立第二主机使用的另一版本IP地址、端口号和所述一个版本的中继地址之间的第二映射表项,并向所述CP服务器返回所述另一版本的中继地址和所述一个版本的中继地址;所述中继地址包括中继IP地址和端口号;以及在接收到第一主机上的CP客户端基于所述一个版本的中继地址发送给第二主机上的CP客户端的第一数据流时,基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端;在接收到第二主机上的CP客户端基于所述另一版本的中继地址发送给第一主机上的CP客户端的第二数据流时,基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端。
8.根据权利要求7所述的系统,其特征在于,所述一个版本IP地址为IPv4地址,所述一个版本的中继地址包括中继IPv4地址和端口号;
所述另一版本IP地址为IPv6地址,所述另一版本的中继地址包括中继IPv6地址和端口号。
9.根据权利要求8所述的系统,其特征在于,所述TURN服务器基于所述第二映射表项对所述第一数据流进行地址和协议的转换后转发给第二主机上的CP客户端时,具体将所述第一数据流从IPv4协议转换为IPv6协议,并查询第二映射表项,获取第一数据流中作为目的地址的中继IPv4地址和端口号对应的第二主机使用的IPv6地址和端口号,根据该第二主机使用的IPv6地址和端口号,将IPv6协议的第一数据流转发给第二主机上的CP客户端;基于所述第一映射表项对所述第二数据流进行地址和协议的转换后转发给第一主机上的CP客户端时,具体将所述第二数据流从IPv6协议转换为IPv4协议,并查询第一映射表项,获取第二数据流中作为目的地址的中继IPv6地址和端口号对应的第一主机使用的IPv4地址和端口号,根据该第一主机使用的IPv4地址和端口号,将IPv4协议的第二数据流转发给第一主机上的CP客户端。
10.根据权利要求8或9所述的系统,其特征在于,所述通信系统包括多个TURN服务器;
所述CP服务器,具体在发现第一用户与第二用户为好友关系、但第一主机与第二主机使用的IP地址属于不同的地址族时,从多个TURN服务器中选择一个对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器,并作为TURN客户端向TURN服务器发送映射请求具体为:向选择的TURN服务器发送映射请求。
11.根据权利要求10所述的系统,其特征在于,所述CP服务器具体分别计算第二主机使用的IPv6地址与所述多个TURN服务器中每一个TURN服务器之间的距离,选择与第二主机使用的IPv6地址之间距离最小的TURN服务器,作为对第一主机与第二主机之间数据流转发路径最短的一个TURN服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410277703.9A CN105208138B (zh) | 2014-06-20 | 2014-06-20 | 不同版本互联网协议客户端之间的通信方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410277703.9A CN105208138B (zh) | 2014-06-20 | 2014-06-20 | 不同版本互联网协议客户端之间的通信方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105208138A true CN105208138A (zh) | 2015-12-30 |
CN105208138B CN105208138B (zh) | 2018-05-08 |
Family
ID=54955560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410277703.9A Active CN105208138B (zh) | 2014-06-20 | 2014-06-20 | 不同版本互联网协议客户端之间的通信方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105208138B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109510882A (zh) * | 2018-11-19 | 2019-03-22 | 网易(杭州)网络有限公司 | 游戏客户端之间的通信方法、装置、存储介质和电子装置 |
CN112866439A (zh) * | 2021-04-02 | 2021-05-28 | 中国工商银行股份有限公司 | 数据处理方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7277453B2 (en) * | 2003-05-30 | 2007-10-02 | Motorola, Inc. | Inter private network communications between IPv4 hosts using IPv6 |
CN101087296A (zh) * | 2006-06-08 | 2007-12-12 | 上海亿人通信终端有限公司 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
CN101119382A (zh) * | 2007-09-06 | 2008-02-06 | 中兴通讯股份有限公司 | IPv4网络与IPv6网络互相通信的方法及通信网元系统 |
CN102739810A (zh) * | 2011-04-07 | 2012-10-17 | 中国电信股份有限公司 | IPv4CP/SP和IPv6网络互通的方法与设备 |
CN103856408A (zh) * | 2014-02-17 | 2014-06-11 | 中国科学院计算机网络信息中心 | 一种基于DNS的IPv6和IPv4互通信方法 |
-
2014
- 2014-06-20 CN CN201410277703.9A patent/CN105208138B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7277453B2 (en) * | 2003-05-30 | 2007-10-02 | Motorola, Inc. | Inter private network communications between IPv4 hosts using IPv6 |
CN101087296A (zh) * | 2006-06-08 | 2007-12-12 | 上海亿人通信终端有限公司 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
CN101119382A (zh) * | 2007-09-06 | 2008-02-06 | 中兴通讯股份有限公司 | IPv4网络与IPv6网络互相通信的方法及通信网元系统 |
CN102739810A (zh) * | 2011-04-07 | 2012-10-17 | 中国电信股份有限公司 | IPv4CP/SP和IPv6网络互通的方法与设备 |
CN103856408A (zh) * | 2014-02-17 | 2014-06-11 | 中国科学院计算机网络信息中心 | 一种基于DNS的IPv6和IPv4互通信方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109510882A (zh) * | 2018-11-19 | 2019-03-22 | 网易(杭州)网络有限公司 | 游戏客户端之间的通信方法、装置、存储介质和电子装置 |
CN109510882B (zh) * | 2018-11-19 | 2022-05-03 | 网易(杭州)网络有限公司 | 游戏客户端之间的通信方法、装置、存储介质和电子装置 |
CN112866439A (zh) * | 2021-04-02 | 2021-05-28 | 中国工商银行股份有限公司 | 数据处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105208138B (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8509244B2 (en) | Method and apparatus for providing host node awareness for multiple NAT64 environments | |
CN103581299B (zh) | 服务调度方法、装置及系统 | |
CN102246465B (zh) | 提供对远程服务的本地安全网络访问 | |
US9438679B2 (en) | Method, apparatus, name server and system for establishing FCOE communication connection | |
US20130024553A1 (en) | Location independent dynamic IP address assignment | |
US11778068B2 (en) | Systems and methods for processing requests for content of a content distribution network | |
CN102025630A (zh) | 负载均衡方法及负载均衡系统 | |
CN102790813B (zh) | 基于IPv6网络的通信方法和系统以及终端设备 | |
CN109151009B (zh) | 一种基于mec的cdn节点分配方法和系统 | |
CN103841028A (zh) | 一种报文转发方法及设备 | |
CN104618243B (zh) | 路由方法、装置及系统、网关调度方法及装置 | |
CN102355417A (zh) | 一种数据中心二层互联方法和装置 | |
CN105227602A (zh) | 一种负载均衡的方法、客户端、注册服务器和系统 | |
CN103095732A (zh) | 信息推送系统和信息推送方法 | |
US11463401B2 (en) | Systems and methods for processing requests for content of a content distribution network | |
CN101383772A (zh) | 一种自动发现并建立mac路由信息表的方法及装置 | |
CN105657078B (zh) | 一种数据传输方法、装置及多层网络管理器 | |
CN105208138A (zh) | 不同版本互联网协议客户端之间的通信方法和系统 | |
CN105227334A (zh) | 一种Fabric网络拓扑发现方法和装置 | |
CN102984697A (zh) | 基于移动终端的ip通信方法、设备和系统 | |
CN103634844A (zh) | 分布式多端口dhcp中继的实现方法及系统 | |
US9860171B2 (en) | Large scale message routing in a distributed network | |
US9763135B1 (en) | Load balancing with mobile resources | |
CN105610924A (zh) | 一种云桌面多节点连接的方法和装置 | |
CN106209464A (zh) | 终端的发现方法、终端及其管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |