2007年6月14日 星期四

Dns 通訊協定概論

        前 Internet 上所使用的通訊協定是 TCP/IP , 一台電腦只要知道另台電的 IP 位置 , 就可以與那台電腦溝通 , 所以我們要連上 中華電信 的網頁 , 在瀏覽器的網址列打上 中華電信 的 IP 位置 , 如 http://203.66.88.89 , 咦~! 它還有另一個 IP , 所以也可以輸入 http://61.219.38.89 , 如果您是要連到 中央研究院 , 那就在瀏覽器的網址列上輸入 http://140.109.4.130 即可 . 要連到 IBM 台灣官網 , 就輸入 http://129.42.17.103 或 http://129.42.18.103 或 http://129.42.16.103 都可以 .


……..>_<||| ……….Orz , 全球這麼多網站 , 怎知誰的 IP 是多少 ? 怎麼可能背的下來 ? 就算背的下來 , 我們人類的大腦也不是用來裝這些的吧 ! 列個表來供查訊吧 ! 而且要用名稱來查訊才方便 , 名稱好記多了 :
中華電信 = 203.66.88.89 = HiNet
中研院 = 140.109.4.130 = Sinica
IBM = 29.42.17.103 = IBM
雅虎奇摩 = 202.43.195.13 = Yahoo



hosts 檔案就是這樣來的 . 早期就是靠 hosts 這個檔來做名稱解析 , Internet 上 , 每台電腦內都放個 hosts 檔 , 就可以互相溝通了 ………….. , 還有個問題 , 各地新的服務主機如雨後春筍般的不斷設立 , 知道哪裡有新主機的人就更新自己的 hosts 檔 , 不知道的人就沒有更新了 , 到後來大家 hosts 檔的內容都不大一樣 , 便互相交流一下 , 但還是沒辦法記錄到全球所有的主機位置 , 還有名稱重複的問題 , hosts 檔案內的資料越來越多 , 越來越不好查 , 越來越不方便了 . 這些資料若沒有統一管理維護 , 問題是沒有辦法解的 . DNS 因此誕生 .



DNS(Domain Name System) , 就是提供 Domain Name 和 IP 位置對應的查詢 , 而為防止有主機的 Domain Name 有重複衝突的狀況 , Domain Name 的命名必須要有一個規則 , 以方便管理 . 以中研院的網址來看 , www.sinica.edu.tw , 有一台 Web Server(www) , 是 中研院 的(sinica) , 中研院是屬教育機構 (edu) , 在台灣 . 其實應該是由右而左解析 , 解析這名稱所代表的函意 : 這台電腦是台灣(tw)有一個教育組織(edu)叫 中央研究院(sinica) 的 Web 主機(www) . 有看出來嗎 ? 這名稱由右至左解析 , 用 “ . “ 分隔了好幾個階層 , 每個階層代表了某組織或組織類別 , 由右至左 , 越左邊 , 代表的組織或組織類別越小 , 最後這是這台電腦的名字 .
這規則的結構若是用圖來表示的話 , 其實就像檔案資料夾的樹狀結構 , 如下圖 :



這樣的圖不知道大家看的懂嗎 ? 我來解釋一下好了 .
麻煩請一邊看下面解說 , 一邊對照上圖 .


這樹狀結構的起頭是 DNS 根(root)伺服器 , 一般在網址列上的寫法為 “.” , 也可以省略不填 . 根伺服器內 , 記錄著(授權)下一層 DNS 伺服器的位址 , 如 tw. , cn. , jp. , hk. ….. 等下層 DNS 伺服器分別位於哪些 IP 位址 . 而第二層 DNS 伺服器內 , 像 tw. 的伺服器內 , 記錄著它所授權的更下層 DNS 伺服器的位址 , 如 com.tw. , net.tw. , edu.tw. , idv.tw. ….. 等等更下層的 DNS 伺服器位址 , 當然 , cn. , jp. , hk. ….. 等 DNS 伺服器內也記錄著它們各別授權的下層 DNS 伺服器的位址 . 接著再來看 tw. 下的 DNS 伺服器 com.tw. , com.tw. 伺服器(com.tw.)內記錄著 iq180.com.tw. , twnic.com.tw. , ibm.com.tw. ….. 等公司 , 團體 , 組織的 DNS 伺服器位址 . 再來 iq180.com.tw. 這台 DNS 伺服器內則記錄著各個服務主機的位址 , 如主機名 www 的 IP 位址是 220.135.50.194 等等 .


何謂 FQDN ?
FQDN 是 Fully Qualified Domain Name 的簡寫 , 意思是 “完整合格的主機網域名稱” , 如 “www.iq180.com.tw.” , 這個名稱可分為兩部分來看 , www 為主機名稱 , iq180.com.tw. 為網域名稱 (最後有一個 ”.” , 一般我們都把它省略不寫) , 整個合起來就是 “等很久資訊室” 的網站 FQDN名稱 , 它是台灣(tw) 的商業組織(com) , 組織名稱為 iq180 , 主機名稱為 www ; 又如 “www.twnic.net.tw.” , 它是台灣(tw) 的網路、通訊組織(net) , 組織名稱為 twnic , 主機名稱為 www



由上面的例子可大約看出來 , FQDN 所採用的是同 DNS 樹狀階層式的架構 .

讓我們依照上面的 DNS樹狀樹狀結構圖 , 來講解 DNS 的查詢流程 :

