一、DNS域名解析步驟
下圖是DNS域名解析的一個(gè)示例圖往弓,它涵蓋了基本解析步驟和原理笛坦。
下面DNS解析步驟進(jìn)行講解,后面將采用命令行的形式來跟蹤DNS解析過程疟位。當(dāng)用戶在地址欄鍵入www.baidu.com并敲下回車鍵之后瞻润,域名解析就開始了。
第一步:檢查瀏覽器緩存中是否緩存過該域名對(duì)應(yīng)的IP地址
用戶通過瀏覽器瀏覽過某網(wǎng)站之后,瀏覽器就會(huì)自動(dòng)緩存該網(wǎng)站域名對(duì)應(yīng)的IP地址绍撞,當(dāng)用戶再次訪問的時(shí)候正勒,瀏覽器就會(huì)從緩存中查找該域名對(duì)應(yīng)的IP地址,因?yàn)榫彺娌粌H是有大小限制傻铣,而且還有時(shí)間限制(域名被緩存的時(shí)間通過TTL屬性來設(shè)置)章贞,所以存在域名對(duì)應(yīng)的IP找不到的情況。當(dāng)瀏覽器從緩存中找到了該網(wǎng)站域名對(duì)應(yīng)的IP地址非洲,那么整個(gè)DNS解析過程結(jié)束鸭限,如果沒有找到,將進(jìn)行下一步驟两踏。對(duì)于IP的緩存時(shí)間問題败京,不宜設(shè)置太長的緩存時(shí)間,時(shí)間太長梦染,如果域名對(duì)應(yīng)的IP發(fā)生變化赡麦,那么用戶將在一段時(shí)間內(nèi)無法正常訪問到網(wǎng)站,如果太短帕识,那么又造成頻繁解析域名泛粹。
第二步:如果在瀏覽器緩存中沒有找到IP,那么將繼續(xù)查找本機(jī)系統(tǒng)是否緩存過IP
如果第一個(gè)步驟沒有完成對(duì)域名的解析過程渡冻,那么瀏覽器會(huì)去系統(tǒng)緩存中查找系統(tǒng)是否緩存過這個(gè)域名對(duì)應(yīng)的IP地址戚扳,也可以理解為系統(tǒng)自己也具備域名解析的基本能力忧便。在Windows系統(tǒng)中族吻,可以通過設(shè)置hosts文件來將域名手動(dòng)綁定到某IP上,hosts文件位置在C:\Windows\System32\drivers\etc\hosts珠增。對(duì)于普通用戶超歌,并不推薦自己手動(dòng)綁定域名和IP,對(duì)于開發(fā)者來說蒂教,通過綁定域名和IP巍举,可以輕松切換環(huán)境,可以從測試環(huán)境切換到開發(fā)環(huán)境凝垛,方便開發(fā)和測試懊悯。在XP系統(tǒng)中,黑客常常修改他的電腦的hosts文件梦皮,將用戶常常訪問的域名綁定到他指定的IP上炭分,從而實(shí)現(xiàn)了本地DNS解析,導(dǎo)致這些域名被劫持剑肯。在Linux或者M(jìn)ac系統(tǒng)中捧毛,hosts文件在/etc/hosts,修改該文件也可以實(shí)現(xiàn)同樣的目的。
前兩步都是在本機(jī)上完成的呀忧,所以沒有在上面示例圖上展示出來师痕,從第三步開始,才正在地向遠(yuǎn)程DNS服務(wù)器發(fā)起解析域名的請(qǐng)求而账。
第三步:向本地域名解析服務(wù)系統(tǒng)發(fā)起域名解析的請(qǐng)求
如果在本機(jī)上無法完成域名的解析胰坟,那么系統(tǒng)只能請(qǐng)求本地域名解析服務(wù)系統(tǒng)進(jìn)行解析,本地域名系統(tǒng)LDNS一般都是本地區(qū)的域名服務(wù)器福扬,比如你連接的校園網(wǎng)腕铸,那么域名解析系統(tǒng)就在你的校園機(jī)房里,如果你連接的是電信铛碑、移動(dòng)或者聯(lián)通的網(wǎng)絡(luò)狠裹,那么本地域名解析服務(wù)器就在本地區(qū),由各自的運(yùn)營商來提供服務(wù)汽烦。對(duì)于本地DNS服務(wù)器地址涛菠,Windows系統(tǒng)使用命令ipconfig就可以查看,在Linux和Mac系統(tǒng)下撇吞,直接使用命令cat /etc/resolv.conf來查看LDNS服務(wù)地址俗冻。LDNS一般都緩存了大部分的域名解析的結(jié)果,當(dāng)然緩存時(shí)間也受域名失效時(shí)間控制牍颈,大部分的解析工作到這里就差不多已經(jīng)結(jié)束了迄薄,LDNS負(fù)責(zé)了大部分的解析工作。
第四步:向根域名解析服務(wù)器發(fā)起域名解析請(qǐng)求
本地DNS域名解析器還沒有完成解析的話煮岁,那么本地域名解析服務(wù)器將向根域名服務(wù)器發(fā)起解析請(qǐng)求讥蔽。
第五步:根域名服務(wù)器返回gTLD域名解析服務(wù)器地址
本地DNS域名解析向根域名服務(wù)器發(fā)起解析請(qǐng)求,根域名服務(wù)器返回的是所查域的通用頂級(jí)域(Generic top-level domain画机,gTLD)地址冶伞,常見的通用頂級(jí)域有.com、.cn步氏、.org响禽、.edu等。
第六步:向gTLD服務(wù)器發(fā)起解析請(qǐng)求
本地域名解析服務(wù)器向gTLD服務(wù)器發(fā)起請(qǐng)求荚醒。
第七步:gTLD服務(wù)器接收請(qǐng)求并返回Name Server服務(wù)器
gTLD服務(wù)器接收本地域名服務(wù)器發(fā)起的請(qǐng)求芋类,并根據(jù)需要解析的域名,找到該域名對(duì)應(yīng)的Name Server域名服務(wù)器界阁,通常情況下侯繁,這個(gè)Name Server服務(wù)器就是你注冊(cè)的域名服務(wù)器,那么你注冊(cè)的域名的服務(wù)商的服務(wù)器將承擔(dān)起域名解析的任務(wù)铺董。
第八步:Name Server服務(wù)器返回IP地址給本地服務(wù)器
Name Server服務(wù)器查找域名對(duì)應(yīng)的IP地址巫击,將IP地址連同TTL值返回給本地域名服務(wù)器禀晓。
第九步:本地域名服務(wù)器緩存解析結(jié)果
本地域名服務(wù)器緩存解析后的結(jié)果,緩存時(shí)間由TTL時(shí)間來控制坝锰。
第十步:返回解析結(jié)果給用戶
解析結(jié)果將直接返回給用戶粹懒,用戶系統(tǒng)將緩存該IP地址,緩存時(shí)間由TTL來控制顷级,至此凫乖,解析過程結(jié)束。
這里對(duì)DNS解析的步驟進(jìn)行了一個(gè)簡單的介紹分析弓颈,后面將通過命令行的形式來解析一個(gè)域名的具體解析過程帽芽。
二、DNS域名解析過程分析
在正式開始分析解析過程之前翔冀,先來介紹幾個(gè)基本的域名解析方式的概念导街。域名解析記錄主要分為A記錄、MX記錄纤子、CNAME記錄搬瑰、NS記錄以及TXT記錄。
A記錄:A代表的是Address控硼,用來指定域名對(duì)應(yīng)的IP地址泽论,比如將map.baidu.com指定到180.97.34.157,將zhidao.baidu.com指定到180.149.131.245卡乾,A記錄允許將多個(gè)域名解析到一個(gè)IP地址翼悴,但不允許將一個(gè)域名解析到多個(gè)IP地址上。
MX記錄:MX代表的是Mail Exchage幔妨,就是可以將某個(gè)域名下的郵件服務(wù)器指向自己的Mail Server鹦赎,如baidu.com域名的A記錄IP地址是180.97.34.157,如果將MX記錄設(shè)置為180.97.34.154陶冷,即xxx@baidu.com的郵件路由钙姊,那么DNS會(huì)將郵件發(fā)送到180.97.34.154所在的服務(wù)器毯辅,而正常web請(qǐng)求仍然會(huì)解析到A記錄的IP地址180.97.34.157埂伦。
CNAME記錄:CNAME指的就是Canonical Name,也就是別名解析思恐,可以將指定的域名解析到其他域名上沾谜,而其他域名就是指定域名的別名,整個(gè)解析過程稱為別名解析胀莹。比如將baidu.com解析到itlemon.cn基跑,將csdn.net解析到itlemon.cn,那么itlemon.cn就是baidu.com和CSDN.net的別名描焰。
NS記錄:就是為某個(gè)域名指定了特定的DNS服務(wù)器去解析媳否。
TXT記錄:為某個(gè)主機(jī)名或者域名設(shè)置特定的說明栅螟,比如為itlemon.cn設(shè)置的的TXT記錄為“Lemon的技術(shù)筆記”,這個(gè)TXT記錄為itlemon.cn的說明篱竭。
上面概念中的IP地址都是假定的力图,幫助理解。下面將通過解析域名baidu.com為例掺逼,進(jìn)一步說明域名解析流程吃媒。
直接查看域名結(jié)果,可以通過命令nslookup加上域名來查看:
上圖中Non-authoritative answer表示解析結(jié)果來自非權(quán)威服務(wù)器吕喘,也就是說這個(gè)結(jié)果來自緩存赘那,并沒有完全經(jīng)歷全部的解析過程,從某個(gè)緩存中讀取的結(jié)果氯质,這個(gè)結(jié)果存在一定的隱患募舟,比如域名對(duì)應(yīng)的IP地址已經(jīng)更變。
這只是一個(gè)快捷的解析結(jié)果闻察,如果需要瀏覽全部的解析過程胃珍,那么可以使用dig命令來查看解析過程。
分析上圖DNS解析過程蜓陌,我們可以看出:
第一步:從本地DNS域名解析服務(wù)器獲取到13個(gè)根DNS域名服務(wù)器(.)對(duì)應(yīng)的主機(jī)名觅彰。
第二步:從13個(gè)根域名服務(wù)器中的其中一個(gè)(這里是h.root-servers.net)獲取到頂級(jí)com.的服務(wù)器IP(未顯示)和名稱。
第三步:向com.域的一臺(tái)服務(wù)器192.43.172.30(i.gtld-servers.net)請(qǐng)求解析钮热,它返回了baidu.com域的服務(wù)器IP(未顯示)和名稱填抬,百度有四臺(tái)頂級(jí)域的服務(wù)器。
第四步:向百度的頂級(jí)域服務(wù)器220.181.37.10(ns3.baidu.com)請(qǐng)求www.baidu.com隧期,它發(fā)現(xiàn)這個(gè)www有個(gè)別名飒责,而不是一臺(tái)主機(jī),別名是www.a.shifen.com仆潮。
一般情況下宏蛉,DNS解析到別名就停止了,返回了具體的IP地址性置,如果想看到具體的IP地址拾并,可以進(jìn)一步對(duì)別名進(jìn)行解析,解析結(jié)果如下:
這時(shí)候看到最后的解析結(jié)果是180.97.33.107和180.97.33.108鹏浅。在解析別名的過程中嗅义,可以發(fā)現(xiàn)shifen.com和baidu.com都是指定了相同的域名解析服務(wù)器。以上是一個(gè)域名的解析過程隐砸,最后的解析結(jié)果和一開始的使用nslookup的結(jié)果一致之碗。
轉(zhuǎn)載自:https://blog.csdn.net/Lammonpeter/article/details/81358387
相關(guān)內(nèi)容:https://study.163.com/course/courseMain.htm?courseId=1210406206&share=2&shareId=480000002227524