一种链路建立的方法及装置与流程

文档序号:16631151发布日期:2019-01-16 06:35阅读:177来源:国知局
本发明涉及互联网
技术领域
:,尤其涉及一种链路建立的方法及装置。
背景技术
::随着互联网技术的快速发展,各类即时通信工具得到了广泛应用,并且在越来越多的业务场景中起到了不可替代的作用。在用户登录即时通信工具后,客户端会和服务端保持socket长连接,发送并接受即时消息。然而公网环境是错综复杂的,tcp(transmissioncontrolprotocol,传输控制协议)在公网环境中传输会遇到各种问题,比如:在网络传输过程中,由于dns(domainnamesystem,域名系统)被劫持、篡改、攻击、网络波动等情况,经常会发生tcp丢包,导致建连失败,最终影响到用户的正常使用,比如:在用户使用移动通信工具登录在线购物平台后,使用客户端内置的即时通信工具时,若经常出现建连失败,则会严重影响到用户和商户之间的议价、下单等业务流程,从而影响在线购物平台的销售量。技术实现要素:本发明的实施例提供一种链路建立的方法及装置,能够缓减由于建连失败导致用户无法正常使用的问题。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,本发明的实施例提供的方法,包括:当客户端设备通过第一寻址请求向域名系统(dns)寻址失败时,向所述域名系统发送第二寻址请求,所述第一寻址请求指向源站的原始域名,所述第二寻址请求指向所述源站的备用域名;当所述客户端设备通过第二寻址请求向域名系统(dns)寻址失败时,向所述源站的ip地址发送心跳包进行心跳测试;通过所述源站的ip地址中的心跳测试正常的ip地址建立socket连接,并将所建立的socket连接存储至所述客户端设备的缓存中。结合第一方面,在第一方面的第一种可能的实现方式中,所述通过所述源站的ip地址建立socket连接包括:确定所述源站的ip地址中延时最低的ip地址;通过所述延时最低的ip地址建立socket连接。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:当通过所述延时最低的ip地址建立socket连接失败时,向所述源站的ip地址中除了所述延时最低的ip地址以外的ip地址发送socket建接请求。结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,还包括:在将所建立的socket连接存储至所述客户端设备的缓存后,每隔第一预设周期,向所述源站的ip地址发送心跳包进行心跳测试,并统计所述源站的各个ip地址的丢包率;根据所述源站的各个ip地址的丢包率,选择丢包率最低的ip地址重新建立socket连接。结合第一方面,在第一方面的第四种可能的实现方式中,还包括:所述客户端设备在向域名系统发送寻址请求后,检测是否出现异常值;若出现异常值,则判定寻址失败。第二方面,本发明的实施例提供的装置,包括:域名补偿模块,用于当客户端设备通过第一寻址请求向域名系统(dns)寻址失败时,向所述域名系统发送第二寻址请求,所述第一寻址请求指向源站的原始域名,所述第二寻址请求指向所述源站的备用域名;地址补偿模块,用于当所述客户端设备通过第二寻址请求向域名系统(dns)寻址失败时,向所述源站的ip地址发送心跳包进行心跳测试;链接模块,用于通过所述源站的ip地址中的心跳测试正常的ip地址建立socket连接,并将所建立的socket连接存储至所述客户端设备的缓存中。结合第二方面,在第二方面的第一种可能的实现方式中,所述链接模块,具体用于确定所述源站的ip地址中延时最低的ip地址;并通过所述延时最低的ip地址建立socket连接。结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述链接模块,还用于:当通过所述延时最低的ip地址建立socket连接失败时,向所述源站的ip地址中除了所述延时最低的ip地址以外的ip地址发送socket建接请求。结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,还包括:链接检测模块,用于在将所建立的socket连接存储至所述客户端设备的缓存后,每隔第一预设周期,向所述源站的ip地址发送心跳包进行心跳测试,并统计所述源站的各个ip地址的丢包率;并根据所述源站的各个ip地址的丢包率;所述链接模块,还用于:选择丢包率最低的ip地址重新建立socket连接。结合第二方面,在第二方面的第四种可能的实现方式中,还包括:异常检测模块,用于在所述客户端设备向域名系统发送寻址请求后,检测是否出现异常值;若出现异常值,则判定寻址失败。本发明实施例提供的链路建立的方法及装置,通过在多端口的基础上建立了多条通信线路。当一条通信线路建连失败时,可以在多个域名和源站ip地址之间灵活切换,从而规避了失败的通信线路并实现了建连过程。相对于现有技术中,由于dns(domainnamesystem,域名系统)被劫持、篡改、攻击、网络波动等情况,发生tcp丢包而导致建连失败,以至于用户无法正常使用,本发明实施例提供的方案通过在多个域名和源站ip地址之间灵活切换,从而缓减了用户无法正常使用的问题。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本发明实施例提供的系统架构示意图;图2为本发明实施例提供的方法流程示意图;图3为、图4为本发明实施例提供的具体执行流程的实例的示意图;图5为本发明实施例提供的测试结果示意图;图6、图7、图8为本发明实施例提供的装置结构示意图。具体实施方式为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本
技术领域
:技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本
技术领域
:技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。本实施例中的方法流程,具体可以在一种如图1所示的系统上执行,该系统包括:客户端设备和服务端设备。其中,服务端设备可以在多端口的基础上建立多条通信线路,具体采用现有的tcp协议进行接口切换,例如:服务端设备可以提供至少3条线路:通过域名的传输接口、通过备用域名的传输接口和通过源站的ip的传输接口。本实施例中所揭示的服务端设备,具体可以是服务器、工作站、超级计算机等设备,或者是由多个服务器组成的一种用于数据处理的服务器集群系统。本实施例中所揭示的客户端设备具体可以实做成单独一台装置,或整合于各种不同的媒体数据播放装置中,诸如机顶盒、移动电话、平板电脑(tabletpersonalcomputer)、膝上型电脑(laptopcomputer)、多媒体播放器、数字摄影机、个人数字助理(personaldigitalassistant,简称pda)、移动上网装置(mobileinternetdevice,mid)或可穿戴式设备(wearabledevice)等。本发明实施例提供一种链路建立的方法,如图2所示,包括:s1、当客户端设备通过第一寻址请求向域名系统(dns)寻址失败时,向所述域名系统发送第二寻址请求。其中,所述第一寻址请求指向源站的原始域名,所述第二寻址请求指向所述源站的备用域名。其中,源站的域名(包括了原始域名和至少一个备用域名),可以预先注册申请,并封装在客户端中,再将客户端在线发布。若源站的域名发生改变,可以通过客户端升级等手段更新封装在客户端中的域名。s2、当所述客户端设备通过第二寻址请求向域名系统(dns)寻址失败时,向所述源站的ip地址发送心跳包进行心跳测试。s3、通过所述源站的ip地址中的心跳测试正常的ip地址建立socket连接,并将所建立的socket连接存储至所述客户端设备的缓存中。其中,客户端设备可以通过基于tcp(transmissioncontrolprotocol传输控制协议)的6700端口向dns寻址和建连,和通过6700端口进行ip地址的心跳测试和建连;当6700端口堵塞或者无法正常使用时,客户端设备切换至80端口继续执行向dns寻址、建连,以及ip地址的心跳测试和建连。本发明实施例提供的链路建立的方法,通过在多端口的基础上建立了多条通信线路。当一条通信线路建连失败时,可以在多个域名和源站ip地址之间灵活切换,从而规避了失败的通信线路并实现了建连过程。相对于现有技术中,由于dns(domainnamesystem,域名系统)被劫持、篡改、攻击、网络波动等情况,发生tcp丢包而导致建连失败,以至于用户无法正常使用,本发明实施例提供的方案通过在多个域名和源站ip地址之间灵活切换,从而缓减了用户无法正常使用的问题。在本实施例中,还包括:所述客户端设备在向域名系统发送寻址请求后,检测是否出现异常值。若出现异常值,则判定寻址失败。其中,为了尽量避免复杂网络环境对通信的影响,考虑网络出错的各种可能性,针对不同的异常情况做不同的补偿处理。以保证只要有一条通路,用户就能和服务端建立连接,完成通信。具体可以采用基于java的tcp异常检测方案,当检测到表一中所述的异常事件时,生成对应异常值。客户端捕捉到该异常值字段,则触发上述的域名/ip地址的切换过程(比如s1-s3)。例如:本实施例中设定的tcp异常值可以表示为:表一序号异常值异常定义1connectionrefusederror连接被拒绝2remotehostclosederror远程主机被关闭3hostnotfounderror主机不存在4socketaccesserrorsocket访问错误5sockettimeouterrorsocket超时错误6networkerror网络异常在本实施例中,客户端设备通过所述源站的ip地址建立socket连接的具体方式,包括:确定所述源站的ip地址中延时最低的ip地址。并通过所述延时最低的ip地址建立socket连接。例如:客户端设备可以通过ping的方式去测试所有的备选ip中延时最小的ip,并选择延时最小的ip做建立连接。并在成功建立连接后,将本次连接记入cache,以便于后续用户直接接入。进一步的,当通过所述延时最低的ip地址建立socket连接失败时,向所述源站的ip地址中除了所述延时最低的ip地址以外的ip地址发送socket建接请求。例如:如图3所示的,客户端设备向dns发送第一寻址请求,请求dns解析寻址原始域名;若dns解析寻址原始域名成功,则客户端设备基于原始域名建立socket连接;若dns解析寻址原始域名失败,或者客户端设备基于原始域名建立socket连接失败,则客户端设备向dns发送第二寻址请求,请求dns解析寻址备用域名;若dns解析寻址备用域名成功,则客户端设备基于备用域名建立socket连接;若dns解析寻址备用域名失败,或者客户端设备基于备用域名建立socket连接失败,则客户端开始使用源站ip建立连接;在客户端使用源站ip建立连接的过程中,首先通过心跳请求判断最优的ip(ping延时最低的ip),再通过最优的ip建立socket连接;若通过最优的ip建立socket连接失败,则再采用源站的其它的ip建立socket连接;若通过源站的所有ip都没有成功建立socket连接,则判定建连失败,没有可用的网络通路,此时客户端设备可以在显示模块(比如屏幕)上显示建连失败的提示信息。其中,在如图3所示的过程中,一旦建立socket连接成功,则将所建立的socket连接存储至cache中,并缓存socket连接所用的ip以便于复用。由此可见,若成功建立socket连接,最多进行了2次域名的连接尝试,3次ip的连接尝试。也规避dns了被劫持的情况下建立连接的风险。进一步的,在本实施例中,还包括:在将所建立的socket连接存储至所述客户端设备的缓存后,每隔第一预设周期,向所述源站的ip地址发送心跳包进行心跳测试,并统计所述源站的各个ip地址的丢包率。根据所述源站的各个ip地址的丢包率,选择丢包率最低的ip地址重新建立socket连接。例如:如图4所示的,在socket连接建立且记入cache后,客户端设备可以周期性地向服务端设备上所建立的socket连接的端口发送心跳包,实时监听连接状态,以防止本来可用的链路,因为发生异常而导致通信失败。从而检测本可用socket连接的状态,若丢包情况严重时,再次进行选择。本发明实施例提供的链路建立的方法,通过在多端口的基础上建立了多条通信线路。当一条通信线路建连失败时,可以在多个域名和源站ip地址之间灵活切换,从而规避了失败的通信线路并实现了建连过程。相对于现有技术中,由于dns(domainnamesystem,域名系统)被劫持、篡改、攻击、网络波动等情况,发生tcp丢包而导致建连失败,以至于用户无法正常使用,本发明实施例提供的方案通过在多个域名和源站ip地址之间灵活切换,从而缓减了用户无法正常使用的问题。在本实施例的优选方案中,可以采用至少3条线路,即:通过域名的传输、通过备用域名的传输,以及通过ip的传输,其中,源站提供多个域名多个ip。具体的,若采用的测试环境基于c/s架构,客户端包括安卓、ios、pc版客户端,服务端使用ctrix硬件负载均衡设备,其中,包括了两组ctrix,每组提供3个vip。客户端通过pingicmp包进行心跳保活,频率1s1次。则可以得到如图5所示的测试结果,丢包率接近0%,客户端进行建连的延时降低50%以上。从而有效缓减了由于建连失败导致的用户无法正常使用的问题。本发明实施例还提供一种链路建立的装置,如图6所示的,包括:域名补偿模块,用于当客户端设备通过第一寻址请求向域名系统(dns)寻址失败时,向所述域名系统发送第二寻址请求,所述第一寻址请求指向源站的原始域名,所述第二寻址请求指向所述源站的备用域名。地址补偿模块,用于当所述客户端设备通过第二寻址请求向域名系统(dns)寻址失败时,向所述源站的ip地址发送心跳包进行心跳测试。链接模块,用于通过所述源站的ip地址中的心跳测试正常的ip地址建立socket连接,并将所建立的socket连接存储至所述客户端设备的缓存中。其中,所述链接模块,具体用于确定所述源站的ip地址中延时最低的ip地址。并通过所述延时最低的ip地址建立socket连接。所述链接模块,还用于:当通过所述延时最低的ip地址建立socket连接失败时,向所述源站的ip地址中除了所述延时最低的ip地址以外的ip地址发送socket建接请求。进一步的,如图7所示,还包括:链接检测模块,用于在将所建立的socket连接存储至所述客户端设备的缓存后,每隔第一预设周期,向所述源站的ip地址发送心跳包进行心跳测试,并统计所述源站的各个ip地址的丢包率。并根据所述源站的各个ip地址的丢包率。其中,所述链接模块,还用于:选择丢包率最低的ip地址重新建立socket连接。进一步的,如图8所示,还包括:异常检测模块,用于在所述客户端设备向域名系统发送寻址请求后,检测是否出现异常值。若出现异常值,则判定寻址失败。本发明实施例提供的链路建立的装置,通过在多端口的基础上建立了多条通信线路。当一条通信线路建连失败时,可以在多个域名和源站ip地址之间灵活切换,从而规避了失败的通信线路并实现了建连过程。相对于现有技术中,由于dns(domainnamesystem,域名系统)被劫持、篡改、攻击、网络波动等情况,发生tcp丢包而导致建连失败,以至于用户无法正常使用,本发明实施例提供的方案通过在多个域名和源站ip地址之间灵活切换,从而缓减了用户无法正常使用的问题。在本实施例的优选方案中,可以采用至少3条线路,即:通过域名的传输、通过备用域名的传输,以及通过ip的传输,其中,源站提供多个域名多个ip。具体的,若采用的测试环境基于c/s架构,客户端包括安卓、ios、pc版客户端,服务端使用ctrix硬件负载均衡设备,其中,包括了两组ctrix,每组提供3个vip。客户端通过pingicmp包进行心跳保活,频率1s1次。则可以得到如图5所示的测试结果,丢包率接近0%,客户端进行建连的延时降低50%以上。从而有效缓减了由于建连失败导致的用户无法正常使用的问题。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1