掌桥专利:专业的专利平台
掌桥专利
首页

IP地址管理方法、装置、存储介质及电子设备

文献发布时间:2023-06-19 18:35:48


IP地址管理方法、装置、存储介质及电子设备

技术领域

本发明涉及网络通信技术领域,尤其涉及一种IP地址管理方法、装置、存储介质及电子设备。

背景技术

虽然互联网上的节点都可以用IP地址作为唯一标识,并通过IP地址进行访问,但32位的IP地址太长、太难记,因此人们发明了域名,域名可将一个IP地址关联到一组有意义的字符上去,DNS(Domain Name System,域名系统)作为将域名和IP地址相互映射的一个分布式数据库,能够将域名对应到真实的计算机能够识别的IP地址,以便计算机能够进一步通信,传递网址和内容等,通常有两种DNS的解析方式,一是通过LocalDNS进行解析,就是指通过ISP(Internet Service Provider,互联网服务提供商)提供的域名解析服务,基于UDP协议与DNS服务器交互进行解析,二是通过HttpDNS进行解析,就是指基于HTTP协议与DNS服务器交互进行解析。

目前,在进行域名请求时,每次都会通过DNS解析得到域名对应的至少一个IP地址,再逐一进行针对前述IP地址的连接尝试,直到获得某个可用的IP地址访问目标服务器,进而得到请求结果,现有技术为访问到目标服务器时,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题。

发明内容

鉴于上述问题,本发明提供了一种IP地址管理方法及相关设备,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题。

为解决上述技术问题,第一方面,本发明提供了一种IP地址管理方法,该方法包括:

通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;

通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息;

根据连接信息,将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

优选的,通过DNS解析目标域名,以得到与目标域名对应的IP地址列表的步骤,包括:

获取当前网络支持的互联网通信协议信息,其中,互联网通信协议信息为第一协议信息或第二协议信息,第一协议信息为IPv4,第二协议信息为IPv4和IPv6;

通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表。

优选的,通过DNS解析目标域名,以得到与目标域名对应的IP地址列表的步骤,包括:

同时通过HttpDNS和LocalDNS解析目标域名,以得到与目标域名对应的IP地址列表。

优选的,连接信息通过自定义结构体存储。

优选的,根据连接信息,将IP地址列表中的IP地址进行排序的步骤,包括:

根据连接信息,使用匿名函数将IP地址列表中的IP地址进行排序。

优选的,通过IP地址列表中的IP地址连接服务器的步骤,包括:

获取第一时间,其中,第一时间为连接起始时刻的时间;

通过IP地址列表中的IP地址连接服务器;

获取第二时间,其中,第二时间为连接结束时刻的时间;

通过第一时间和第二时间,计算得到与IP地址对应的连接耗时信息。

优选的,通过IP地址列表中的IP地址连接服务器的步骤,包括:

通过folly组件创建网络套接字,其中,folly组件为C++开源组件,网络套接字用于连接服务器,网络套接字在连接结束后被folly组件施放;

通过IP地址列表中的IP地址和网络套接字连接服务器。

为了实现上述目的,根据本发明的第二方面,提供了一种IP地址管理装置,包括:

解析单元,用于通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;

连接单元,用于通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息;

排序单元,用于根据连接信息,将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

为了实现上述目的,根据本发明的第三方面,提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述第一方面中任一项的IP地址管理方法的步骤。

为了实现上述目的,根据本发明的第四方面,提供了一种电子设备,电子设备包括至少一个处理器、以及与处理器连接的至少一个存储器;其中,处理器用于调用存储器中的程序指令,执行如第一方面中任一项的IP地址管理方法的步骤。

借由上述技术方案,本申请提供了一种IP地址管理方法、装置、存储介质及电子设备,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题。本申请通过通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息;根据连接信息,将IP地址列表中的IP地址进行排序,实现IP地址管理。上述方案能够实现提高对目标域名进行请求时的请求结果的返回速度的技术效果,进而解决了目前在进行域名请求时,现有技术中存在的域名请求的响应速度慢的问题。

附图说明

通过阅读下文示例性实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出示例性实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本申请实施例一提供的一种IP地址管理方法的示意性流程图;

图2为本申请实施例二提供的一种IP地址管理方法的示意性流程图;

图3为本申请实施例三提供的一种IP地址管理方法的示意性流程图;

图4为本申请实施例四提供的一种IP地址管理方法的示意性流程图;

