DNS運作原理
DNS(Domain Name System),指的是「網域名稱系統」。電腦與電腦透過網路溝通時,都是利用IP來找位置,就好像家中都會一個獨一無二的「門牌號碼」一樣,IP就是這樣子的概念。而人腦是有極限的,我們在上網時能記得了多少IP位置呢?所以DNS是非常重要的服務,DNS可以利用淺顯易懂的名稱(e.g. www.google.com)來找到電腦上的門牌號碼(IP)。
以下模擬一個上網的情境:
當Client在瀏覽網頁時,這邊以www.test.tw舉例
1. Client端會先搜尋自己本機的HOSTS檔,檢查看看是否有相對應的FQDN(Fully Qualified Domain Name,完整網域名稱)-->IP的對應資料。
- 本機HOSTS檔存放在%systemroot%\system32\drivers\etc\
- 正解:FQDN-->IP;反解:IP-->FQDN,若此情境就是Client希望local DNS server提供正解的資訊
- 一個正解或反解的domain我們稱之為「Zone」,每一台DNS server都可以管理多個domain,不管是正解或是反解(多個zone)。
2. 若搜尋不到,會向local DNS server發出一個request,此時local DNS server會先檢查資訊庫內看是否有此正解資訊。如果有,就直接把IP丟回給Client端,若沒有此筆對照資料,會再檢查local DNS Cache是否有此筆對照資料,若都找不到對應資料,就會向root DNS server詢問。
3. root DNS server會說:「我不知道你這串FQDN的IP是什麼,但我知道有一台負責tw的DNS server,他應該知道你要查的IP是什麼。」接著就會提供FQDN為tw的DNS server IP。
4. tw DNS server會說:「 我不知道你這串FQDN的IP是什麼,但我知道有一台負責edu.tw的DNS server,他應該知道你要查的IP是什麼。」接著就會提供FQDN為edu.tw的DNS server IP。
5. edu.tw的DNS server會說:「這個FQDN我知道!www.test.tw的IP為xxx.xxx.xxx.xxx」接著就把這個IP回傳到local DNS server。
6. 最後local DNS server就會把IP回傳給Client端,並將此紀錄在local DNS server的Cache內,之後在存放時間內進行查詢的話,就不必再回到root DNS server去詢問了。
以上的過程包含兩種查詢概念:
- 遞迴式(Recursive):Client 端向DNS server查詢的模式。Client端丟出一個詢問給 local DNS server, 然後local DNS server就會不斷地查到答案出來為止,Client只需要等待回應。這種方式只處理回應回來的封包是否是正確回應或是說是找不到該名稱的錯誤訊息。
- 交談式(Interactive):DNS Server間的查詢模式。由Client端或是DNS Server上所發出去的Query,這種方式是送封包出去,所回應回來的資料不一定是最後正確的名稱位置,但也不是如上所說的回應回來是錯誤訊息,回應回來只是告訴你最接近的IP位置,然後再到此最接近的IP去尋找所要解析的名稱。
為何要包含兩種查詢概念?這是網友的比喻:
- 在Client查詢Local DNS的時候,用戶端是很懶的,丟出問題後就只想得到結果,所以選用Recursive的方式。
- 在DNS Server之間互相查詢的時候,伺服器是認命的,受人之託只好拚命找答案,所以選用Iterative的方式。
- 用戶端為什麼不能勤勞點,使用Iterative的方式呢?如果真的這樣做,那就像民眾看病通通都先跑到國際醫學中心(root DNS server),再轉到國家醫院(top-level domain層級的DNS server),才到巷弄口的診所(local DNS server),會造成資源(頻寬)浪費。
Domain Name Server/Service/System,這些是什麼?到底哪一個才是DNS?
- 視談論議題的範圍:System>Server>Service
也就是說在Domain Name System裡面(整個FQDN-->IP查詢過程的樹狀結構)的某台提供Domain Name Service的叫做Domain Name Server(也有人稱DNS server-Domain Name Service server)。 - 一般網管人員在企業內部談論的大多是指Domain Name Server
- 講到FQDN解析為IP的整體架構及流程時就是Domain Name System。
p.s. 不知道我的解讀對不對~請各位多多賜教!!!
參考資料
- iT邦幫忙-DNS運作原理的小疑問(DNS Recursive & Iterative)
http://ithelp.ithome.com.tw/question/10089561 - Seednet教室-DNS運作原理
http://eservice.seed.net.tw/class/class09.html - DNS伺服器的運作原理
http://hsmaterial.moe.edu.tw/file/computer/7I85/class800/7I85/final/7i85_2_5/7i85_2_5.htm - DNS介紹
http://faculty.ndhu.edu.tw/~comput/computer_c/training/hbc0122/dns-0.htm
留言與評論
866818 977563I�d ought to seek advice from you here. Which is not something I do! I enjoy reading an write-up that could make folks feel. Also, several thanks permitting me to comment! 400218
f06YU5Dc2c本篇文章的留言功能已關閉!