首页 > 范文大全 > 正文

基于邮件系统的智能DNS设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于邮件系统的智能DNS设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:该文针对国外,或者偏远地区电子邮件访问速度慢的问题,提出了一种基于邮件系统智能dns解析。通过阅读mydns软件的源码,在mydns源码的基础上进行修改,利用关系数据库mysql,使得DNS服务器能够智能识别出距离用户物理位置最近的CDN服务器,用户向此服务器提出发送或者接收邮件的请求,从而加快用户发送或者接收邮件的速度,提高用户体验。

关键词:邮件加速;DNS智能化;mysql数据库

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)07-1481-04

互联网和电子商务越来越普及,电子邮件已经成为商务人士沟通、交流的重要方式。很多外贸公司在经营对外贸易时,经常需要工作人员出国参加展会。而电子邮件作为必要的通讯手段,在国外或者偏远地区访问的速度却很慢,造成工作商务人士获取有效信息的延迟,降低了工作效率。

随着计算机和通信技术的快速发展,以及各种新应用的出现,网络环境日益复杂,对网络资源的需求迅速增加。中国互联网络信息中心CNNIC的《第30次中国互联网发展状况统计报告》显示:截至2012年6月底,我国网民规模已高达5.38亿,较2011年底增加了5%;互联网普及率达到39.9%,其中手机网民规模达到3.88亿,超过台式电脑网民数3.8亿。如何缓解网络拥塞、提高网络传输的速度和质量,已成为困扰众多服务提供商的一大难题。

内容分布式服务是有效的有效解决方案,在这种背景下内容分发网络(Content Delivery Network,CDN)应运而生。CDN概念的基本思想是通过实现用户对内容的就近访问来减少核心网流量和中心服务器负载,从而大大提高用户的感受度,从技术层面上解决了由于网络带宽小、用户访问量大、网点分布不均匀、单点失效等带来的服务质量降低的问题。CDN的技术原理是通过在现有的Internet网络架构中在靠近用户的网络“边缘”放置适当数量的服务器,将网站的内容从核心网推向这些,从而减小传输时延和网络抖动等影响因素,使得用户能得到高质量的内容服务。

DNS重定向是一个在多个地点之间进行网络交通优化,全球负载均衡,访问重定向的内容服务器。它与标准的DNS协议相兼容,可以根据网络反应速度、客户的地理分布以及服务器的状态选择性能最优的服务器来响应客户的DNS请求,加快用户获取所需服务的速度。

1 DNS服务器域名解析的基本知识

1.1 DNS的概念和基本组成

DNS又称为域名系统,是域名系统 (Domain Name System) 的缩写。DNS又称为域名系统,是域名系统 (Domain Name System) 的缩写。DNS是基于TCP/IP架构的一项网络基础服务,该系统用于命名组织到域层次结构中的计算机和网络服务,其功能就是将人类容易记忆的域名与不容易记忆的IP地址做转换,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,运行DNS软件的这台主机就称作DNS服务器。

DNS由以下三部分组成:

1)域名空间和资源记录,域名空间是一种树状层次结构,资源记录是与名字相关的一些数据。

2)域名服务器,它是认证权威,所有的认证信息组成一个单元称为区,这些区可以分布于不同的服务器上以保证数据的冗余。

3)resolver是向域名服务器提出查询请求并将结果返回给客户的程序,将解析结果直接返回给用户或向别的域名服务器进行查询。

1.2 资源记录

资源记录是用于答复DNS客户端请求的DNS数据库记录,每一个DNS服务器包含了它所管理的DNS命名空间的所有资源记录。资源记录包含和特定的主机有关的信息,如IP地址

提供服务的类型等。常见的资源记录类型有:

1)其实授权结构(SOA):起始授权机构。此记录指定区域的起点。它所包含的信息有区域名、区域管理员电子邮件地址,以及指示辅助DNS服务器如何更新区域数据文件的设置等。

2)主机(A):地址。主机(A)记录是名称解析的重要记录,它用于将特定的主机名映射到对应的主机IP地址上。可以在DNS服务器中手动创建或通过DNS客户端动态更新来创建。