图5为本申请实施例五提供的一种IP地址管理装置的示意性结构框图;

图6为本申请实施例七提供的一种电子设备的示意性结构框图。

具体实施方式

下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。

实施例一

为了解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题,本申请实施例一提供了一种IP地址管理方法,如图1所示,该方法可以包括:

步骤101、通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;

具体的,DNS解析的方式可以是HttpDNS和/或LocalDNS,本申请实施例对此不作具体限定;目标域名可以是预先设定的重点域名,也即可以是经常访问或必然会访问的域名,重点域名可以根据使用者或本领域技术人员的需要任意设定,本申请实施例对此不作具体限定;目标域名也可以是发出域名请求时,与该域名请求相对应的域名,该域名为任意域名。

需要说明的是,目标域名为预先设定的重点域名时,本申请实施例可以提高对重点域名请求的成功率和对重点域名请求的响应速度;目标域名为发出域名请求时的任意域名时,本申请实施例可以提高下次再对该域名进行域名请求的成功率和响应速度;通过步骤101可以得到与目标域名相对应的IP地址列表,以便后续对该IP地址列表中的IP地址进行管理。

步骤102、通过IP地址列表中的IP地址连接服务器,以得到连接信息;

其中,连接信息包括IP地址和连接耗时信息。

具体的,遍历IP地址列表,逐一取用其中的IP地址连接服务器,记录每次连接的连接耗时信息,将IP地址和使用该IP地址连接服务器的连接耗时信息作为连接信息进行存储;对于连接不上服务器的IP地址直接将其舍弃。

需要说明的是,通过步骤102可以得到IP地址列表中每个可用的IP地址的连接耗时信息,以便后续根据连接耗时信息对该IP地址列表中的IP地址进行排序管理。

步骤103、根据连接信息,将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

具体的,按照连接耗时从短到长的顺序,将连接耗时所对应的IP地址从前到后排序,以得到目标IP地址列表,也即,目标IP地址列表中的IP地址是其连接耗时从短到长顺序排列的。

需要说明的是,通过步骤103可以使,针对目标域名进行请求时,顺序选取连接耗时较短的IP地址,即连接速度较快的IP地址,访问服务器,以提高对目标域名进行请求时的请求结果的返回速度,进而提高对目标域名进行域名请求时的响应速度。

借由上述技术方案,本申请实施例一提供了一种IP地址管理方法,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题。本申请实施例一通过通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息;根据连接信息,将IP地址列表中的IP地址进行排序,实现IP地址管理。上述方案能够实现提高对目标域名进行请求时的请求结果的返回速度的技术效果,进而解决了目前在进行域名请求时,现有技术中存在的域名请求的响应速度慢的问题。

实施例二

为了使本领域技术人员能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员,本申请实施例二在上述实施例一的基础上,对本申请限定的一种IP地址管理方法做出了进一步的说明,如图2所示,该方法包括:

步骤201、获取当前网络支持的互联网通信协议信息;

其中,互联网通信协议信息为第一协议信息或第二协议信息,第一协议信息为IPv4(Internet Protocol version 4,互联网通信协议第四版),第二协议信息为IPv4和IPv6(Internet Protocol version 6,互联网通信协议第六版)。

具体的,当前网络支持的互联网通信协议信息为第一协议信息时,表明当前网络只支持IPv4;当前网络支持的互联网通信协议信息为第二协议信息时,表明当前网络同时支持IPv4和IPv6。

需要说明的是,通过步骤201可以得到当前网络所支持的互联网通信协议版本,以便后续根据当前网络的互联网通信协议信息进行IP地址的解析。

步骤202、通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表。

具体的,DNS解析的方式可以是HttpDNS和/或LocalDNS,本申请实施例对此不作具体限定。

需要说明的是,在通过DNS解析目标域名时,对于IPv4的IP地址和IPv6的IP地址同时解析的耗时,较于只解析IPv4或IPv6的IP地址的耗时要长一倍;对于LocalDNS来说,同时解析IPv4的IP地址和IPv6的IP地址,如果对于其中的IPv4或IPv6的IP地址无法解析,则会导致无法获取全部解析结果的情况;在当前网络只支持IPv4的情况下,如果进行针对IPv6的IP地址的解析,则会消耗域名解析的时间,也提高了解析失败的可能性,通过步骤202可以避免上述缺陷的发生。

