在互聯網上要想與另外一台主機通信,要知道對方的IP地址,但是IP地址是很難記憶的,
比如百度的一台服務器的IP地址為115.239.210.27,我們在瀏覽器中輸入http://115.239.210.27/就可以訪問百度了,但是如果訪問一個網站就要記住它的的IP是很蛋疼的事,人們習慣記住有意義的字符串,比如baidu。
域名系統(英文:Domain Name System,縮寫:DNS)是因特網的一項服務。它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便的訪問互聯網。DNS 使用TCP和UDP端口53。
DNS服務是如何實現的呢?
首先我們的電腦里面都會有一個DNS服務器(Name Server)的IP地址,可以手動設置也可以自動獲取,有名的DNS服務器包括google的8.8.8.8 阿里巴巴的223.5.5.5等,查看自己電腦的DNS服務器的IP地址可以在windows命令行下輸入ipconfig /all,在linux下面則通過more /etc/resolv.conf查看。
客戶端發起訪問請求www.163.com:
1.查看本地hosts文件,發現沒有www.163.com IP 映射關系,將請求發送給本地DNS服務器( ----遞歸查詢----)
2.本地DNS服務器不包含163.com的權威域,不存在對應的www記錄,因此將請求轉發到根域名服務器(假如 a.root-servers.net.)
3.根域名DNS服務器會返回負責.com域解析的服務器(假如 a.gtld-servers.net.)給本地DNS服務器,本地DNS服務器再將請求發送給 a.gtld-servers.net
4..com域名服務器只能返回負責163.com域的解析服務器(如 ns1.nease.net.)給本地DNS服務器,本地DNS服務器再將請求發送給ns1.nease.net.
5.由ns1.nease.net.域名服務器返回www.163.com 的 IP映射關系給本地DNS服務器
(2-5過程)----迭代查詢----
6.本地DNS服務器將結果保存到本地緩存,並保持TTL時間,同時將結果應答給客戶端.
7.當其他客戶端再次向本地DNS服務器查詢www.163.com時,在TTL時間內,本地DNS服務器不再向根域名服務器轉發請求,而是直接從緩存中讀取數據應答給客戶端. 如果已經超過TTL時間,則本地DNS服務器會再次經歷一次上訴2-6的過程.
以后會結合Wireshark分析DNS報文的每個字段詳細意思,以及DNS查詢的其它細節問題。
【參考文獻】
http://magic3.blog.51cto.com/1146917/1354084
http://www.360doc.com/content/11/0809/17/706976_139190573.shtml
http://zh.wikipedia.org/zh/域名系統