获取访客本地域名解析服务器的方法
技术领域
本发明涉及一种获取访客本地域名解析服务器的方法。
背景技术
DNS是域名系统(Domain Name System)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。
CDN是内容分发网络(Content Delivery Network.)的缩写,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络″边缘″,使用户可以就近取得所需的内容,从而解决Internet网络拥挤的状况,提高用户访问网站的响应速度,从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。
大多数CDN均借助DNS来识别访客位置,其原理为:通过识别访客LocalDNS(本地域名解析服务器)的所在位置,假定该LocalDNS后方的最终访客也位于该位置,于是将相对于该位置网络链路最优的服务节点的IP地址做为A记录返回。这种技术有一种明显的不足,因为访客所在的位置与LocalDNS的位置并不一定相同,从而造成将错误的服务节点分配给访客,最终影响服务质量。
发明内容
为了解决上述问题,本发明提出了一种获取访客本地域名解析服务器的方法,它可以解决采用DNS方式进行CDN服务时无法获取访客的IP与Local DNS的对应数据,从而无法进一步精确优化CDN服务的缺陷。
本发明采用的技术方案如下:
一种获取访客本地域名解析服务器的方法,在由探测重导子系统、智能DNS子系统、数据记录子系统、统计分析子系统组成的系统中进行,包括以下步骤:
1)在需要探测的网站上嵌入指向探测重导子系统的HTML代码,访客浏览器解析该代码后,自动向探测重导子系统发出请求;
2)探测重导子系统收到访客浏览器的请求后,首先记录访客浏览器端计算机的IP地址,然后返回脚本指令;
3)令访客浏览器驱使本地域名解析服务器再次向智能DNS子系统发出请求;
4)智能DNS子系统记录下访客本地域名解析服务器的IP;
5)数据记录子系统将两次请求的数据合并,存至数据库中;
6)经过一定时间段,探测结束后,由分析子系统统计每一个访客本地域名解析服务器后面对应的IP地址信息。
进一步地:
所述步骤2)包括以下详细步骤:
2.1)探测重导子系统获取客户端计算机的IP地址,通过程序生成一个合局唯一的标识码;
2.2)探测重导子系统将客户端计算机的IP和全局唯一标识码保存到数据记录子系统中;
2.3)探测重导子系统生成一个全局唯一的子域名,并返回该子域名的脚本指令。
所述步骤3)包括以下详细步骤:
3.1)访客浏览器向其本地域名解析服务器请求解析该子域名;
3.2)本地域名解析服务器向智能DNS子系统请求解析该子域名。
所述步骤4)包括以下详细步骤:
4.1)智能DNS子系统获取访客本地域名解析服务器的IP地址,;
4.2)将访客本地域名解析服务器的IP和合局唯一标识码保存到数据记录子系统。
在所述步骤5)中,数据记录子系统跟据全局唯一标识码,将访客本地域名解析服务器的IP与之前记录的访客IP进行合并。
在所述步骤6)中,统计分析子系统将相同本地域名解析服务器的IP的记录进行聚合,从而获取利用该本地域名解析服务器进行解析请求的所有访客浏览器IP的集合。
本发明具有以下优点:可以解决采用DNS方式进行CDN服务时无法获取访客的IP与LocalDNS的对应数据,从而无法进一步精确优化CDN服务的缺陷。通过采用本发明的系统,可获取Local DNS及其所对应的实际访客IP,通过对IP数据进行分析,将其解析到更合适的服务节点,从而提升服务质量。
附图说明
图1为本发明的方法原理图。
具体实施方式
本发明提出了一种获取访客本地域名解析服务器的方法。该方法在由以下子系统组成的系统中进行:
(1)探测重导子系统。探测重导子系统由一个具有HTTP服务功能的Web服务器实现,它的作用是接收客户端的请求,记录下客户计算机的IP地址,然后为该次请求生成一个全局唯一的标识码,将标识保存到数据记录子系统中,并以该标识生成一个特定的、唯一的子域名,返回给客户端浏览器访问该特定、唯一子域名的java script指令。
(2)智能DNS子系统。接收Local DNS的解析请求,记录Local DNS的IP地址,并分析LocalDNS请求的特定、唯一子域名,获取由探测重导子系统生成的全局唯一标识码,将Local DNS的IP地址和全局唯一标识码保存到数据记录子系统中。
(3)数据记录子系统。数据记录子系统的核心功能是一个数据库,保存由探测重导子系统发送的客户端IP地址和全局唯一标识码,以及由智能DNS子系统发送的Local DNS IP地址和全局唯一的标识码。并将探测重导子系统和智能DNS系统发送的数据跟据全局唯一标识码进行匹配、合并,将合并的数据保存到数据库中供统计分析使用。
(4)统计分析子系统。主要负责对数据记录子系统中的探测数据进行统计和分析,系统最终统计使用某一个具体的Local DNS进行解析服务的计算机的IP地址。
获取访客本地域名解析服务器的方法的大体步骤是:
首先在需要探测的网站上嵌入JavaScript代码,浏览器解析JavaScript代码,然后请求探测系统的探测重导模块,探测重导模块首先记录浏览器端计算机的IP地址,然后返回脚本指令,令浏览器再次请求探测系统的智能DNS模块,智能DNS模块记录下LocalDNS的IP,数据记录模块将两次请求的数据合并,存至数据仓库中。经过一定时间段,探测结束后,最后由分析模块统计每一个LocalDNS后面对应的IP地址信息。
下面结合图1再对本发明方法作详细说明:
(1)由探测系统提供特定的HTML代码,将其嵌入在被探测的网站页面上。假定网站的地址为http://www.website.com,探测系统中探测重导模块的服务地址为http://www.trace.com/redirect.cgi,则在http://www.website.com/index.html嵌入如下HTML代码:
<iframe height=”0”width=”0”src=”http://www.trace.com/redirect.cgi”></iframe>
当网站的访客访问http://www.website.com/index.html页面时,浏览器会解析上述HTML代码,从而自动向http://www.trace.com/redirect.egi发出请求。
(2)探测重导模块接收到从访客浏览器发出的请求后,首先,获取客户端计算机的IP地址,然后通过程序生成一个合局唯一的标识码,假设本次请求中客户的IP地址为4.4.4.4,生成的唯一标识码为:000001,将IP和全局唯一标识码保存到数据记录子系统中。
(3)假设智能DNS子系统具有*.dns.trace.com子域名的授权。则重导子系统生成一个全局唯一的子域名:000001.dns.trace.com,并返回如下页面代码:
<script>window.location.href=’http://000001.dns.trace.com’</script>
(4)客户的浏览器收到重导子系统返回的页面代码后,尝试加载http://000001.dns.trace.com,因为这个域名是由探测系统生成的一个全新的全局唯一域名,所以,客户端浏览并不知道该域名的A记录,从而向其Local DNS请求该域名的解析。
(5)同理,Local DNS也不具有该域名的缓存数据,于是向智能DNS子系统请求000001.dns.trace.com域名的解析。
(6)由于智能DNS系统具有*.dns.trace.com子域名的授权,因此在接收到Local DNS对于子域000001.dns.trace.com的解析请求后,首先获取Local DNS的IP地址,假定Local DNS的IP地址为4.4.4.5,然后请求的子域的第一段转换为全局唯一标识码:000001,最后将LocalDNS的IP和合局唯一标识码保存到数据记录子系统。数据记录子系统跟据全局唯一标识码自动将其与之前记录的访客IP记录进行合并,得到如下记录:
唯一标识码 |
访客IP |
Local DNS IP |
000001 |
4.4.4.4 |
4.4.4.5 |
(7)经过一段时间的探测后,数据记录子系统会收集大量的探测数据,然后交由统计分析子系统将相同Local DNS IP的记录进行聚合,从而获取利用该Local DNS进行解析请求的所有IP集合,获得IP集合数据后,进行如下步骤的分析工作:
a.将列表中的重复IP数据合并,并将重复次数计为该IP的权重。假定初始列表中的IP数据如下:
访客IP |
3.3.3.3 |
3.3.3.3 |
7.7.7.7 |
9.9.9.9 |
7.7.7.7 |
7.7.7.7 |
则合并处理后的数据为:
访客IP |
权重 |
3.3.3.3 |
2 |
7.7.7.7 |
3 |
9.9.9.9 |
1 |
b.查询IP地理位置数据库,查询每一个IP所在的区域及ISP,得到类似如下的表格:
访客IP |
权重 |
所在区域 |
ISP |
3.3.3.3 |
2 |
江苏 |
中国电信 |
7.7.7.7 |
3 |
江苏 |
中国电信 |
9.9.9.9 |
1 |
安徽 |
中国联通 |
c.合并相同区域IP的权重,得到类似如下的表格:
权重 |
所在区域 |
ISP |
5 |
江苏 |
中国电信 |
1 |
安徽 |
中国联通 |
d.获取权重最大的所在区域及ISP,该区域为4.4.4.5这台Local DNS的主服务区域,结果如下:
e.更新CDN解析策略,以后所有IP地址为4.4.4.5的Local DNS解析请求,将CDN系统中服务于江苏中国电信用户的节点IP地址作为A记录返回。从而提供更优化的CDN服务。