优选的,步骤202可以包括:同时通过HttpDNS和LocalDNS解析目标域名,以得到与目标域名对应的IP地址列表。

具体的,基于前述互联网通信协议信息,同时通过HttpDNS和LocalDNS解析目标域名的IP地址列表,得到较快返回的与目标域名和互联网通信协议信息对应的IP地址列表;调用HttpDNS发起域名请求时,对解析出的IP地址列表进行缓存,缓存结果在TTL(Time ToLive,生存时间值)的超时时间内都可以使用,超过超时时间则需要重新请求。

需要说明的是,通过上述优选的步骤,可以避免消耗过多的域名解析的时间,并避免解析失败的发生,能够尽快得到与目标域名和互联网通信协议信息对应的IP地址列表。

优选的,步骤202可以包括:先通过HttpDNS解析目标域名,HttpDNS解析失败时,使用LocalDNS解析目标域名,以得到与目标域名对应的IP地址列表。

具体的,HttpDNS解析失败的情况可以由IP地址列表的返回时间确定,如果IP地址列表在预设时间内没有返回,则使用LocalDNS解析目标域名。

需要说明的是,通过HttpDNS进行域名解析可以防止域名劫持的发生;通过HttpDNS进行域名解析可以防止HttpDNS故障时无法得到IP地址列表的情况的发生;通过上述优选的步骤,可以尽量防止域名劫持的情况发生,并且同时确保可以在HttpDNS无法使用时,也能够获取目标域名对应的IP地址列表。

步骤203、通过IP地址列表中的IP地址连接服务器,以得到连接信息;

其中,连接信息包括IP地址和连接耗时信息。

需要说明的是,通过步骤203可以得到IP地址列表中每个可用的IP地址的连接耗时信息,以便后续根据连接耗时信息对该IP地址列表中的IP地址进行排序管理。

步骤204、根据连接信息,将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

需要说明的是,通过步骤204可以使,针对目标域名进行请求时,顺序选取连接耗时较短的IP地址,即连接速度较快的IP地址,访问服务器,以提高对目标域名进行请求时的请求结果的返回速度,进而提高对目标域名进行域名请求时的响应速度。

借由上述技术方案,本申请实施例二提供了一种IP地址管理方法,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题,并进一步提高了得到IP地址列表的速度。本申请实施例二通过获取当前网络支持的互联网通信协议信息;通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表;通过IP地址列表中的IP地址连接服务器,以得到连接信息;根据连接信息,将IP地址列表中的IP地址进行排序,实现IP地址管理。上述方案能够在本申请实施例一的基础上,进一步提高得到IP地址列表的速度。

实施例三

为了使本领域技术人员能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员,本申请实施例三在前述实施例一的基础上,对本申请限定的一种IP地址管理方法做出了进一步的说明,如图3所示,该方法包括:

步骤301、通过DNS解析目标域名,以得到与目标域名对应的IP地址列表。

需要说明的是,通过步骤301可以得到与目标域名相对应的IP地址列表,以便后续对该IP地址列表中的IP地址进行管理。

步骤302、通过IP地址列表中的IP地址连接服务器,以得到连接信息;

其中,连接信息包括IP地址和连接耗时信息,连接信息通过自定义结构体存储。

具体的,自定义结构体可以由以下代码实现:

其中,“Struct IpItem”表示名为“IpItem”的结构体,“String ip;”表示字符串结构的IP地址信息,“uint16_t port;”表示数值型结构的进行连接的端口号,“std::chrono::milliseconds elapse;”表示连接耗时信息的毫秒级时间数据。

需要说明的是,通过步骤302可以得到通过自定义结构体存储的连接信息,以便后续针对IP地址列表中的IP地址进行排序。

步骤303、根据连接信息,使用匿名函数将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

具体的,匿名函数可以为lambda表达式。

需要说明的是,现有技术通常使用一个独立的数组存储每个IP地址的连接耗时,连接耗时信息可以直接排序,在排序完成后,需要依据连接耗时信息与IP地址对应的映射关系,对IP地址进行映射,而本申请实施例通过步骤302和步骤303,将IP地址和连接耗时信息组成了一个自定义结构体,使用独立的比较函数进行排序,排序完成后直接得到目标IP地址列表,避免了进行映射的步骤,能够尽快地使IP地址列表中的IP地址完成排序;本申请实施例通过步骤303,使用匿名函数将IP地址列表中的IP地址进行排序,可以避免创建排序函数,并且由于该匿名函数只能用于步骤303中的排序,避免了函数名称污染(当存在很多函数和全局变量时,它们的名字已不再富有足够的意义来很容易的区分彼此的问题)的发生。

