這是我參與8月更文挑戰的第13天,活動詳情查看:8月更文挑戰html
這世上本沒有DNS,後來網站多了,也就有了DNS。windows
DNS——Domain Name System 域名系統,在網絡世界充當「指針」的角色。它的功能很直接:從域名查詢到IP地址。瀏覽器
在互聯網剛出現的時候,尚未DNS一說,有專人把網址的IP地址記錄到txt文本,供使用者去搜索。後來網站愈來愈多,TXT登記和查詢的效率都過低了,無法維護了,纔出現了DNS的雛形。緩存
DNS是經過各個散落世界各地的Name Server域名服務器按照DNS protocol進行工做的。下圖是DNS的協議棧:安全
來看一個真實的DNS請求-應答消息:服務器
要說清楚DNS是如何工做的,讓咱們先來解析一個網址:微信
URL:上圖是咱們平時輸入的網址,它其實是一個URL(Uniform Resouce Locator),統一資源定位符,是用來標識互聯網上的資源位置。咱們知道網頁其實就是一個HTML文件,因此打開這個網址,就是打開這個地址對應的HTML文件。markdown
data-flair.training :就是咱們向域名註冊商申請的域名。它包含兩個部分,TLD(頂級域名)和SLD(次級域名)。「.training"是頂級域TLD(top level domain),是咱們註冊域名時選擇的,常見的頂級域名還包括國家碼/com/net/org等;"data-flair",又稱爲次級域名(second-level domain,SLD),是咱們私有的,從屬於選擇的頂級域(TLD);網絡
www: 這是咱們的subdomain(子域名),子域名對應具體的host, 這個子域名不須要向域名註冊商申請,能夠由咱們自行指定。dom
域名的等級:從頂級域到子域,咱們能看出域名是有層級的。即主機名(host).次級域名(SLD,也就是咱們所說的域名).頂級域名(TLD).根域名(root) # 即host.sld.tld.root以下圖所示:
根域名: 其實咱們的網址最後都有一個句號".",這就是根域名,由於根域名對全部域名都同樣,因此都被省略了。根域名有專門的根DNS服務器進行管理,這個咱們後面在講anycast時會專門介紹。
DNS的等級:既然域名有等級,那麼登記和管理域名的DNS也有了相應的等級
DNS的分級機制是爲了應對愈來愈多的域名與查詢請求,那麼咱們在查詢一個域名時,爲了加快查詢效率並下降DNS服務器壓力,也須要遵循兩個原則:
基於此,DNS通常支持兩種查詢方式:遞歸查詢recursive與迭代查詢iterative;
二者的區別在於執行查詢的主體:若是是由本地Name Server執行查詢並返回給客戶端,則爲遞歸查詢;若是是由客戶端直接向不一樣級別的Name Server執行查詢,則爲迭代查詢;
通常來講,都採用遞歸查詢方式,由於兩個緣由:
咱們分步講解一下:
若是本地緩存沒有結果,則客戶端會按照「就近原則」,向ISP指定的本地Name server,也就是咱們上一節說的LDNS發起查詢,若是LDNS有結果則返回,查詢結束;若是沒有結果,則LDNS會按照「分級查詢」原則,向根域名服務器發起查詢
根域名會返回TLD域名的記錄和IP,而後LDNS會向TLD服務器發起查詢,依次類推,最終得到目標host的IP地址,並返回給客戶端,同時講結果保存在LDNS本地,保存時間爲TTL(timee to live)
以上就是DNS協議的關鍵內容和工做原理,咱們下一篇來詳細看一下DNS的查詢過程。
感謝閱讀,若有不許確和錯誤之處請留言指正,我會當即修正,感謝!
總結不易,請勿私自轉載,不然別怪老大爺不客氣
歡迎喜歡技術的小夥伴和我交流,微信1296386616
參考資料:
《How to Choose a Perfect Domain Name – SEO Best Practices》 Data Flair data-flair.training/blogs/seo-d…
《雲解析 DNS》 阿里雲 help.aliyun.com/document_de…
《DNS解析的工做原理及遞歸與迭代的區別》 WytheOnly blog.csdn.net/wytheonly/a…
《DNS 安全問題研究》 郭巨俠 zhuanlan.zhihu.com/p/345791057