摘要:該文針對國外,或者偏遠地區(qū)電子郵件訪問速度慢的問題,提出了一種基于郵件系統(tǒng)的智能DNS解析。通過閱讀mydns軟件的源碼,在mydns源碼的基礎(chǔ)上進行修改,利用關(guān)系數(shù)據(jù)庫mysql,使得DNS服務(wù)器能夠智能識別出距離用戶物理位置最近的CDN服務(wù)器,用戶向此服務(wù)器提出發(fā)送或者接收郵件的請求,從而加快用戶發(fā)送或者接收郵件的速度,提高用戶體驗。
關(guān)鍵詞:郵件加速;DNS智能化;mysql數(shù)據(jù)庫
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2013)07-1481-04
互聯(lián)網(wǎng)和電子商務(wù)越來越普及,電子郵件已經(jīng)成為商務(wù)人士溝通、交流的重要方式。很多外貿(mào)公司在經(jīng)營對外貿(mào)易時,經(jīng)常需要工作人員出國參加展會。而電子郵件作為必要的通訊手段,在國外或者偏遠地區(qū)訪問的速度卻很慢,造成工作商務(wù)人士獲取有效信息的延遲,降低了工作效率。
隨著計算機和通信技術(shù)的快速發(fā)展,以及各種新應(yīng)用的出現(xiàn),網(wǎng)絡(luò)環(huán)境日益復雜,對網(wǎng)絡(luò)資源的需求迅速增加。中國互聯(lián)網(wǎng)絡(luò)信息中心CNNIC發(fā)布的《第30次中國互聯(lián)網(wǎng)發(fā)展狀況統(tǒng)計報告》顯示:截至2012年6月底,我國網(wǎng)民規(guī)模已高達5.38億,較2011年底增加了5%;互聯(lián)網(wǎng)普及率達到39.9%,其中手機網(wǎng)民規(guī)模達到3.88億,超過臺式電腦網(wǎng)民數(shù)3.8億。如何緩解網(wǎng)絡(luò)擁塞、提高網(wǎng)絡(luò)傳輸?shù)乃俣群唾|(zhì)量,已成為困擾眾多服務(wù)提供商的一大難題。
內(nèi)容分布式服務(wù)是有效的有效解決方案,在這種背景下內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN)應(yīng)運而生。CDN概念的基本思想是通過實現(xiàn)用戶對內(nèi)容的就近訪問來減少核心網(wǎng)流量和中心服務(wù)器負載,從而大大提高用戶的感受度,從技術(shù)層面上解決了由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點分布不均勻、單點失效等帶來的服務(wù)質(zhì)量降低的問題。CDN的技術(shù)原理是通過在現(xiàn)有的Internet網(wǎng)絡(luò)架構(gòu)中在靠近用戶的網(wǎng)絡(luò)“邊緣”放置適當數(shù)量的服務(wù)器,將網(wǎng)站的內(nèi)容從核心網(wǎng)推向這些代理,從而減小傳輸時延和網(wǎng)絡(luò)抖動等影響因素,使得用戶能得到高質(zhì)量的內(nèi)容服務(wù)。
DNS重定向是一個在多個地點之間進行網(wǎng)絡(luò)交通優(yōu)化,全球負載均衡,訪問重定向的內(nèi)容服務(wù)器。它與標準的DNS協(xié)議相兼容,可以根據(jù)網(wǎng)絡(luò)反應(yīng)速度、客戶的地理分布以及服務(wù)器的狀態(tài)選擇性能最優(yōu)的服務(wù)器來響應(yīng)客戶的DNS請求,加快用戶獲取所需服務(wù)的速度。
1 DNS服務(wù)器域名解析的基本知識
1.1 DNS的概念和基本組成
DNS又稱為域名系統(tǒng),是域名系統(tǒng) (Domain Name System) 的縮寫。DNS又稱為域名系統(tǒng),是域名系統(tǒng) (Domain Name System) 的縮寫。DNS是基于TCP/IP架構(gòu)的一項網(wǎng)絡(luò)基礎(chǔ)服務(wù),該系統(tǒng)用于命名組織到域?qū)哟谓Y(jié)構(gòu)中的計算機和網(wǎng)絡(luò)服務(wù),其功能就是將人類容易記憶的域名與不容易記憶的IP地址做轉(zhuǎn)換,它們之間的轉(zhuǎn)換工作稱為域名解析,域名解析需要由專門的域名解析服務(wù)器來完成,運行DNS軟件的這臺主機就稱作DNS服務(wù)器。
DNS由以下三部分組成:
1)域名空間和資源記錄,域名空間是一種樹狀層次結(jié)構(gòu),資源記錄是與名字相關(guān)的一些數(shù)據(jù)。
2)域名服務(wù)器,它是認證權(quán)威,所有的認證信息組成一個單元稱為區(qū),這些區(qū)可以分布于不同的服務(wù)器上以保證數(shù)據(jù)的冗余。
3)resolver是向域名服務(wù)器提出查詢請求并將結(jié)果返回給客戶的程序,將解析結(jié)果直接返回給用戶或向別的域名服務(wù)器進行查詢。
1.2 資源記錄
資源記錄是用于答復DNS客戶端請求的DNS數(shù)據(jù)庫記錄,每一個DNS服務(wù)器包含了它所管理的DNS命名空間的所有資源記錄。資源記錄包含和特定的主機有關(guān)的信息,如IP地址
提供服務(wù)的類型等。常見的資源記錄類型有:
1)其實授權(quán)結(jié)構(gòu)(SOA):起始授權(quán)機構(gòu)。此記錄指定區(qū)域的起點。它所包含的信息有區(qū)域名、區(qū)域管理員電子郵件地址,以及指示輔助DNS服務(wù)器如何更新區(qū)域數(shù)據(jù)文件的設(shè)置等。
2)主機(A):地址。主機(A)記錄是名稱解析的重要記錄,它用于將特定的主機名映射到對應(yīng)的主機IP地址上??梢栽贒NS服務(wù)器中手動創(chuàng)建或通過DNS客戶端動態(tài)更新來創(chuàng)建。
3)別名(CNAME):標準名稱。此記錄用于將某個別名指向到某個主機(A)記錄上,從而無需為某個需要新名字解析的主機額外創(chuàng)建A記錄。
4)郵件交換器(MX):郵件交換器。此記錄列出了負責接收發(fā)到域中的電子郵件主機,通常用于郵件的收發(fā)。
5)名稱服務(wù)器(NS):名稱服務(wù)器。此記錄指定負責此DNS區(qū)域的權(quán)威名稱服務(wù)器。
1.3 DNS服務(wù)器的解析原理
1)客戶端首先將其域名解析的請求發(fā)送到本地DNS服務(wù)器,本地DNS服務(wù)器將在本地數(shù)據(jù)庫中查詢是否存在客戶所要求的緩存記錄。
2)如果本地DNS服務(wù)器緩存中找不到客戶所需要的查詢信息,則將此客戶端的請求發(fā)送到跟域名的DNS服務(wù)器。
3)客戶端的DNS服務(wù)器利用跟域名服務(wù)器解析到的地址訪問下一級的DNS服務(wù)器,得到維護再下一級域名的DNS服務(wù)器地址。
4)按照上述遞歸方法逐級接近請求解析的目標,最后在維護有目標域名的DNS服務(wù)器上找到相應(yīng)的IP地址信息。
5)客戶端的本地DNS服務(wù)器將遞歸查詢得到的結(jié)果返回給客戶端。
6)客戶端利用本地DNS服務(wù)器查詢得到的IP地址訪問目標主機。
2 DNS服務(wù)器和代理緩存服務(wù)器之間距離參數(shù)的獲取
2.1 相對坐標的獲取
為了獲取DNS服務(wù)器和代理緩存服務(wù)器之間的距離,在地圖上把所有的省份進行坐標定位,獲得相對坐標值,并且把每一個省賦予唯一的一個id值。得到一張表,命名為region,region表信息如下(取前10行):
表1
2.2 不同地區(qū)IP的獲取與處理
在互聯(lián)網(wǎng)上下載IP數(shù)據(jù)庫,保存為ip.txt。在IP數(shù)據(jù)庫中,某個地區(qū)的IP為幾個不連續(xù)的IP段。顯示IP數(shù)據(jù)庫中的前6行如表2所示。
對IP進行處理,轉(zhuǎn)化成可以使用的形式。處理方式如下:
把任意一個IP轉(zhuǎn)換成一個十進制的long long型的數(shù)。例如:IP為:192.168.1.1 。在程序中做相應(yīng)的處理使得:ip[0]=192,ip[1]=168,ip[2]=1,ip[3]=1。ip[i]中存儲的數(shù)據(jù)的二進制形式為:
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。以十進制的形式把此數(shù)取出,則ip_long= 3232235777。
利用上述方法,把IP數(shù)據(jù)庫中的數(shù)據(jù)進行轉(zhuǎn)化,得到某個地區(qū)的start_ip和end_ip(均為long long型數(shù)據(jù)),以及對應(yīng)的標示地區(qū)的唯一id。轉(zhuǎn)化后的ip數(shù)據(jù)庫命名為ipmapping,ipmapping中內(nèi)容如下(只顯示前十行):
表3
其中region為ipmapping表的外鍵,與region表的主鍵id相關(guān)聯(lián)。最后把這兩張表導入mysql數(shù)據(jù)庫中。
2.3 距離DNS服務(wù)器最近的代理緩存服務(wù)器的獲取
舉例說明DNS服務(wù)器最近的代理緩存服務(wù)器之間物理距離Lmn的計算:
假如檢測到發(fā)送請求的用戶的IP為202.205.156.1,轉(zhuǎn)換為long long 型的數(shù)為ip_long=11001010110011011001110000000001,其十進制表示為3402472449,在ipmapping表中查找3402472449所屬的IP范圍。連接數(shù)據(jù)庫中ipmapping和region表,構(gòu)造SQL語句:select pos_x, pos_y from region inner join ipmapping on region.id=ipmapping.region where 3402472449>=start_ip and 3402472449<=end_ip。查找得到,start_ip =3402472448<=ip_long=3402472449<= end_ip =3402472959,此范圍的數(shù)在ipmapping中對應(yīng)的region為28;在region表中,對應(yīng)id=28的地點為北京,其坐標為request_x =58,request_y=27。再假設(shè)其中一個代理緩存服務(wù)器服務(wù)器部署的地址的IP為59.77.15.16,利用同樣的方法可以得到此IP在region表中的id=14,在福建,其坐標為pos_x=62,pos_y=50。用戶和代理緩存服務(wù)器之間的距離為dis= pow(request_x-pos_x,2)+pow(request_y-pos_y,2)。若要求最近距離,只需選擇用戶和各個代理緩存服務(wù)器之間距離最小的那個即可。
3 距離參數(shù)智能化之后的DNS服務(wù)器解析過程
在mysql數(shù)據(jù)庫存儲三張數(shù)據(jù)庫表:
SOA表:
舉例說明:假設(shè)請求的用戶IP是127.0.0.1,我們部署的3個代理緩存服務(wù)器服務(wù)器的IP分別為119.75.218.70 、59.77.15.16和221.2.108.132。
用戶發(fā)出請求,要求解析www.baidu.com。先在本地DNS服務(wù)器中查找是否存在關(guān)于此IP用戶的相關(guān)緩存信息,若存在,則直接返回給該用戶。若沒有,則進一步把請求發(fā)送給智能DNS服務(wù)器。智能DNS服務(wù)器在接收到域名解析請求之后,首先查找在智能DNS服務(wù)器的緩存區(qū)域中是否存在關(guān)于域名www.baidu.com的解析結(jié)果。調(diào)用reply_cache_find()函數(shù)來查找,若緩存中存在相關(guān)信息,則直接返回給用戶;若在緩存區(qū)域中找不到關(guān)于此域名的緩存內(nèi)容,則調(diào)用resolve()函數(shù)來對此域名進行解析。
智能DNS服務(wù)器首先查找對于域www.baidu.com的解析。在zone_cache_find中查找,若zone_cache_find中找不到域www.baidu.com的信息,那么,連接SOA數(shù)據(jù)庫表,構(gòu)造SQL語句來查找域www.baidu.com的信息。可以看到,在SOA表中找不到此域的信息(這時,智能DNS服務(wù)器首先把域www.baidu.com添加到nagative_cache中。若再次查找域www.baidu.com,可以發(fā)現(xiàn)在nagative_cache中有緩存此域,那么本次不需要再次連接數(shù)據(jù)庫查找SOA表,直接根據(jù)nagative_cache中的信息返回給用戶。用戶接收到來自nagative_cache的信息,可知數(shù)據(jù)庫中不存在此域的任何信息)。然后,MyDNS內(nèi)部函數(shù)會做一些相應(yīng)的處理,查找下一個域baidu.com。同樣也是先在zone_cache_find中查找,若zone_cache_find中找不到域baidu.com的信息,那么,連接SOA數(shù)據(jù)庫表,構(gòu)造SQL語句來查找域 baidu.com的信息。這次在SOA表中找到滿足域baidu.com的一條記錄,且域baidu.com對應(yīng)的id是1(這時,智能DNS服務(wù)器先把這條記錄添加到zone_cache中。若再次查找域baidu.com,可以發(fā)現(xiàn)在zone_cache中有緩存此域,那么本次不需要再次連接數(shù)據(jù)庫查找SOA表,直接把zone_cache中的信息返回)。
接著label by label 地查找"www"主機。先查找域為1的"www"的ANY記錄。同樣也是先在zone_cache_find中查找,若zone_cache_find中找不到域為1的"www"的ANY記錄,那么,連接RR數(shù)據(jù)庫表,裝載RR記錄,構(gòu)造SQL語句來查找域為1的"www"的ANY記錄。可以看到,在RR表中找到滿足條件的兩條記錄,分別為"www"的A記錄和AAAA記錄,且兩條記錄對應(yīng)的data值均為1(這時,智能DNS服務(wù)器先把這兩條記錄添加到zone_cache中。若再次查找域為1的"www"的ANY記錄,可以發(fā)現(xiàn)在zone_cache中有緩存此域,那么本次不需要再次連接數(shù)據(jù)庫查找RR表,直接把zone_cache中的信息返回)。
智能DNS服務(wù)器在找到相應(yīng)lable的A記錄或者AAAA記錄時,則會轉(zhuǎn)到第三張EX表,調(diào)用源碼中添加的一些函數(shù),把最優(yōu)的代理緩存服務(wù)器的IP返回給用戶。下面的解析過程就是我們對源碼做了相應(yīng)的修改之后的尋找最優(yōu)代理緩存服務(wù)器的過程(此處先考慮[Lmn])。此處只介紹A記錄的處理過程(AAAA記錄的處理與A記錄的處理相同)。
在EX表中查找dns值為1的所有代理緩存服務(wù)器的相關(guān)信息(包括距離,服務(wù)器活動狀態(tài),帶寬)??梢钥吹剑贓X表中,dns值為1 的代理緩存服務(wù)器有3個。到底哪一個代理緩存服務(wù)器對該用戶來說是性能最優(yōu)的,我們根據(jù)下面的方法來判斷。系統(tǒng)首先根據(jù)用戶的IP得出用戶所在地的坐標,本例中假設(shè)為request_x =68,request_y=24(遼寧),dns值為1的三個代理緩存服務(wù)器的IP分別為:119.75.218.70,59.77.15.16,221.2.108.132,進一步可以得到三個代理緩存服務(wù)器的坐標為:
pos1_x=58,pos1_y=27(北京);
pos2_x=62,pos2_y=50(福建);
pos3_x=59,pos3_y=33(山東)
程序中最后返回給用戶的代理緩存服務(wù)器的IP是sel:119.75.218.70。實際判斷可知,遼寧的一個用戶發(fā)出請求,相比北京,福建,山東三個地方的代理緩存服務(wù)器,只從距離的角度考慮的話,北京的服務(wù)器是在距離因素上性能最優(yōu)的一個代理緩存服務(wù)器。
4 結(jié)束語
本文利用CDN內(nèi)容分發(fā)的思想,提出了一種基于郵件系統(tǒng)的智能DNS解析方法。該方法在mydns源碼的基礎(chǔ)上進行修改,利用關(guān)系數(shù)據(jù)庫mysql,實現(xiàn)了辨別距離DNS服務(wù)器物理位置最近的CDN服務(wù)器。用戶通過向此服務(wù)器提出發(fā)送或者接收郵件的請求,可以加快用戶收發(fā)郵件的速度,提高用戶體驗。
參考文獻:
[1] Rob Scrimger.TCP/IP,寶典[M].北京:電子工業(yè)出版社,2002:45-60.
[2] Douglas E.Comer,TCP/IP網(wǎng)絡(luò)互連技術(shù):卷1[M].北京:清華大學出版社,2002:56-62.
[3] 賀再平. DNS服務(wù)器的配置配置及域名解析[J].中國教育網(wǎng)絡(luò),2008(10):72.
[4] 彭煒.智能DNS服務(wù)器的優(yōu)化與管理[J].電腦編程技巧與維護,2009(10).
[5] 高玉邦,洪志浩,錢華林.域名系統(tǒng)的研究和改進[J].計算機研究和發(fā)展,1999,36(2):234-237.