借由上述技术方案,本申请实施例三提供了一种IP地址管理方法,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题,并进一步提升IP地址列表中的IP地址完成排序的速度,并避免了函数名称污染的发生。本申请实施例三通过通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息,连接信息通过自定义结构体存储;根据连接信息,使用匿名函数将IP地址列表中的IP地址进行排序,实现IP地址管理。上述方案能够在本申请实施例一的基础上,进一步提升IP地址列表中的IP地址完成排序的速度,并避免了函数名称污染的发生。

实施例4

为了使本领域技术人员能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员,本申请实施例四在前述实施例一的基础上,对本申请限定的一种IP地址管理方法做出了进一步的说明,如图4所示,该方法包括:

步骤401、获取当前网络支持的互联网通信协议信息;

需要说明的是,通过步骤401可以得到当前网络所支持的互联网通信协议版本,以便后续根据当前网络的互联网通信协议信息进行IP地址的解析。

步骤402、通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表;

具体的,可以由以下代码实现步骤402的功能调用接口:

Std::vectorgetIPByHost(std::string host){};

其中,“Std::vector”表示接口返回的IP地址列表的数据类型为动态数组,“getIPByHost”表示接口名称,“(std::string host)”表示传入的参数为字符串类型的域名。

需要说明的是,上述代码用于实现通过DNS解析目标域名、得到与目标域名对应的IP地址列表的功能的接口,而通过DNS解析目标域名、得到与目标域名对应的IP地址列表的具体实现,封装在该接口的内部,以便使用者直接进行调用。

步骤403、获取第一时间;

其中,第一时间为连接起始时刻的时间。

具体的,可以由以下代码实现步骤403:

connectStart=proxygen::getCurrentTime();

其中,“connectStart”表示第一时间,“proxygen::getCurrentTime()”表示获取当前系统时间。

需要说明的是,上述代码用于获取连接的起始时间,并赋值给变量connectStart。

步骤404、通过folly组件创建网络套接字;

其中,folly组件为C++开源组件,网络套接字用于连接服务器,网络套接字在连接结束后被folly组件施放。

具体的,可以由以下代码创建网络套接字:

folly::NetworkSocket socket=folly::netops::socket(AF_INET,SOCK_STREAM,0);

其中,函数“folly::netops::socket”为folly组件创建网络套接字的函数;在当前网络支持的互联网通信协议信息是第一协议信息时,函数folly::netops::socket的第一个参数为“AF_INET”,在当前网络支持的互联网通信协议信息是第二协议信息时,函数folly::netops::socket的第一个参数为“AF_INET6”;函数folly::netops::socket的第二个参数“SOCK_STREAM”表示面向稳定的传输数据的TCP协议;为避免创建出无效的网络套接字导致连接失败,可以在上述代码后添加以下代码:

if(socket==folly::NetworkSocket()){

throw folly::AsyncSocketException(INTERNAL_ERROR,errno);

}

其中,“if(socket==folly::NetworkSocket())”表示判断当前网络套接字是否是无效的,如果当前网络套接字无效,则执行“{}”中的代码,“throw folly::AsyncSocketException(INTERNAL_ERROR,errno);”表示当前网络套接字无效时,抛出异常。

需要说明的是,由于存在套接字创建不成功的情况,因此需要抛出一个异常不继续执行后续功能,并告知创建者创建失败,进而避免使用未创建成功的套接字而导致程序崩溃。

示例性的,可以由以下代码释放网络套接字:

其中,“folly::makeGuard”实现了folly组件中的makeGuard功能,“do-while”语句的内容实现了当网络套接字没有被成功释放时,或释放该网络套接字的次数少于预定次数时,重新释放该网络套接字的功能。

需要说明的是,folly组件的makeGuard功能可以确保资源面对异常时总能被成功释放,从而避免各种异常情况下网络套接字没有成功释放,从而造成内存泄漏,由于上述操作会频繁进行,一旦内存泄露则会造成程序崩溃。

步骤405、通过IP地址列表中的IP地址和网络套接字连接服务器。

具体的,可以由以下代码实现步骤405:

SocketAddress Server(ip,port);

sockaddr_storage storage;

Server.getAddress(&storage);

