1 域名
1 比如www.LinuxCast.net,實際上域名隻是後面的一部份,但是我們一般都是整個叫為域名
2 對于域名來說,我們一般使用.來分割,嚴格的域名最後一位還是有一個.的,但是我們都直接省略
3 域名分為三個部分
主機名 該域中的某台主機,對于網頁伺服器來說都是www,但是也有ftp,mail等等
域名 域名稱
類型 辨別此域名的類型,比較常見的有com , net , org , edu , gov
2 DNS
1 每一個域名實際上代表的是一個ip位址,比如www.LinuxCast.net的ip為1.1.1.1(假設)
2 DNS(Domain Name System),服務有DNS來提供
3 比如我要通路www.LinuxCast.net
第一步我們先去請求DNS伺服器
第二步DNS傳回目前域名的ip位址
第三步主機通過ip位址去通路目前的網站

3 DNS用戶端
1 我們日常使用的支援網絡的計算機一般都是做為一個DNS用戶端使用,應用程式,服務,程序等等通過作業系統底層的功能發起對dns伺服器的查詢,對指定域名進行解析
2 Linux中一般使用系統底層提供的gethostbyname()來進行域名解析
3 解析基于以下幾種方式
檔案(/etc/hosts . /etc/networks)
DNS
NIS
4 我們可以通過配置檔案/etc/nsswhich,conf來控制查詢的順序,預設是先檔案hosts , 第二是DNS
4 DNS專用查詢指令
1 指令host可用于進行dns的查詢
host www.LinuxCast.net
2 dig指令也可以用來進行dns查詢,輸出較為詳細的資訊
dig www.LinuxCast.net
3 指令host和dig都不會使用/etc/nsswhich.conf的配置,隻會通過/etc/resolve.conf進行dns查詢
5 DNA查詢
1 DNS是一個樹狀結構,查詢的時候根據域名從右到左查詢,域名每一級由獨立的一個或多個伺服器
2 比如我們要查詢www.LinuxCast.net(其實是www.LinuxCast.net.)這個域名
第一步我們先去查找根域名伺服器,也就是. 那麼這個根域名伺服器儲存了比如com , net , org等等的資訊
第二步根據我們找到的net,我們去查net. , 也就是在頂級域名伺服器,儲存的是域名,比如LinuxCast等等
第三步根據找到的LinuxCast.net.,我們去查這個域名下的主機名,通常這個伺服器儲存比如www , mail , ftp等主機
第四步找到www.LinuxCast.net
3 我們可以通過 dig +trace www.LinuxCast.net 來追蹤這個DNS的解析過程
6 DNS的查詢類型
1 遞歸查詢
比如我們要查詢www.LinuxCast.net
首先我們用戶端發送請求到本地的DNS伺服器,然後本地DNS伺服器去查詢根域名伺服器.并傳回給本地域名伺服器,本地域名伺服器根據傳回回來的結果進行查詢下一個..... 最後傳回給用戶端
2 循環查詢
同樣還是查詢www.LinuxCast.nat
首先用戶端先通過本地域名伺服器,然後本地域名伺服器去查找根域名伺服器. 然後根域名伺服器去找頂級域名伺服器net,頂級域名伺服器找LinuxCast.net,最後再把結果傳回給用戶端
3 實際應用中是用戶端和本地伺服器之間利用循環查詢,本地域名伺服器和其他伺服器之間利用遞歸查詢
7 資源記錄
1 在DNS伺服器上,DNS的資訊通過一個叫做資源記錄(RR,Resource Record)的格式進行儲存,RR不僅能夠儲存域名到ip位址的對應資訊,還能夠儲存很多其他的資訊
2 資源記錄常用的屬性有
NAME ---- 名稱
CLASS ---- 類别(一般都市IN,代表internet)
TYPE ---- 類型(A代表的是ipv4,4A代表ipv6 等等)
RDATA ---- 資料
8 DNS伺服器的類型
1 Primary DNS Server(Master)
一個域的伺服器儲存該域的zone配置檔案,該域所有的配置,更改都在該伺服器上面
2 Seconday DNS Server(Slave)
從伺服器一般做為備援負載使用,一個域的從伺服器從該域的主伺服器上抓取zone配置檔案,從伺服器不進行資訊修改,所有的修改與主伺服器同步
3 Caching only Server
DNS緩存伺服器不存在任何的zone檔案,僅僅依靠緩存為用戶端提供服務,通常用于負載均衡以及加速通路
9 zone
在DNS伺服器中,一般一個域通過一個zone檔案儲存該域的相關資訊,zone檔案的格式是标準化的,一個典型的zone配置檔案内容如下