3)别名(CNAME):标准名称。此记录用于将某个别名指向到某个主机(A)记录上,从而无需为某个需要新名字解析的主机额外创建A记录。

4)邮件交换器(MX):邮件交换器。此记录列出了负责接收发到域中的电子邮件主机,通常用于邮件的收发。

5)名称服务器(NS):名称服务器。此记录指定负责此DNS区域的权威名称服务器。

1.3 DNS服务器的解析原理

1)客户端首先将其域名解析的请求发送到本地DNS服务器,本地DNS服务器将在本地数据库中查询是否存在客户所要求的缓存记录。

2)如果本地DNS服务器缓存中找不到客户所需要的查询信息,则将此客户端的请求发送到跟域名的DNS服务器。

3)客户端的DNS服务器利用跟域名服务器解析到的地址访问下一级的DNS服务器,得到维护再下一级域名的DNS服务器地址。

4)按照上述递归方法逐级接近请求解析的目标,最后在维护有目标域名的DNS服务器上找到相应的IP地址信息。

5)客户端的本地DNS服务器将递归查询得到的结果返回给客户端。

6)客户端利用本地DNS服务器查询得到的IP地址访问目标主机。

2 DNS服务器和缓存服务器之间距离参数的获取

2.1 相对坐标的获取

为了获取DNS服务器和缓存服务器之间的距离,在地图上把所有的省份进行坐标定位,获得相对坐标值,并且把每一个省赋予唯一的一个id值。得到一张表,命名为region,region表信息如下(取前10行):

表1

2.2 不同地区IP的获取与处理

在互联网上下载IP数据库,保存为ip.txt。在IP数据库中,某个地区的IP为几个不连续的IP段。显示IP数据库中的前6行如表2所示。

对IP进行处理,转化成可以使用的形式。处理方式如下:

把任意一个IP转换成一个十进制的long long型的数。例如:IP为:192.168.1.1 。在程序中做相应的处理使得:ip[0]=192,ip[1]=168,ip[2]=1,ip[3]=1。ip[i]中存储的数据的二进制形式为:

ip[0]=11000000,ip[1]=10101000,ip[2]=00000001,ip[3]=00000001,

建立一个long long型的ip_long并初始化为0,接着通过位运算将ip_long左移八位并将ip[0]放在低八位,对ip[1]、ip[2]、ip[3]做相同处理,最后得到ip_long的二进制形式为11000000 10101000 00000001 00000001。以十进制的形式把此数取出,则ip_long= 3232235777。

利用上述方法,把IP数据库中的数据进行转化,得到某个地区的start_ip和end_ip(均为long long型数据),以及对应的标示地区的唯一id。转化后的ip数据库命名为ipmapping,ipmapping中内容如下(只显示前十行):

表3

其中region为ipmapping表的外键,与region表的主键id相关联。最后把这两张表导入mysql数据库中。

2.3 距离DNS服务器最近的缓存服务器的获取

举例说明DNS服务器最近的缓存服务器之间物理距离Lmn的计算:

假如检测到发送请求的用户的IP为202.205.156.1,转换为long long 型的数为ip_long=11001010110011011001110000000001,其十进制表示为3402472449,在ipmapping表中查找3402472449所属的IP范围。连接数据库中ipmapping和region表,构造SQL语句:select pos_x, pos_y from region inner join ipmapping on region.id=ipmapping.region where 3402472449>=start_ip and 3402472449

3 距离参数智能化之后的DNS服务器解析过程

在mysql数据库存储三张数据库表:

SOA表:

举例说明:假设请求的用户IP是127.0.0.1,我们部署的3个缓存服务器服务器的IP分别为119.75.218.70 、59.77.15.16和221.2.108.132。

用户发出请求,要求解析。先在本地DNS服务器中查找是否存在关于此IP用户的相关缓存信息,若存在,则直接返回给该用户。若没有,则进一步把请求发送给智能DNS服务器。智能DNS服务器在接收到域名解析请求之后,首先查找在智能DNS服务器的缓存区域中是否存在关于域名的解析结果。调用reply_cache_find()函数来查找,若缓存中存在相关信息,则直接返回给用户;若在缓存区域中找不到关于此域名的缓存内容,则调用resolve()函数来对此域名进行解析。