Int ret=folly::netops::connect(socket,reinterpret_cast(&storage),Server.getActualSize());

其中,“SocketAddress Server(ip,port);”表示创建一个网络地址的对象,其中绑定了IP地址和端口号,“ip”表示IP地址,“port”表示端口号,“sockaddr_storagestorage”表示系统的参数类型,“Server.getAddress(&storage);”表示从网络地址对象获取socket相关信息,“Int ret”表示“folly::netops::connect(socket,reinterpret_cast(&storage),Server.getActualSize());”返回的数值型结果赋值给参数ret,当ret为0时,表明连接成功,ret不为0时,表明连接失败;“Server.getActualSize()”表示数据大小。

步骤406、获取第二时间;

其中,第二时间为连接结束时刻的时间。

具体的,可以由以下代码实现步骤406:

connectEnd=proxygen::getCurrentTime();

其中,“connectEnd”表示第二时间,“proxygen::getCurrentTime()”表示获取当前系统时间。

需要说明的是,上述代码用于获取连接的结束时间,并赋值给变量connectEnd。

示例性的,完成连接功能的类可以由以下代码部分实现:

其中,“connectStart”表示记录第一时间的成员变量,“const static uint32_tkMaxCloseCount=3;”表示将释放网络套接字的次数设定为3次,“Int connect(stringip,uint16_t port){};”表示用于连接服务器的接口,“ip”为IP地址,“port”为端口号,端口号通常为443或80等,返回值为0时表示连接成功,返回值为1时表示连接失败。

步骤407、通过第一时间和第二时间,计算得到与IP地址对应的连接耗时信息,以得到连接信息;

其中,连接信息包括IP地址和连接耗时信息,连接信息通过自定义结构体存储。

具体的,可以由以下代码实现获取连接耗时信息的功能:

elapse=connectEnd–connectStart;

其中,“elapse”即连接耗时信息。

步骤408、根据连接信息,将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

示例性的,可以由以下代码实现根据连接信息,将IP地址列表中的IP地址进行排序的步骤:

