專利名稱:域名系統(tǒng)解析方法、裝置及客戶端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及域名解析技術(shù)領(lǐng)域,特別是涉及一種域名系統(tǒng)解析方法、裝置及客戶端。
背景技術(shù):
域名系統(tǒng)(DNS, Domain Name System)是一種用于TCP/IP應(yīng)用程序的分布式數(shù)據(jù)庫(kù),它提供主機(jī)名字和IP地址之間的轉(zhuǎn)換信息,即對(duì)訪問(wèn)請(qǐng)求進(jìn)行域名解析。當(dāng)基于Windows的域名系統(tǒng)客戶端從DNS服務(wù)器中接收查詢的成功回復(fù)時(shí),該客戶端會(huì)將查詢結(jié)果臨時(shí)存儲(chǔ)在本地緩存中。當(dāng)應(yīng)用程序(如Windows Internet Explorer)向Windows客戶端提交請(qǐng)求以解析DNS名稱時(shí),Windows客戶端將針對(duì)匹配名稱檢查本地緩存。如果 Windows客戶端在本地緩存中找到與該DNS名稱對(duì)應(yīng)的IP (Internet Protocol)地址,則將使用本地緩存中的數(shù)據(jù)來(lái)回復(fù)應(yīng)用程序。如果該緩存中沒(méi)有DNS名稱對(duì)應(yīng)的IP地址,則會(huì)將該應(yīng)用程序的查詢轉(zhuǎn)發(fā)到DNS服務(wù)器,并將結(jié)果傳送到應(yīng)用程序,同時(shí)并將結(jié)果存儲(chǔ)在本地緩存中。此種在向DNS服務(wù)器發(fā)送查詢之前檢查本地緩存的方式可以提高Windows客戶端內(nèi)的性能,并可減少DNS客戶端和DNS服務(wù)器之間的網(wǎng)絡(luò)通信。除了包含從DNS服務(wù)器中檢索得出的數(shù)據(jù),本地DNS客戶端緩存還可以預(yù)加載客戶端計(jì)算機(jī)文件中存儲(chǔ)的名稱解析信息。但是,Windows客戶端的本地緩存會(huì)將IP地址存儲(chǔ)在hosts文件中,惡意程序可以直接向hosts文件中插入假的DNS解析信息,劫持網(wǎng)絡(luò)通訊造成信息泄露。因?yàn)檫@種對(duì)于文件的惡意攻擊的實(shí)現(xiàn)較為簡(jiǎn)單,而且可以采用文件保護(hù)或重寫機(jī)制,使得反惡意軟件不能連接網(wǎng)絡(luò),從而使基于云的查殺機(jī)制失效。因此Windows客戶端的本地緩存很容易被惡意攻擊,如被插入非法的IP地址,并在本地緩存中修改域名與IP地址的對(duì)應(yīng)關(guān)系,將域名與非法的IP地址對(duì)應(yīng),影響用戶網(wǎng)絡(luò)安全。另外,Windows應(yīng)用層網(wǎng)絡(luò)很多參數(shù)是通過(guò)注冊(cè)表來(lái)配置的,惡意程序可以隨意修改,使得網(wǎng)絡(luò)失效或服務(wù)不能啟用或篡改網(wǎng)絡(luò)配置,從而破壞正常網(wǎng)絡(luò)應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種域名系統(tǒng)解析方法、裝置及客戶端,能滿足緩存解析的域名系統(tǒng)應(yīng)答需求,同時(shí)可以避免受到惡意代碼對(duì)緩存的攻擊。為了解決上述問(wèn)題,本發(fā)明公開了一種域名系統(tǒng)解析方法,包括以下步驟解析DNS應(yīng)答,獲取解析數(shù)據(jù);將解析數(shù)據(jù)寫入內(nèi)存中;接收DNS查詢請(qǐng)求后,從內(nèi)存中查詢是否存在與所述DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù),若存在,則將查詢的解析數(shù)據(jù)傳回,反之,則向DNS服務(wù)器提出查詢請(qǐng)求。進(jìn)一步地,在將解析數(shù)據(jù)寫入內(nèi)存中后,所述方法還包括對(duì)寫入內(nèi)存的解析數(shù)據(jù)進(jìn)行加密;
對(duì)在內(nèi)存中查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)進(jìn)行解密。進(jìn)一步地,所述方法還包括將所述解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間寫入內(nèi)存中,根據(jù)所述解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間對(duì)內(nèi)存中的解析數(shù)據(jù)進(jìn)行老化處理。進(jìn)一步地,所述對(duì)解析數(shù)據(jù)進(jìn)行老化處理包括以下步驟獲取解析數(shù)據(jù)的插入時(shí)間及當(dāng)前的系統(tǒng)時(shí)間;
計(jì)算系統(tǒng)時(shí)間與解析數(shù)據(jù)插入時(shí)間的時(shí)間差;獲取解析數(shù)據(jù)的老化時(shí)間,并與時(shí)間差進(jìn)行比較,若時(shí)間差大于老化時(shí)間,則刪除該解析數(shù)據(jù)。進(jìn)一步地,所述方法還包括確定老化機(jī)制,根據(jù)老化機(jī)制在緩存滿時(shí)刪除解析數(shù)據(jù)。進(jìn)一步地,所述在緩存滿時(shí)刪除的解析數(shù)據(jù)包括到了老化時(shí)間和未到老化時(shí)間的解析數(shù)據(jù)。進(jìn)一步地,所述老化機(jī)制包括命中率最高優(yōu)先保留機(jī)制,預(yù)先設(shè)定命中率閾值,如果累計(jì)命中次數(shù)低于預(yù)定的閾值,則刪除該解析數(shù)據(jù);或最近最先使用優(yōu)先保留機(jī)制,預(yù)先設(shè)定最近訪問(wèn)時(shí)間閾值,如果最近一次訪問(wèn)時(shí)間大于預(yù)定的閾值,則刪除該解析數(shù)據(jù);或隨機(jī)保留機(jī)制,隨機(jī)刪除其中的解析數(shù)據(jù)。進(jìn)一步地,所述解析數(shù)據(jù)的命中率通過(guò)如下方式累計(jì)若在內(nèi)存中查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù),返回結(jié)果給請(qǐng)求者的同時(shí)將該解析數(shù)據(jù)的命中率加一。為了解決上述問(wèn)題,本發(fā)明還公開了一種域名系統(tǒng)解析裝置,其特征在于,包括解析模塊,對(duì)DNS應(yīng)答進(jìn)行解析并獲取解析數(shù)據(jù);存儲(chǔ)模塊,將獲取的解析數(shù)據(jù)寫入內(nèi)存中;查詢模塊,根據(jù)DNS查詢請(qǐng)求在內(nèi)存中查詢是否存在與所述DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)。進(jìn)一步地,所述裝置還包括加密模塊,用于對(duì)寫入內(nèi)存的解析數(shù)據(jù)進(jìn)行加密;解密模塊,對(duì)在內(nèi)存中查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)進(jìn)行解密。進(jìn)一步地,所述裝置還包括時(shí)間模塊,用于將解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間寫入內(nèi)存中;老化處理模塊,根據(jù)時(shí)間模塊記載的解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間對(duì)內(nèi)存中的解析數(shù)據(jù)進(jìn)行老化處理。進(jìn)一步地,所述裝置還包括老化機(jī)制確定模塊,用于確定老化機(jī)制,在緩存滿時(shí)刪除解析數(shù)據(jù)。進(jìn)一步地,所述裝置還包括命中率最高優(yōu)先保留機(jī)制模塊,用于根據(jù)命中率刪除累計(jì)命中次數(shù)低于預(yù)定閾值的解析數(shù)據(jù);或
最近最先使用優(yōu)先保留機(jī)制模塊,用于根據(jù)訪問(wèn)時(shí)間刪除最近一次訪問(wèn)時(shí)間大于預(yù)定閾值的解析數(shù)據(jù);或隨機(jī)保留機(jī)制模塊,用于隨機(jī)刪除解析數(shù)據(jù)。為了解決上述問(wèn)題,本發(fā)明還公開了一種客戶端,其特征在于,包括如前所述的域名系統(tǒng)解析裝置。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明的域名系統(tǒng)解析方法、裝置及客戶端通過(guò)將緩存數(shù)據(jù)寫入內(nèi)存的方法來(lái)實(shí)現(xiàn)緩存,因?yàn)椴捎脙?nèi)存存儲(chǔ)緩存的隱蔽性較好,所以通過(guò)將緩存設(shè)置在內(nèi)存中,可以滿足緩存解析的DNS應(yīng)答需求,同時(shí)可以避免惡意代碼對(duì)緩存的攻擊。其次,對(duì)緩存數(shù)據(jù)進(jìn)行加密后,增加了數(shù)據(jù)的安全性,即使內(nèi)存被惡意程序讀取,因?yàn)闊o(wú)法解密緩存數(shù)據(jù),也就無(wú)法修改數(shù)據(jù),因此也可以避免惡意程序?qū)彺娴墓簟?
另外,根據(jù)解析數(shù)據(jù)中的TTL字段值精確實(shí)現(xiàn)老化處理,實(shí)現(xiàn)了安全、高效、實(shí)用的緩存刷新機(jī)制。當(dāng)緩存滿時(shí),支持按命中率最高優(yōu)先保留、最近最先使用優(yōu)先保留、隨機(jī)保留三種老化機(jī)制,具有一定的靈活性。
圖I是本發(fā)明的域名系統(tǒng)解析方法實(shí)施例一的流程圖;圖2是本發(fā)明的域名系統(tǒng)解析方法實(shí)施例二的流程圖;圖3是本發(fā)明的域名系統(tǒng)解析方法實(shí)施例三的流程圖;圖4是本發(fā)明的老化處理的流程圖;圖5是本發(fā)明的域名系統(tǒng)解析裝置實(shí)施例一的結(jié)構(gòu)示意圖;圖6是本發(fā)明的域名系統(tǒng)解析裝置實(shí)施例二的結(jié)構(gòu)示意圖;圖7是本發(fā)明的域名系統(tǒng)解析裝置實(shí)施例三的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。參照?qǐng)D1,示出本發(fā)明的域名系統(tǒng)解析方法實(shí)施例一,包括以下步驟步驟101,解析DNS應(yīng)答,獲取解析數(shù)據(jù)。當(dāng)用戶通過(guò)客戶端向DNS服務(wù)器提交請(qǐng)求,請(qǐng)求解析DNS域名時(shí),DNS服務(wù)器會(huì)將解析后的IP地址返回給客戶端。通過(guò)解析客戶端與DNS服務(wù)器端之間的應(yīng)答,可以獲取到DNS的解析數(shù)據(jù),即,DNS域名和與該域名對(duì)應(yīng)的IP地址的對(duì)應(yīng)關(guān)系。解析數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)可以預(yù)先定義,例如,struct hostent等。步驟102,將解析數(shù)據(jù)寫入內(nèi)存中解析數(shù)據(jù)。解析數(shù)據(jù)可以存儲(chǔ)在內(nèi)存中維護(hù)的某一數(shù)據(jù)表中,也可以采用動(dòng)態(tài)申請(qǐng)內(nèi)容,存儲(chǔ)在對(duì)應(yīng)的內(nèi)存中,每一組緩存解析數(shù)據(jù)都對(duì)應(yīng)一個(gè)緩存節(jié)點(diǎn),以便后續(xù)對(duì)緩存解析數(shù)據(jù)的處理。申請(qǐng)動(dòng)態(tài)內(nèi)存后,將解析數(shù)據(jù)根據(jù)內(nèi)存的數(shù)據(jù)結(jié)構(gòu)填入相應(yīng)字段,從而將解析數(shù)據(jù)寫入內(nèi)存中對(duì)應(yīng)的緩存節(jié)點(diǎn)中。內(nèi)存的數(shù)據(jù)結(jié)構(gòu)可以預(yù)先設(shè)定,例如,內(nèi)存的數(shù)據(jù)結(jié)構(gòu)可以為 Phostent_Cache_t 的內(nèi)存。
下面以解析數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)為struct hostent,內(nèi)存的數(shù)據(jù)結(jié)構(gòu)為Phostent_Cache_t為例對(duì)將解析數(shù)據(jù)寫入內(nèi)存中對(duì)應(yīng)的緩存節(jié)點(diǎn)中的過(guò)程進(jìn)行說(shuō)明遞歸釋放成員變量m_pHost (數(shù)據(jù)類型為Phostent_Cache_t);動(dòng)態(tài)分配數(shù)據(jù)結(jié)構(gòu)類型為hostent_Cache_t并賦值給成員變量m_pHost ;若分配成功,則清零,否則返回FALSE ;動(dòng)態(tài)申請(qǐng)數(shù)據(jù)結(jié)構(gòu)類型為struct hostent并賦值給m_pHost-> host ;若分配成功,則清零,否則返回FALSE ;長(zhǎng)度和地址類型相應(yīng)賦值為sizeof (unsigned long)和AF_INET ; m_pHost- > host- > h_length = sizeof (unsigned long); m_pHost- > host- > h_addrtype = AF_INET ;獲取OfficialName字段長(zhǎng)度,分配長(zhǎng)度加I的字符串?dāng)?shù)組,并將OfficialName賦值給 m_pHost- > host- > h_name ;申請(qǐng)類型為char*的指針數(shù)組,并賦值給m_pHost- > host- > h_addr_listm_pHost- > host- > h_addr_list = new char*[Dff_DNS_MAX_IP];若分配成功,則清零,否則返回FALSE ;循環(huán)賦值解析后的IP地址給m_pHost- > host- > h_addr_list數(shù)組;將TTL 賦值給 m_pHost_ > m_ttl ;調(diào)用SetInsertCacheTime (m_pHost),設(shè)置插入緩存時(shí)的時(shí)間戮。返回TRUE。步驟103,接收DNS查詢請(qǐng)求后,從內(nèi)存中查詢是否存在與所述DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)若存在,則將查詢的解析數(shù)據(jù)傳回,反之,則向DNS服務(wù)器提出查詢請(qǐng)求。當(dāng)下一次DNS查詢請(qǐng)求到達(dá)時(shí),根據(jù)關(guān)鍵字,調(diào)用對(duì)應(yīng)的函數(shù)查詢?cè)揇NS查詢請(qǐng)求對(duì)應(yīng)的解析是否在緩存中,若查詢到,則對(duì)經(jīng)過(guò)加密保存的解析數(shù)據(jù)進(jìn)行解密,并返回給請(qǐng)求者,若未查詢到,則向DNS服務(wù)器提出查詢請(qǐng)求。因?yàn)閻阂獯a對(duì)內(nèi)存的攻擊難度會(huì)大于對(duì)文件的攻擊難度,所以通過(guò)將緩存設(shè)置在內(nèi)存中,可以滿足緩存解析的DNS應(yīng)答需求,同時(shí)可以避免惡意代碼對(duì)緩存的攻擊。參照?qǐng)D2,示出本發(fā)明的域名系統(tǒng)的緩存方法實(shí)施例二,進(jìn)一步地,在實(shí)施例二在實(shí)施例一的步驟102之后還包括以下步驟步驟201,對(duì)寫入內(nèi)存的解析數(shù)據(jù)進(jìn)行加密。在將解析數(shù)據(jù)根據(jù)內(nèi)存的數(shù)據(jù)結(jié)構(gòu)填入相應(yīng)字段后,對(duì)該數(shù)據(jù)結(jié)構(gòu)的內(nèi)存進(jìn)行加密,并插入到map中。當(dāng)下一次DNS查詢請(qǐng)求到達(dá)時(shí),根據(jù)關(guān)鍵字,調(diào)用對(duì)應(yīng)的函數(shù)查詢?cè)揇NS查詢請(qǐng)求對(duì)應(yīng)的解析是否在緩存中,若查詢到,則對(duì)經(jīng)過(guò)加密保存的解析數(shù)據(jù)進(jìn)行解密,并返回給請(qǐng)求者。通過(guò)對(duì)緩存數(shù)據(jù)進(jìn)行加密后,增加了數(shù)據(jù)的安全性,即使內(nèi)存被惡意程序讀取,因?yàn)闊o(wú)法解密緩存數(shù)據(jù),也就無(wú)法修改數(shù)據(jù),因此也可以避免惡意程序?qū)彺娴墓?。進(jìn)一步地,在本發(fā)明實(shí)施例一和實(shí)施例二的步驟101之前,還可以包括定義緩存節(jié)點(diǎn)描述符。緩存節(jié)點(diǎn)描述符中定義了緩存節(jié)點(diǎn)中解析數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)、老化時(shí)間及插入時(shí)間。對(duì)解析數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行定義,可以校驗(yàn)解析數(shù)據(jù)的完整性和正確性。老化時(shí)間及插入時(shí)間等可供對(duì)解析數(shù)據(jù)進(jìn)行老化處理時(shí)使用。具體的,定義緩存節(jié)點(diǎn)描述符方式如下
typedef struct S T_ho stent_C ache_t {
struct hostent *host; //host
time_tm_ttl; //TTL of parsed DNS reply
time_tm_InsertCacheTime ; //Current insert cache time
DWORDm_HitCount; //Hit Count
Time_tm_LastAccessTime ; //Last access time
}hostent_Cache_t,*Phostent_Cache_t;其中,host字段數(shù)據(jù)結(jié)構(gòu)是struct hostent*,用來(lái)保存DNS解析應(yīng)答封裝類gethostbyname函數(shù)返回的數(shù)據(jù)結(jié)構(gòu)。m_ttl字段用來(lái)保存當(dāng)前DNS解析應(yīng)答中的老化時(shí)間(單位秒)。m_InsertCacheTime字段用來(lái)保存當(dāng)前插入緩存的時(shí)間,以便后續(xù)查詢時(shí)老化校驗(yàn)。參照?qǐng)D3,進(jìn)一步地,本發(fā)明的前述域名系統(tǒng)的解析方法實(shí)施例中還可以包括步驟301,根據(jù)解析數(shù)據(jù)老化時(shí)間及插入時(shí)間對(duì)解析數(shù)據(jù)進(jìn)行老化處理,實(shí)現(xiàn)緩存刷新機(jī)制。參照?qǐng)D4,其中,老化處理可以包括以下步驟步驟SI,獲取解析數(shù)據(jù)的插入時(shí)間及當(dāng)前的系統(tǒng)時(shí)間。通過(guò)關(guān)鍵字可以從內(nèi)存中獲取對(duì)應(yīng)的解析數(shù)據(jù),然后讀取解析數(shù)據(jù)中的插入時(shí)間,同時(shí)可以通過(guò)調(diào)用系統(tǒng)函數(shù)的方式獲取當(dāng)前的系統(tǒng)時(shí)間。步驟S2,計(jì)算系統(tǒng)時(shí)間與解析數(shù)據(jù)插入時(shí)間的時(shí)間差。步驟S3,獲取解析數(shù)據(jù)的老化時(shí)間,并與時(shí)間差進(jìn)行比較,如果時(shí)間差大于老化時(shí)間,刪除該解析數(shù)據(jù)。具體的,根據(jù)前述定義的緩存節(jié)點(diǎn)描述符來(lái)實(shí)現(xiàn),老化處理的實(shí)現(xiàn)過(guò)程為根據(jù)關(guān)鍵字查詢map,獲得解析數(shù)據(jù),調(diào)用time函數(shù),得到當(dāng)前系統(tǒng)時(shí)間,并賦值給變量RefreshCalcTime ;變量RefreshCalcTime減去節(jié)點(diǎn)中當(dāng)時(shí)插入緩存的節(jié)點(diǎn)時(shí)間戳,并把差值賦值給變量6]^口86(1111116;獲得解析數(shù)據(jù)中當(dāng)時(shí)0吧應(yīng)答中的1'1^(1:;[1116 to live,老化時(shí)間)時(shí)間戳,如果elapsedTime大于等于TTL時(shí)間戳,則說(shuō)明該記錄達(dá)到老化時(shí)間,將該節(jié)點(diǎn)從緩存中刪除,重新發(fā)起DNS解析請(qǐng)求。通過(guò)這種老化處理,可以刪除緩存map中舊的解析數(shù)據(jù),從而保證緩存map能夠存入新的解析數(shù)據(jù)。采用前述的到達(dá)老化時(shí)間刪除解析數(shù)據(jù)的方式,可能會(huì)出現(xiàn)當(dāng)緩存map滿時(shí),其中的解析數(shù)據(jù)都未達(dá)到老化時(shí)間,此時(shí)則可以通過(guò)自定義的老化機(jī)制來(lái)刪除某些解析數(shù)據(jù),以便插入新的DNS解析數(shù)據(jù)。一般的老化機(jī)制可以包括按命中率最高優(yōu)先保留、最近最先使用優(yōu)先保留、隨機(jī)保留三種。命中率最高優(yōu)先保留,可以預(yù)先設(shè)定命中率閾值,如果累計(jì)命中次數(shù)低于預(yù)定的閾值,則刪除該節(jié)點(diǎn)。其中,命中率可以通過(guò)當(dāng)一次DNS查詢請(qǐng)求到達(dá)時(shí),若查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析在緩存中,返回結(jié)果給請(qǐng)求者的同時(shí)將該解析數(shù)據(jù)的命中率加I的方式來(lái)累計(jì)。最近最先使用優(yōu)先保留,通過(guò)預(yù)先設(shè)定最近訪問(wèn)時(shí)間閾值,如果最近一次訪問(wèn)時(shí)間大于預(yù)定的閾值,則刪除該節(jié)點(diǎn)。隨機(jī)保留,則是隨機(jī)刪除其中的節(jié)點(diǎn)。前述的老化處理和老化機(jī)制的設(shè)定可以方便實(shí)現(xiàn)緩存刷新及老化。根據(jù)TTL字段值精確實(shí)現(xiàn)老化處理,實(shí)現(xiàn)了安全、高效、實(shí)用的緩存刷新機(jī)制。同時(shí),當(dāng)緩存滿時(shí),支持按命中率最高優(yōu)先保留、最近最先使用優(yōu)先保留、隨機(jī)保留三種老化機(jī)制,具有一定的靈活 性。可以理解,對(duì)于解析數(shù)據(jù)的刪除,也可以只通過(guò)前述確定的命中率最高優(yōu)先保留、最近最先使用優(yōu)先保留、隨機(jī)保留其中一種老化機(jī)制來(lái)實(shí)現(xiàn),即不通過(guò)到達(dá)老化時(shí)間來(lái)刪除解析數(shù)據(jù),而是在緩存滿時(shí),根據(jù)確定的老化機(jī)制來(lái)刪除其中的解析數(shù)據(jù),不管是否到達(dá)老化時(shí)間。參照?qǐng)D5,示出本發(fā)明實(shí)施例一的域名系統(tǒng)的緩存裝置,包括解析模塊10、存儲(chǔ)模塊20和查詢模塊30。解析模塊10,用于對(duì)DNS應(yīng)答進(jìn)行解析并獲取解析數(shù)據(jù)。存儲(chǔ)模塊20,用于將獲取的解析數(shù)據(jù)寫入內(nèi)存中。查詢模塊30,根據(jù)DNS查詢請(qǐng)求在內(nèi)存中查詢是否存在與所述DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)參照?qǐng)D6,示出本發(fā)明實(shí)施例二的域名系統(tǒng)解析裝置,還包括加密模塊50及解密模塊60。加密模塊,用于對(duì)寫入內(nèi)存的解析數(shù)據(jù)進(jìn)行加密。解密模塊60,用于對(duì)在內(nèi)存中查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)進(jìn)行解密。參照?qǐng)D7,優(yōu)先的,本發(fā)明的域名系統(tǒng)解析裝置還包括時(shí)間模塊70和老化處理模塊80。時(shí)間模塊70,用于將解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間寫入內(nèi)存中。老化處理模塊80,根據(jù)時(shí)間模塊70記載的解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間對(duì)解析數(shù)據(jù)進(jìn)行老化處理。優(yōu)先的,本發(fā)明的域名系統(tǒng)解析裝置還包括老化機(jī)制確定模塊90,用于確定老化機(jī)制,刪除解析數(shù)據(jù)解析數(shù)據(jù)。其中,老化機(jī)制確定模塊90所確定的老化機(jī)制可以包括命中率最高優(yōu)先保留機(jī)制、最近最先使用優(yōu)先保留機(jī)制或隨機(jī)機(jī)制的其中一種。對(duì)應(yīng)的,本發(fā)明的域名系統(tǒng)解析裝置還包括命中率最高優(yōu)先保留機(jī)制模塊,用于根據(jù)命中率刪除累計(jì)命中次數(shù)低于預(yù)定閾值的緩存節(jié)點(diǎn);或最近最先使用優(yōu)先保留機(jī)制模塊,用于根據(jù)訪問(wèn)時(shí)間刪除最近一次訪問(wèn)時(shí)間大于預(yù)定閾值的解析數(shù)據(jù);或隨機(jī)保留機(jī)制模塊,用于隨機(jī)刪除解析數(shù)據(jù)。基于上述的域名系統(tǒng)解析裝置,本發(fā)明實(shí)施例還提供了一種客戶端,該客戶端包括上述實(shí)施例所述的域名系統(tǒng)解析裝置,該域名系統(tǒng)解析裝置的具體結(jié)構(gòu)可參見(jiàn)圖7所示示例的描述,不再詳述。本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上對(duì)本發(fā)明所提供的域名系統(tǒng)解析方法、裝置及客戶端進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫 助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種域名系統(tǒng)解析方法,其特征在于,包括以下步驟 解析DNS應(yīng)答,獲取解析數(shù)據(jù); 將解析數(shù)據(jù)寫入內(nèi)存中; 接收DNS查詢請(qǐng)求后,從內(nèi)存中查詢是否存在與所述DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù),若存在,則將查詢的解析數(shù)據(jù)傳回,反之,則向DNS服務(wù)器提出查詢請(qǐng)求。
2.如權(quán)利要求I所述的方法,其特征在于,在將解析數(shù)據(jù)寫入內(nèi)存中后,所述方法還包括 對(duì)寫入內(nèi)存的解析數(shù)據(jù)進(jìn)行加密; 對(duì)在內(nèi)存中查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)進(jìn)行解密。
3.如權(quán)利要求I或2所述的方法,其特征在于,所述方法還包括 將所述解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間寫入內(nèi)存中,根據(jù)所述解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間對(duì)內(nèi)存中的解析數(shù)據(jù)進(jìn)行老化處理。
4.如權(quán)利要求3所述的方法,其特征在于,所述對(duì)解析數(shù)據(jù)進(jìn)行老化處理包括以下步驟 獲取解析數(shù)據(jù)的插入時(shí)間及當(dāng)前的系統(tǒng)時(shí)間; 計(jì)算系統(tǒng)時(shí)間與解析數(shù)據(jù)插入時(shí)間的時(shí)間差; 獲取解析數(shù)據(jù)的老化時(shí)間,并與時(shí)間差進(jìn)行比較,若時(shí)間差大于老化時(shí)間,則刪除該解析數(shù)據(jù)。
5.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括 確定老化機(jī)制,根據(jù)老化機(jī)制在緩存滿時(shí)刪除解析數(shù)據(jù)。
6.如權(quán)利要求5所述的方法,其特征在于,所述在緩存滿時(shí)刪除的緩存節(jié)點(diǎn)包括到了老化時(shí)間和未到老化時(shí)間的解析數(shù)據(jù)。
7.如權(quán)利要求5所述的方法,其特征在于,所述老化機(jī)制包括 命中率最高優(yōu)先保留機(jī)制,預(yù)先設(shè)定命中率閾值,如果累計(jì)命中次數(shù)低于預(yù)定的閾值,則刪除該解析數(shù)據(jù);或 最近最先使用優(yōu)先保留機(jī)制,預(yù)先設(shè)定最近訪問(wèn)時(shí)間閾值,如果最近一次訪問(wèn)時(shí)間大于預(yù)定的閾值,則刪除該解析數(shù)據(jù);或 隨機(jī)保留機(jī)制,隨機(jī)刪除其中的解析數(shù)據(jù)。
8.如權(quán)利要求7所述的方法,其特征在于,所述緩存節(jié)點(diǎn)的命中率通過(guò)如下方式累計(jì) 若在內(nèi)存中查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù),返回結(jié)果給請(qǐng)求者的同時(shí)將該解析數(shù)據(jù)的命中率加一。
9.一種域名系統(tǒng)解析裝置,其特征在于,包括 解析模塊,對(duì)DNS應(yīng)答進(jìn)行解析并獲取解析數(shù)據(jù); 存儲(chǔ)模塊,將獲取的解析數(shù)據(jù)寫入內(nèi)存中; 查詢模塊,根據(jù)DNS查詢請(qǐng)求在內(nèi)存中查詢是否存在與所述DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括 加密模塊,用于對(duì)寫入內(nèi)存的解析數(shù)據(jù)進(jìn)行加密; 解密模塊,對(duì)在內(nèi)存中查詢到DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù)進(jìn)行解密。
11.如權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括 時(shí)間模塊,用于將解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間寫入內(nèi)存中; 老化處理模塊,根據(jù)時(shí)間模塊記載的解析數(shù)據(jù)的老化時(shí)間及插入時(shí)間對(duì)內(nèi)存中的解析數(shù)據(jù)進(jìn)行老化處理。
12.如權(quán)利要求11所述的裝置,其特征在于,所述裝置還包括 老化機(jī)制確定模塊,用于確定老化機(jī)制,在緩存滿 時(shí)刪除解析數(shù)據(jù)。
13.如權(quán)利要求12所述的裝置,其特征在于,所述裝置還包括 命中率最高優(yōu)先保留機(jī)制模塊,用于根據(jù)命中率刪除累計(jì)命中次數(shù)低于預(yù)定閾值的解析數(shù)據(jù);或 最近最先使用優(yōu)先保留機(jī)制模塊,用于根據(jù)訪問(wèn)時(shí)間刪除最近一次訪問(wèn)時(shí)間大于預(yù)定閾值的解析數(shù)據(jù);或 隨機(jī)保留機(jī)制模塊,用于隨機(jī)刪除解析數(shù)據(jù)。
14.一種客戶端,其特征在于,包括如上述權(quán)利要求9至13任一權(quán)利要求所述的域名系統(tǒng)解析裝置。
全文摘要
本發(fā)明提供了一種域名系統(tǒng)解析方法,包括解析DNS應(yīng)答,獲取解析數(shù)據(jù);將解析數(shù)據(jù)寫入內(nèi)存中;接收DNS查詢請(qǐng)求后,從內(nèi)存中查詢是否存在與所述DNS查詢請(qǐng)求對(duì)應(yīng)的解析數(shù)據(jù),若存在,則將查詢的解析數(shù)據(jù)傳回,反之,則向DNS服務(wù)器提出查詢請(qǐng)求。本發(fā)明還提供一種域名系統(tǒng)解析裝置及客戶端。本發(fā)明的域名系統(tǒng)解析方法、裝置及客戶端,能滿足緩存解析的域名系統(tǒng)應(yīng)答需求,同時(shí)可以避免受到惡意代碼對(duì)緩存的攻擊。
文檔編號(hào)H04L29/12GK102790809SQ20111012655
公開日2012年11月21日 申請(qǐng)日期2011年5月16日 優(yōu)先權(quán)日2011年5月16日
發(fā)明者董斌雁 申請(qǐng)人:奇智軟件(北京)有限公司