本發(fā)明涉及一種域名系統(tǒng)DNS(Domain Name System)二次遞歸解析的方法,屬于計(jì)算機(jī)網(wǎng)絡(luò)通信的技術(shù)領(lǐng)域。
背景技術(shù):
域名(Domain Name)是Internet上某一臺(tái)計(jì)算機(jī)或計(jì)算機(jī)組的名稱,用于在數(shù)據(jù)傳輸時(shí)標(biāo)識(shí)計(jì)算機(jī)的電子方位(有時(shí)指地理位置)。域名是由一串用點(diǎn)分隔的字符作為其名字而組成的,這串用點(diǎn)分隔的字符中,通常包含組織名,而且始終包括兩到三個(gè)字母的后綴,以指明組織的類型或該域所在的國(guó)家或地區(qū)。
域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)上作為域名和IP地址(IP address)相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),它保存有一張域名和與其相對(duì)應(yīng)的IP地址的表格,用于解析消息中的域名,以使用戶更方便地訪問(wèn)互聯(lián)網(wǎng),而不用去背記能夠被機(jī)器直接讀取而人非常不易記憶的IP地址字符串。通過(guò)輸入域名,經(jīng)由DNS系統(tǒng)翻譯給出該主機(jī)名所對(duì)應(yīng)的IP地址的過(guò)程叫做域名解析(或主機(jī)名解析),執(zhí)行域名解析的網(wǎng)絡(luò)主機(jī)被稱為DNS服務(wù)器。通過(guò)DNS域名系統(tǒng)的域名解析過(guò)程,用戶就可以對(duì)站點(diǎn)或資源進(jìn)行訪問(wèn)。
域名解析過(guò)程是:當(dāng)一臺(tái)機(jī)器a向其DNS服務(wù)器A發(fā)出域名解析請(qǐng)求時(shí),如果DNS服務(wù)器A能夠解析,則將解析結(jié)果發(fā)給機(jī)器a,否則,DNS服務(wù)器A將向其上級(jí)DNS服務(wù)器B發(fā)出解析請(qǐng)求,如果DNS服務(wù)器B能夠解析,則將解析結(jié)果發(fā)給機(jī)器a,如果DNS服務(wù)器B也無(wú)法解析,則將請(qǐng)求發(fā)給其再上一級(jí)DNS服務(wù)器C,如此下去,直至解析到結(jié)果為止。
目前,DNS提供的域名解析方式主要包括下述三種:
1、轉(zhuǎn)發(fā)優(yōu)先:本地DNS服務(wù)器接收到來(lái)自用戶主機(jī)的域名解析請(qǐng)求后,將該請(qǐng)求轉(zhuǎn)發(fā)給指定的遞歸解析服務(wù)器,由該服務(wù)器進(jìn)行解析,并將解析結(jié)果返回給本地DNS服務(wù)器,本地DNS服務(wù)器再將結(jié)果返回給用戶主機(jī)。若該指定的DNS服務(wù)器不可達(dá),則由本地DNS服務(wù)器進(jìn)行遞歸查詢,把解析結(jié)果返回給用戶主機(jī)。
2,僅限轉(zhuǎn)發(fā):本地DNS服務(wù)器接收到來(lái)自用戶主機(jī)的域名解析請(qǐng)求后,將該請(qǐng)求轉(zhuǎn)發(fā)給指定的遞歸解析服務(wù)器,由該服務(wù)器進(jìn)行解析,并將解析結(jié)果返回給本地DNS服務(wù)器,本地DNS服務(wù)器再將結(jié)果返回給用戶主機(jī)。若該指定的遞歸解析服務(wù)器不可達(dá),給本地DNS服務(wù)器返回解析失敗的信息;本地DNS服務(wù)器不會(huì)再進(jìn)行遞歸查詢,而是直接將解析失敗信息返回給用戶主機(jī)。
3,僅限遞歸:本地DNS服務(wù)器接收到來(lái)自用戶主機(jī)的域名解析請(qǐng)求后,由本地DNS服務(wù)器直接進(jìn)行遞歸解析,并將遞歸解析結(jié)果返回給用戶主機(jī)。不論是否解析成功,都不把請(qǐng)求轉(zhuǎn)發(fā)給其他遞歸解析服務(wù)器去解析。
上述轉(zhuǎn)發(fā)優(yōu)先和僅限轉(zhuǎn)發(fā)的兩種解析方式,由于其完全信任指定的遞歸解析服務(wù)器的解析結(jié)果,一旦指定的遞歸解析服務(wù)器受到污染,用戶主機(jī)就會(huì)得到被污染的地址或者遭到域名劫持。此外,本地DNS服務(wù)器只對(duì)遞歸解析服務(wù)器的解析結(jié)果進(jìn)行轉(zhuǎn)發(fā),不能對(duì)結(jié)果進(jìn)行優(yōu)化,例如,用戶主機(jī)所歸屬線路是聯(lián)通,而遞歸解析服務(wù)器的解析結(jié)果是電信的IP地址,本地DNS服務(wù)器就會(huì)將該電信的IP地址發(fā)送到用戶主機(jī),用戶主機(jī)只能進(jìn)行跨運(yùn)營(yíng)商的網(wǎng)絡(luò)訪問(wèn),造成訪問(wèn)路徑的迂回,增加了訪問(wèn)延時(shí)和丟包風(fēng)險(xiǎn),嚴(yán)重影響用戶的網(wǎng)絡(luò)訪問(wèn)體驗(yàn)。
因此,在設(shè)備條件允許的情況下,通常推薦采用遞歸的方式對(duì)域名進(jìn)行解析,不僅能夠避免地址污染,還能針對(duì)解析結(jié)果進(jìn)行優(yōu)化。但是,上述的僅限遞歸方式又因?yàn)槠渲贿M(jìn)行遞歸,所以當(dāng)被查詢域名的權(quán)威DNS配置出現(xiàn)問(wèn)題、安全防護(hù)策略配置不當(dāng)?shù)惹闆r時(shí),本地DNS服務(wù)器無(wú)法通過(guò)遞歸解析獲取解析結(jié)果,就會(huì)導(dǎo)致即使該域名所在的主機(jī)正常工作,但是由于該域名無(wú)法被解析,用戶還是不能正常訪問(wèn)該域名主機(jī)或資源。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的是提供一種遞歸優(yōu)先的域名系統(tǒng)DNS二次遞歸解析的方法,該方法是首先由本地DNS服務(wù)器檢查本地是否已經(jīng)緩存有解析結(jié)果,若有,則直接應(yīng)答并結(jié)束解析流程,若無(wú),則優(yōu)先進(jìn)行遞歸解析,避免用戶主機(jī)受到地址污染、域名劫持等的影響;只有在遞歸失敗的情況下,本地DNS服務(wù)器才會(huì)將域名解析請(qǐng)求轉(zhuǎn)發(fā)到預(yù)先配置的外部遞歸解析服務(wù)器列表上繼續(xù)進(jìn)行二次解析。由于外部遞歸解析服務(wù)器上存儲(chǔ)有緩存記錄、且各自網(wǎng)絡(luò)節(jié)點(diǎn)位置不同,因此能夠完成正常解析操作,不會(huì)出現(xiàn)因被查詢域名的權(quán)威DNS配置出錯(cuò)而導(dǎo)致遞歸失敗,用戶主機(jī)就無(wú)法訪問(wèn)域名的情況。
為了達(dá)到上述目的,本發(fā)明提供了一種域名系統(tǒng)DNS(Domain Name System)二次遞歸解析的方法,其特征在于:首先在本地DNS服務(wù)器配置外部遞歸解析服務(wù)器列表;本地DNS服務(wù)器接收到用戶主機(jī)的域名解析請(qǐng)求后,檢查本地是否已經(jīng)緩存有解析結(jié)果,若有,則直接應(yīng)答并結(jié)束該域名解析流程;若無(wú),則進(jìn)行遞歸解析;若其遞歸解析失敗,再將該域名解析請(qǐng)求順序轉(zhuǎn)發(fā)到外部遞歸解析服務(wù)器列表中的一臺(tái)或多臺(tái)外部遞歸解析服務(wù)器進(jìn)行二次解析;本地DNS服務(wù)器接收外部遞歸解析服務(wù)器返回的解析結(jié)果,由本地DNS服務(wù)器將解析結(jié)果發(fā)送到用戶主機(jī),本地DNS服務(wù)器將解析結(jié)果緩存,以備后續(xù)查詢時(shí)能夠快速應(yīng)答;所述方法包括下述操作步驟:
步驟1,本地DNS服務(wù)器配置外部遞歸解析服務(wù)器的操作順序列表;
步驟2,用戶主機(jī)向本地DNS服務(wù)器發(fā)送域名解析請(qǐng)求;
步驟3,本地DNS服務(wù)器接收到該域名解析請(qǐng)求后,檢查本地是否已經(jīng)緩存有解析結(jié)果,若有,則直接應(yīng)答并結(jié)束該域名解析流程;如無(wú),則進(jìn)行遞歸查詢;
步驟4,本地DNS服務(wù)器判斷其執(zhí)行的遞歸查詢是否成功,若為查詢成功,則將接收到的查詢結(jié)果返回給用戶主機(jī),并緩存解析結(jié)果,結(jié)束該域名解析流程;若為查詢失敗,即沒(méi)有找到該域名所對(duì)應(yīng)的IP地址,則執(zhí)行后續(xù)步驟5;
步驟5,本地DNS服務(wù)器將該域名解析請(qǐng)求轉(zhuǎn)發(fā)到所配置的外部遞歸解析服務(wù)器列表中的第一臺(tái)外部遞歸解析服務(wù)器,由該第一臺(tái)外部遞歸解析服務(wù)器執(zhí)行域名解析;
步驟6,本地DNS服務(wù)器接收并判斷外部遞歸解析服務(wù)器的解析結(jié)果,若解析成功,執(zhí)行后續(xù)步驟7;若解析失敗,本地DNS服務(wù)器就將域名解析請(qǐng)求按照設(shè)定操作順序轉(zhuǎn)發(fā)給下一臺(tái)外部遞歸解析服務(wù)器進(jìn)行遞歸解析;直到其中某一臺(tái)外部遞歸解析服務(wù)器解析成功,或者所有外部遞歸解析服務(wù)器都解析失敗時(shí),才將其遞歸解析結(jié)果返回給本地DNS服務(wù)器;
步驟7,本地DNS服務(wù)器將遞歸解析服務(wù)器的解析結(jié)果返回給用戶主機(jī),并緩存解析結(jié)果。
本發(fā)明是一種域名系統(tǒng)DNS二次遞歸解析方法,它的優(yōu)點(diǎn)是:
本發(fā)明方法優(yōu)先在本地DNS服務(wù)器對(duì)用戶主機(jī)的域名解析請(qǐng)求進(jìn)行解析,只有在本地DNS服務(wù)器沒(méi)有相應(yīng)緩存、且遞歸解析失敗時(shí),再轉(zhuǎn)發(fā)至預(yù)先配置的一臺(tái)或多臺(tái)外部遞歸解析服務(wù)器進(jìn)行解析,避免了現(xiàn)有的轉(zhuǎn)發(fā)優(yōu)先和僅限轉(zhuǎn)發(fā)兩種方式存在的DNS污染的風(fēng)險(xiǎn),能夠避免用戶主機(jī)遭受域名劫持。本發(fā)明方法可以優(yōu)化解析結(jié)果,避免用戶主機(jī)需要跨運(yùn)營(yíng)商網(wǎng)絡(luò)進(jìn)行訪問(wèn)時(shí),造成的訪問(wèn)時(shí)延。本發(fā)明方法是在本地DNS服務(wù)器沒(méi)有相應(yīng)緩存、且遞歸解析失敗時(shí),才將訪問(wèn)請(qǐng)求轉(zhuǎn)發(fā)到外部遞歸解析服務(wù)器進(jìn)行解析,也改變了現(xiàn)有技術(shù)中的僅限遞歸解析方式,避免因要解析的域名的權(quán)威DNS配置錯(cuò)誤、安全防護(hù)策略配置不當(dāng)?shù)惹闆r時(shí),從而導(dǎo)致本地DNS服務(wù)器遞歸查詢失敗,用戶主機(jī)無(wú)法正常訪問(wèn)網(wǎng)絡(luò)域名的情況。
此外,本發(fā)明方法操作步驟簡(jiǎn)單、容易、便利,且不需要增加額外硬件,只需更改本地DNS服務(wù)器的配置與功能即可。再者,本發(fā)明實(shí)現(xiàn)了遞歸解析的解析方法備份:例如,當(dāng)本地DNS服務(wù)器設(shè)置主網(wǎng)絡(luò)在使用遞歸、網(wǎng)絡(luò)故障(上級(jí)路由中斷等)時(shí),以轉(zhuǎn)發(fā)查詢作為備份??傊?,本發(fā)明具有很好的推廣應(yīng)用前景。
附圖說(shuō)明
圖1是本發(fā)明一種域名系統(tǒng)DNS二次遞歸解析方法的操作步驟流程圖。
圖2是本發(fā)明方法實(shí)施例中,本地DNS服務(wù)器遞歸查詢成功的圖例。
圖3是本發(fā)明方法實(shí)施例中,本地DNS服務(wù)器遞歸失敗,轉(zhuǎn)發(fā)到遞歸解析服務(wù)器進(jìn)行解析的圖例。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明方法作進(jìn)一步的詳細(xì)描述。
本發(fā)明是一種遞歸優(yōu)先的域名系統(tǒng)DNS二次遞歸解析域名的方法,該方法是:首先在本地DNS服務(wù)器配置外部遞歸解析服務(wù)器列表;本地DNS服務(wù)器接收到用戶主機(jī)的域名解析請(qǐng)求后,先檢查本地是否已經(jīng)緩存有解析結(jié)果,若有,則直接應(yīng)答并結(jié)束該域名解析流程;若無(wú),則由本地DNS服務(wù)器進(jìn)行遞歸解析,避免用戶主機(jī)受到地址污染和域名劫持的影響;只有在其遞歸解析失敗時(shí),才將該域名解析請(qǐng)求轉(zhuǎn)發(fā)到外部遞歸解析服務(wù)器列表中的一臺(tái)或多臺(tái)外部遞歸解析服務(wù)器進(jìn)行二次解析;本地DNS服務(wù)器接收外部遞歸解析服務(wù)器返回的解析結(jié)果,將解析結(jié)果發(fā)送到用戶主機(jī)并將解析結(jié)果緩存,以備后續(xù)查詢時(shí)能夠快速應(yīng)答。由于遞歸解析服務(wù)器存儲(chǔ)有緩存記錄,因此可正常進(jìn)行解析,不會(huì)出現(xiàn)因被查詢域名的權(quán)威DNS配置出錯(cuò)、安全防護(hù)策略配置不當(dāng)?shù)惹闆r時(shí)導(dǎo)致遞歸失敗,用戶主機(jī)就無(wú)法訪問(wèn)域名的情況。
參見(jiàn)圖1,介紹本發(fā)明方法的具體操作步驟:
步驟1,本地DNS服務(wù)器配置外部遞歸解析服務(wù)器的操作順序列表;
步驟2,用戶主機(jī)向本地DNS服務(wù)器發(fā)送域名解析請(qǐng)求。
步驟3,本地DNS服務(wù)器接收到該域名解析請(qǐng)求后,檢查本地是否已經(jīng)緩存有解析結(jié)果,若有,則直接應(yīng)答并結(jié)束該域名解析流程;如無(wú),則進(jìn)行遞歸查詢。在該步驟3中,本地DNS服務(wù)器執(zhí)行的遞歸查詢包括下列操作內(nèi)容:
(31)本地DNS服務(wù)器向DNS根服務(wù)器詢問(wèn)企圖解析的域名對(duì)應(yīng)的IP地址。
(32)DNS根服務(wù)器返回企圖解析的域名的高層域名服務(wù)器的IP地址。
(33)本地DNS服務(wù)器向該企圖解析的域名的高層域名服務(wù)器詢問(wèn)該域名對(duì)應(yīng)的IP地址。
(34)該域名的高層域名服務(wù)器返回該域名的域服務(wù)器IP地址。
(35)本地DNS服務(wù)器向該域名的域服務(wù)器詢問(wèn)該域名對(duì)應(yīng)的IP地址,所述域名的域服務(wù)器返回企圖解析的該域名的對(duì)應(yīng)地址。
步驟4,本地DNS服務(wù)器判斷其執(zhí)行的遞歸查詢是否成功(即域名的域服務(wù)器成功返回該域名對(duì)應(yīng)的IP地址),若為查詢成功,則將接收到的查詢結(jié)果返回給用戶主機(jī),并緩存解析結(jié)果,結(jié)束該域名解析流程;若為查詢失敗(即域名的域服務(wù)器沒(méi)有找到該域名對(duì)應(yīng)的IP地址),則執(zhí)行后續(xù)步驟5。
步驟5,本地DNS服務(wù)器將該域名解析請(qǐng)求轉(zhuǎn)發(fā)到所配置的外部遞歸解析服務(wù)器列表中的第一臺(tái)外部遞歸解析服務(wù)器,由該第一臺(tái)外部遞歸解析服務(wù)器執(zhí)行域名解析。
步驟6,本地DNS服務(wù)器接收并判斷外部遞歸解析服務(wù)器的解析結(jié)果,若解析成功,執(zhí)行后續(xù)步驟7;若解析失敗,本地DNS服務(wù)器就將域名解析請(qǐng)求按照設(shè)定操作順序轉(zhuǎn)發(fā)給下一臺(tái)外部遞歸解析服務(wù)器進(jìn)行遞歸解析;直到其中某一臺(tái)外部遞歸解析服務(wù)器解析成功,或者所有外部遞歸解析服務(wù)器都解析失敗時(shí),才將其遞歸解析結(jié)果返回給本地DNS服務(wù)器。
步驟7,本地DNS服務(wù)器將遞歸解析服務(wù)器的解析結(jié)果返回給用戶主機(jī),并緩存解析結(jié)果。
本發(fā)明中的本地DNS服務(wù)器支持設(shè)置二次遞歸選項(xiàng),即能夠設(shè)置外部遞歸服務(wù)器的操作順序列表,并緩存解析結(jié)果。
參見(jiàn)圖2和圖3,這兩個(gè)附圖分別用圖例說(shuō)明了在本發(fā)明方法實(shí)施例中,本地DNS服務(wù)器遞歸查詢成功時(shí)的各個(gè)操作步驟和本地DNS服務(wù)器遞歸失敗,轉(zhuǎn)發(fā)到外部遞歸解析服務(wù)器進(jìn)行解析時(shí)的各個(gè)操作步驟。
本發(fā)明方法已經(jīng)在北京郵電大學(xué)校園網(wǎng)四期優(yōu)化的過(guò)程中,進(jìn)行了仿真實(shí)施試驗(yàn),當(dāng)時(shí)申請(qǐng)人在校園網(wǎng)中部署了一套本發(fā)明遞歸優(yōu)先的DNS域名解析方法,也就是在北京郵電大學(xué)的校園網(wǎng)絡(luò)中,由本地DNS服務(wù)器首先對(duì)用戶主機(jī)的上網(wǎng)查詢請(qǐng)求進(jìn)行解析,只有在解析失敗時(shí),再轉(zhuǎn)發(fā)至外部遞歸解析服務(wù)器進(jìn)行解析,經(jīng)過(guò)長(zhǎng)達(dá)數(shù)月的實(shí)施試驗(yàn),實(shí)驗(yàn)結(jié)果證明,本發(fā)明能夠有效提升和改進(jìn)用戶的上網(wǎng)體驗(yàn),實(shí)現(xiàn)了發(fā)明目的。