當我們在瀏覽器的網址列輸入一個 FQDN 網址時 , 電腦是先去詢問 DNS Server , 這個 FQDN 名稱(www.iq180.com.tw.)所對應的 IP 位址是哪裏 ?
DNS Server 收到這樣的要求後 ,


  1. 會去問 “DNS根(root)(.) 伺服器” , 但根伺服器內並沒有 www. iq180.com.tw. 的記錄 , 所以根伺服器回應請 DNS Server 至 tw. 這台名稱伺服器去查 , 因為根伺服器內的記錄 , tw. 是最接近 www. iq180.com.tw. 這個名稱的 , 於是 DNS Server 又跑去問 tw. 伺服器 , 這個 FQDN 名稱(www. iq180.com.tw.)所對應的 IP 位址是哪裏 ?
     
  2. 但 tw. 伺服器內也沒有 www. iq180.com.tw. 的記錄 , 所以 tw 伺服器回應請 DNS Server至 com.tw. 這台名稱伺服器去查 , 因為 tw 伺服器內的記錄 , com.tw. 是最接近 www.iq180.com.tw. 這個名稱的 , 於是 DNS Server 又跑去問 com.tw. 伺服器 , 這個 FQDN 名稱(www. iq180.com.tw.)所對應的 IP 位址是哪裏 ?
     
  3. 但 com.tw. 伺服器內也沒有 www. iq180.com.tw. 的記錄 , 所以 com.tw. 伺服器回應請 DNS Server至 iq180.com.tw. 這台名稱伺服器去查 , 因為 com.tw. 伺服器內的記錄 , iq180.com.tw. 是最接近 www. iq180.com.tw. 這個名稱的 ,
     
  4. 於是 DNS Server 又跑去問 iq180.com.tw. 伺服器 , 這個 FQDN 名稱(www. iq180.com.tw.)所對應的 IP 位址是哪裏 ? iq180.com.tw. 伺服器比對自己的記錄檔 , 查到 www. iq180.com.tw. 的 IP 位址是 220.135.50.194 , 所以就回覆 DNS Server , www.iq180.com.tw. 的 IP 是 220.135.50.194
     
  5. DNS Server 就回覆瀏覽器 www.iq180.com.tw. 的 IP 位址 , 瀏覽器才依據此 IP 位址 , 向此 IP 位址要求網頁的服務 .


P.S. 以上查詢流程 , 是不考慮 Dns Cache 的狀況 .
如果加入 Dns Cache 的話 , 就是當 DNS Server 正確查詢過 www.iq180.com.tw. 這筆記錄後 , 在 TTL 時間(存活時間)內 , 會把 tw. , com.tw. , iq180.com.tw. , www.iq180.com.tw. 這些資訊記錄到本身的 cache 內去 , 當如果有人來問 www.twnic.com.tw. 的 IP 位址時 , 就直接去問 com.tw. 伺服器 .





IP 反查 ( Reverse )


DNS 提供 Domain Name 解析成 IP Address , 稱之為 “正解” ,
當然 , DNS 也提供 IP Address 解析成 Domain Name , 稱之為 “反解” 或 “反查” .
DNS 如何提供用戶使用 IP Address 來查詢 Domain Name 呢 ?
我們一樣畫張圖來看看吧 !



這圖這樣看的懂吧 !
當我們
ping www.hinet.net
可得到 61.219.38.89 這個位置 , 這是 DNS 正解 ,


當我們執行
host 61.219.38.89
可得到 89.88.66.203.in-addr.arpa domain name pointer www.hinet.net. 


而後面這個 host 指令 , 就是查 DNS 反解 .
其反解的查詢流程與正解是一樣的 . 它們用的是同一個結構樹哦 !



再以 www.iq180.com.tw. 為例子 :
ping www.iq180.com.tw.
就可以知道 www.iq180.com.tw. 位於 IP 220.135.50.194 ,


host 220.135.50.194
得到 194.50.135.220.in-addr.arpa domain name pointer 220-135-50-194.HINET-IP.hinet.net.
我們就知道 IP 220.135.50.194 對應的名稱為 220-135-50-194.HINET-IP.hinet.net.
這樣了解嗎 ?


一般來說 , 如果您拿到的 IP 數量不滿一個 C Class , 或者說 , 您沒有拿到一個完整的 C Class 網路 , 那您的上層 DNS 不會授權讓您管理自己所擁有 IP 的 IP 反查解析 .
也就是說 , 您在您 DNS 內設定您 ADSL 取得的 IP 位置反查是沒有用的 , 因上層 DNS 沒有授權 , 所以 Internet 上的使用者是不會來到您的 DNS Server , 來請求 IP 反查的解析 .
那怎麼辦 ? 有些網站會認定已建反解的 IP 才能夠入網站 , 以作為身份確認的依據 ,
以 HiNet 為例 , 他們會自動幫 pppoe 取得的 IP 做反解設定 , 如剛才所舉的例子 ,
host 220.135.50.194
會得到名稱為 220-135-50-194.HINET-IP.hinet.net. 就是了 ,
若是 ADSL 固接用戶 ,
HiNet 也提供 ADSL 固接 用戶申請由HiNet建立領域反解 的服務 .
而其它 ISP 有沒有提供類似服務 , 您可就得自行查查了 .




請不要忘記 , 沒有了 DNS 協定 , Internet 還是可以運作 , 但 DNS 協定帶給我們無比的方便 .
又 , 如果不了解 DNS 流程 , 而將 DNS Server 內的記錄檔設錯 , 您會就會覺得 , 設錯 DNS 記錄 , 不如沒設 DNS 記錄 .











.

沒有留言: