DNS簡介
DNS(英文全稱:Domain Name System,域名系統)是網際網路的一項服務。它是將域名和ip地址相互對映的一個分散式資料庫。
網路通訊大部分是基於TCP/IP的,而TCP/IP是基於ip地址的,因特網上的節點都可以用ip地址惟一標識,並且可以通過ip地址被訪問。但即使是將32位的二進位制ip地址寫成4個0~255的十位數形式,也依然太長、太難記。因此,人們發明了域名(Domain Name),域名可將一個ip地址關聯到一組有意義的字元上去。
使用者訪問一個網站的時候,既可以輸入該網站的ip地址,也可以輸入其域名,對訪問而言,兩者是等價的。例如:微軟公司的Web伺服器的ip地址是207.46.230.229,其對應的域名是www.microsoft.com,不管使用者在瀏覽器中輸入的是207.46.230.229還是www.microsoft.com,都可以訪問其Web網站。
我們訪問網站時,在瀏覽器位址列中輸入域名,就能看到所需要的頁面,這是因為有一個叫“DNS伺服器”的計算機自動把我們的域名“翻譯”成了相應的ip地址,然後調出ip地址所對應的網頁。
域名系統
域名系統在全世界保持唯一性,也就是全球通用一份。
- 每一個域名都是一個標號序列,用字母(A-Z,a-z,大小寫等價)、數字(0-9)和連線符(-)組成。
- 標號序列總長度不能超過255個字元,它由點號分割成一個個的標號。
- 每個標號應該在63個字元之內,每個標號都可以看成一個層次的域名。
- 級別最低的域名寫在左邊,級別最高的域名寫在右邊。
域名服務主要是基於UDP實現的,伺服器的埠號為53。
域名伺服器
域名伺服器就是裝有域名系統的主機。
分類 | 作用 |
---|---|
根域名伺服器 | 最高層次的域名伺服器,本地域名伺服器解析不了的域名就會向其求助 |
頂級域名伺服器 | 負責管理在該頂級域名伺服器下注冊的二級域名 |
許可權域名伺服器 | 負責一個區的域名解析工作 |
本地域名伺服器 | 當一個主機發出DNS查詢請求時,這個查詢請求首先發給本地域名伺服器 |
注:一個域名伺服器所負責的範圍,或者說有管理許可權的範圍,就稱為區。
- 每個層的域名上都有自己的域名伺服器,最頂層的是根域名伺服器。
- 每一級域名伺服器都知道下級域名伺服器的IP地址。
- 為了提高可靠性, 每一級至少設定兩個或以上的域名伺服器。
域名解析過程
當一個使用者在位址列輸入www.baidu.com時,DNS解析過程大致如下:
1.瀏覽器先檢查自身快取中有沒有被解析過的這個域名所對應的ip地址,如果有(也就是命中),解析過程結束。
瀏覽器對快取域名的大小和快取時間也是有限制的,通常情況下為幾分鐘到幾小時不等,域名快取時間可以通過TTL屬性設定,如果快取時間過長,一旦域名所對映的ip地址有變化,會導致客戶無法及時解析到變化後的ip地址,導致該域名不能正常解析;反之,如果快取時間過短,會導致每次使用者訪問網站時都要重新解析一次域名,所以需要設定合理的快取時間。
2.如果瀏覽器快取中沒有,瀏覽器會檢查作業系統快取(也就是hosts檔案)中有沒有對應的解析對映。
在Windows中可找到C:\Windows\System32\drivers\etc\hosts檔案來設定,如果你在這裡指定了一個域名對應的ip地址,那瀏覽器會使用這個域名所對映的ip地址。
但是這種作業系統級別的域名解析規程也被很多黑客利用,通過修改你的hosts檔案裡的內容把特定的域名解析到他指定的ip地址上,造成所謂的域名劫持。所以現在的hosts檔案都被設定為只讀,防止這個檔案被輕易修改。
3.如果至此還沒有命中域名,本機才會真正的請求本地域名伺服器(LDNS)來解析這個域名。
本地域名伺服器一般由網路供應商所提供,這臺伺服器一般在你的城市的某個角落,距離你不會很遠,並且這臺伺服器的效能都很好,一般都會快取域名解析結果,大約80%的域名解析到這裡就完成了。
本地域名伺服器(LDNS)會檢查快取中有沒有該域名所對應的ip地址,如果有會返回給本機,解析結束。
4.如果本地域名伺服器(LDNS)仍然沒有命中, 本地域名伺服器(LDNS)會請求根域名伺服器來解析。
5.根域名伺服器返回給本地域名伺服器(LDNS)一個該域名應該查詢的頂尖域名伺服器的地址。
6.此時本地域名伺服器(LDNS)再根據上一步返回的頂尖域名伺服器的地址,請求頂尖域名伺服器來解析。
7.接受請求的頂尖域名伺服器查詢並返回這個域名對應的許可權域名伺服器的地址,這個許可權域名伺服器就是要請求的網站所註冊的域名伺服器。
8.然後本地域名伺服器(LDNS)再根據上一步返回的許可權域名伺服器的地址,請求許可權域名伺服器來解析。
許可權域名伺服器來解析根據對映關係表找到該域名所對應的目標ip地址,返回給本地域名伺服器(LDNS)。
9.本地域名伺服器(LDNS)快取該域名和對應的ip地址,然後根據快取來解析該域名。
10.本地域名伺服器(LDNS)把解析的結果返回給使用者,使用者根據TTL值快取到本地瀏覽器快取中,域名解析過程至此結束。