智能DNS服务器首先查找对于域的解析。在zone_cache_find中查找,若zone_cache_find中找不到域的信息,那么,连接SOA数据库表,构造SQL语句来查找域的信息。可以看到,在SOA表中找不到此域的信息(这时,智能DNS服务器首先把域添加到nagative_cache中。若再次查找域,可以发现在nagative_cache中有缓存此域,那么本次不需要再次连接数据库查找SOA表,直接根据nagative_cache中的信息返回给用户。用户接收到来自nagative_cache的信息,可知数据库中不存在此域的任何信息)。然后,MyDNS内部函数会做一些相应的处理,查找下一个域。同样也是先在zone_cache_find中查找,若zone_cache_find中找不到域的信息,那么,连接SOA数据库表,构造SQL语句来查找域 的信息。这次在SOA表中找到满足域的一条记录,且域对应的id是1(这时,智能DNS服务器先把这条记录添加到zone_cache中。若再次查找域,可以发现在zone_cache中有缓存此域,那么本次不需要再次连接数据库查找SOA表,直接把zone_cache中的信息返回)。

接着label by label 地查找"www"主机。先查找域为1的"www"的ANY记录。同样也是先在zone_cache_find中查找,若zone_cache_find中找不到域为1的"www"的ANY记录,那么,连接RR数据库表,装载RR记录,构造SQL语句来查找域为1的"www"的ANY记录。可以看到,在RR表中找到满足条件的两条记录,分别为"www"的A记录和AAAA记录,且两条记录对应的data值均为1(这时,智能DNS服务器先把这两条记录添加到zone_cache中。若再次查找域为1的"www"的ANY记录,可以发现在zone_cache中有缓存此域,那么本次不需要再次连接数据库查找RR表,直接把zone_cache中的信息返回)。

智能DNS服务器在找到相应lable的A记录或者AAAA记录时,则会转到第三张EX表,调用源码中添加的一些函数,把最优的缓存服务器的IP返回给用户。下面的解析过程就是我们对源码做了相应的修改之后的寻找最优缓存服务器的过程(此处先考虑[Lmn])。此处只介绍A记录的处理过程(AAAA记录的处理与A记录的处理相同)。

在EX表中查找dns值为1的所有缓存服务器的相关信息(包括距离,服务器活动状态,带宽)。可以看到,在EX表中,dns值为1 的缓存服务器有3个。到底哪一个缓存服务器对该用户来说是性能最优的,我们根据下面的方法来判断。系统首先根据用户的IP得出用户所在地的坐标,本例中假设为request_x =68,request_y=24(辽宁),dns值为1的三个缓存服务器的IP分别为:119.75.218.70,59.77.15.16,221.2.108.132,进一步可以得到三个缓存服务器的坐标为:

pos1_x=58,pos1_y=27(北京);

pos2_x=62,pos2_y=50(福建);

pos3_x=59,pos3_y=33(山东)

程序中最后返回给用户的缓存服务器的IP是sel:119.75.218.70。实际判断可知,辽宁的一个用户发出请求,相比北京,福建,山东三个地方的缓存服务器,只从距离的角度考虑的话,北京的服务器是在距离因素上性能最优的一个缓存服务器。

4 结束语

本文利用CDN内容分发的思想,提出了一种基于邮件系统的智能DNS解析方法。该方法在mydns源码的基础上进行修改,利用关系数据库mysql,实现了辨别距离DNS服务器物理位置最近的CDN服务器。用户通过向此服务器提出发送或者接收邮件的请求,可以加快用户收发邮件的速度,提高用户体验。

参考文献:

[1] Rob Scrimger.TCP/IP,宝典[M].北京:电子工业出版社,2002:45-60.

[2] Douglas er,TCP/IP网络互连技术:卷1[M].北京:清华大学出版社,2002:56-62.

[3] 贺再平. DNS服务器的配置配置及域名解析[J].中国教育网络,2008(10):72.

[4] 彭炜.智能DNS服务器的优化与管理[J].电脑编程技巧与维护,2009(10).

[5] 高玉邦,洪志浩,钱华林.域名系统的研究和改进[J].计算机研究和发展,1999,36(2):234-237.