主機名:
// 主機的一種標識方法如:
cnn.com
www.yahoo.com
gaia.cs.umass.edu
cis.poly.edu
主機名可能由不定長的字母數字組成,路由器難以處理.由于這些原因,
主機也可以使用IP地址(IP address) 進行標識
// 簡略介紹ip地址
// 一個IP地址由4個字節組成,并有著嚴格的層次結構
// 例如:121.7.106.83這樣一個IP地址,其中的每個字節都被句點分隔開來,表示了0~255的十進制數.
DNS提供的服務:
// 識別主機的方式有2種:通過主機或者IP地址
// 人們喜歡便于記憶的主機名標識方式
// 路由器喜歡定長的、有著層次結構的IP地址
// 為了折衷這些需求,就產生了DNS(Domain Name System, DNS).DNS是:
// 1.一個由分層的DNS服務器實現的分布式數據庫;
// 2.一個使得主機能夠查詢分布式數據庫的應用層協議// 注:DNS服務器通常是運行BIND(Berkeley Internet Name Domain)軟件的UNIX機器
// DNS運行在UDP上面,使用端口53
DNS工作機理概述:
// 當某個用戶主機上的一個瀏覽器請求URL www.someschool.edu/index.html頁面時會發生如下:
// ·同一個用戶主機上運行著DNS應用的客戶端
// ·瀏覽器從輸入的URL中提取出主機名www.someschool.edu,并將該主機名傳遞給DNS應用的客戶端
// ·DNS客戶像DNS服務器發送一個包含主機名的請求
// ·DNS客戶最終會收到一份回答報文,其中包含對于該主機的IP地址.
// ·一旦瀏覽器接收到來自DNS的該IP地址,它能夠向位于該IP地址80端口的HTTP服務器進程發起一個TCP連接
主機別名(host aliasing):
// 有些主機可能擁有一個或多個別名,如:
// relay1.west-coast.enterprise.com的主機,可能還有兩個別名
// enterprise.com 和 www.enterprise.com。
// 稱relay1.west-coast.enterprise.com為規范主機名
// 很明顯,主機別名(enterprise.com)更容易記憶.
// 通過DNS可以主機別名查找到對應的規范主機名以及主機的IP地址
負載均衡(load distribution):
// 用于在冗余的服務器之間進行負載分配
DNS的分布式、層次數據庫:
// DNS的一種簡單設計是在因特網上只使用一個DNS服務器,該服務器包含所有的映射...
// 這種設計有很多缺陷(單點故障、通信容量、維護麻煩等),因此采用分布式、層次數據庫// DNS使用了大量的DNS服務器,它們以層次方式組織,并且分布在全世界范圍內.
// 沒有一臺DNS服務器擁有因特網上所有主機的映射(映射分布在所有的DNS服務器上).
DNS大致分為3類:根DNS服務器、頂級域DNS服務器和權威DNS服務器
頂級域(Top_Level Domain, TLD)DNS服務器:
// 這些服務器負責頂級域名如com、org、net、edu和gov
// 以及素有國家的頂級域名如uk、fr、ca和jp
權威DNS服務器:
// 在因特網上具有公共可訪問主機的每個組織機構必須提供公共可訪問的DNS記錄,這些記錄將這些主機的名字映射為IP地址
// 一個組織機構的權威DNS服務器收藏了這些DNS記錄
// 一個組織機構能夠選擇實現它自己的權威DNS服務器以保存這些記錄
// 另一種方法是,該組織能夠支付費用,讓這些記錄存儲在某個服務提供商的一個權威DNS服務器中
本地DNS服務器(local DNS server):
// 每個ISP都有一臺本地DNS服務器(也叫默認名字服務器)
// 當主機與一個ISP連接時,該ISP提供一臺主機的IP地址
// 一臺主機可能有一臺或墮胎本地DNS服務器的IP地址.
// 可以通過訪問Windows或UNIX的網絡狀態窗口來確定本地DNS服務器的IP地址(ipconfig?)// 主機的本地DNS服務器通常"鄰近"本主機.
// 對于某機構的ISP而言,本地DNS服務器可能就與主機在同一個局域網中
// 對于某居民區的ISP來說,本地DNS服務器通常與主機相關不超過幾臺路由器// 當主機發出DNS請求時,該請求被發往本地DNS服務器,它起著代理的作用
// 并將該請求轉發到DNS服務器層次結構中(權威DNS服務器、TLD DNS服務器、根DNS服務器)
更詳細的論述:
// 假設主機cis.poly.edu想知道主機gaia.cs.umass.edu的IP地址
// 設某理工大學的本地DNS服務器為dns.poly.edu
// 設gaia.cs.umass.edu的權威DNS服務器為dns.umass.edu
// (1)主機cis.poly.edu首先向它的本地DNS服務器dns.poly.edu發送一個DNS查詢報文(含主機名gaia.cs.umass.edu)
// (2)本地DNS服務器將該報文轉發到根DNS服務器
// (3)根DNS服務器注意到其edu前綴并向本地DNS服務器返回負責edu的TLD的IP地址列表
// (4)該本地DNS服務器則再次向這些TLD服務器之一發送查詢報文
// (5)該TLD服務器注意到umass.edu前綴,并用權威DNS服務器的IP地址進行響應
// (6)該權威DNS服務器是負責馬薩諸塞大學的dns.umass.edu
// (7)最后本地DNS服務器直接向dns.umass.edu重發查詢報文,dns.umass.edu用gaia.cs.umass.edu的IP地址進行響應
// (8)本地DNS服務器將IP地址返還給端系統,// 得到ip地址后,就可以建立TCP連接了!!!
參考《計算機網絡-自頂向下方法》(原書第6版)P89~P92