其中,“Vectorips;”表示ips中存储的是自定义结构体的连接信息的动态数组,“For(int i=0;i

借由上述技术方案,本申请实施例四提供了一种IP地址管理方法,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题。本申请实施例四通过获取当前网络支持的互联网通信协议信息;通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表;获取第一时间;通过folly组件创建网络套接字;通过IP地址列表中的IP地址和网络套接字连接服务器;获取第二时间;通过第一时间和第二时间,计算得到与IP地址对应的连接耗时信息,以得到连接信息;根据连接信息,将IP地址列表中的IP地址进行排序,实现IP地址管理。上述方案能够实现提高对目标域名进行请求时的请求结果的返回速度的技术效果,进而解决了目前在进行域名请求时,现有技术中存在的域名请求的响应速度慢的问题。

实施例五

进一步的,作为对前述方法实施例的实现,本申请实施例五提供了一种IP地址管理装置,用于对前述方法实施例进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本IP地址管理装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本申请实施例五中的装置能够对应实现前述方法实施例中的全部内容。如图5所示,该装置50包括:解析单元501、连接单元502和排序单元503,其中,

解析单元501,用于通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;

连接单元502,用于通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息;

排序单元503,用于根据连接信息,将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

优选的,解析单元501可以包括,用于获取当前网络支持的互联网通信协议信息,其中,互联网通信协议信息为第一协议信息或第二协议信息,第一协议信息为IPv4,第二协议信息为IPv4和IPv6;通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表。

优选的,解析单元501可以包括,用于同时通过HttpDNS和LocalDNS解析目标域名,以得到与目标域名对应的IP地址列表。

优选的,连接单元502可以包括,用于通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息,连接信息通过自定义结构体存储。

优选的,连接单元502可以包括,用于获取第一时间,其中,第一时间为连接起始时刻的时间;通过IP地址列表中的IP地址连接服务器;获取第二时间,其中,第二时间为连接结束时刻的时间;通过第一时间和第二时间,计算得到与IP地址对应的连接耗时信息。

优选的,连接单元502可以包括,用于获取第一时间,其中,第一时间为连接起始时刻的时间;通过folly组件创建网络套接字,其中,folly组件为C++开源组件,网络套接字用于连接服务器,网络套接字在连接结束后被folly组件施放;通过IP地址列表中的IP地址和网络套接字连接服务器;获取第二时间,其中,第二时间为连接结束时刻的时间;通过第一时间和第二时间,计算得到与IP地址对应的连接耗时信息。

优选的,排序单元503可以包括,用于根据连接信息,使用匿名函数将IP地址列表中的IP地址进行排序。

借由上述技术方案,本申请实施例还提供了一种IP地址管理装置,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题。本申请实施例四通过获取当前网络支持的互联网通信协议信息;通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表;获取第一时间;通过folly组件创建网络套接字;通过IP地址列表中的IP地址和网络套接字连接服务器;获取第二时间;通过第一时间和第二时间,计算得到与IP地址对应的连接耗时信息,以得到连接信息;根据连接信息,将IP地址列表中的IP地址进行排序,实现IP地址管理。上述方案能够实现提高对目标域名进行请求时的请求结果的返回速度的技术效果,进而解决了目前在进行域名请求时,现有技术中存在的域名请求的响应速度慢的问题。

实施例六

本申请实施例还提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现以下IP地址管理方法:

通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;

通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息;

根据连接信息,将IP地址列表中的IP地址进行排序,以得到目标IP地址列表,以使对目标域名进行请求时,依次使用目标IP地址列表中的IP地址尝试连接服务器。

优选的,通过DNS解析目标域名,以得到与目标域名对应的IP地址列表的步骤,包括:

获取当前网络支持的互联网通信协议信息,其中,互联网通信协议信息为第一协议信息或第二协议信息,第一协议信息为IPv4,第二协议信息为IPv4和IPv6;

通过DNS解析目标域名,以得到与目标域名和互联网通信协议信息对应的IP地址列表。

优选的,通过DNS解析目标域名,以得到与目标域名对应的IP地址列表的步骤,包括:

同时通过HttpDNS和LocalDNS解析目标域名,以得到与目标域名对应的IP地址列表。

优选的,连接信息通过自定义结构体存储。

优选的,根据连接信息,将IP地址列表中的IP地址进行排序的步骤,包括:

根据连接信息,使用匿名函数将IP地址列表中的IP地址进行排序。

优选的,通过IP地址列表中的IP地址连接服务器的步骤,包括:

获取第一时间,其中,第一时间为连接起始时刻的时间;

通过IP地址列表中的IP地址连接服务器;

获取第二时间,其中,第二时间为连接结束时刻的时间;

通过第一时间和第二时间,计算得到与IP地址对应的连接耗时信息。

优选的,通过IP地址列表中的IP地址连接服务器的步骤,包括:

通过folly组件创建网络套接字,其中,folly组件为C++开源组件,网络套接字用于连接服务器,网络套接字在连接结束后被folly组件施放;

通过IP地址列表中的IP地址和网络套接字连接服务器。

实施例七

本申请实施例七提供了一种电子设备60,如图6所示,设备包括至少一个处理器601、以及与处理器连接的至少一个存储器602;其中,处理器601用于调用存储器602中的程序指令,以执行实现上述IP地址管理方法。

借由上述技术方案,本申请实施例提供了一种IP地址管理方法及相关装置,主要目的在于解决目前在进行域名请求时,随机选取解析出的IP地址列表中的IP地址访问服务器,会存在多次连接失败或连接耗时长的情况,进而影响请求结果的返回速度,存在域名请求的响应速度慢的问题。本申请实施例一通过通过DNS解析目标域名,以得到与目标域名对应的IP地址列表;通过IP地址列表中的IP地址连接服务器,以得到连接信息,其中,连接信息包括IP地址和连接耗时信息;根据连接信息,将IP地址列表中的IP地址进行排序,实现IP地址管理。上述方案能够实现提高对目标域名进行请求时的请求结果的返回速度的技术效果,进而解决了目前在进行域名请求时,现有技术中存在的域名请求的响应速度慢的问题。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的;应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合;可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程流程管理设备的处理器以产生一个机器,使得通过计算机或其他可编程流程管理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、存储器和总线;电子设备还可以包括输入/输出接口、网络接口等。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片;存储器是存储介质的示例。

存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储;信息可以是计算机可读指令、数据结构、程序的模块或其他数据;计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息;按照本文中的界定,存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素;在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品;因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式;而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

可以由一种或多种程序设计语言或其组合来编写用于执行本申请实施例操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言;程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行;在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

以上仅为本申请的实施例而已,并不用于限制本申请;对于本领域技术人员来说,本申请可以有各种更改和变化;凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

技术分类

06120115623896