DNS是計算機域名系統 (Domain Name System)
- 域名系統采用類似目錄樹的等級結構。
域名服務器是指保存有該網絡中所有主機的域名和對應IP地址,并具有將域名轉換為IP地址功能的服務器。
- 域名服務器為客戶機/服務器模式中的服務器方,它主要有兩種形式:主服務器和轉發服務器。
域名解析是將域名映射為IP地址的過程。
- DNS是應用層協議,client端(一般指瀏覽器)構建DNS查詢請求,依次被傳輸層,網絡層,數據鏈路層等封裝傳送到達DNS服務器端,最終client端接收到DNS響應消息
- DNS主要基于UDP運輸層協議
- 一次UDP名字服務器交換可以短到兩個包:一個查詢包、一個響應包。一次TCP交換則至少包含9個包:三次握手初始化TCP會話、一個查詢包、一個響應包以及四次分手的包交換。
考慮到效率原因,TCP連接的開銷大得,故采用UDP作為DNS的運輸層協議,這也將導致只有13個根域名服務器的結果。
- 一次UDP名字服務器交換可以短到兩個包:一個查詢包、一個響應包。一次TCP交換則至少包含9個包:三次握手初始化TCP會話、一個查詢包、一個響應包以及四次分手的包交換。
小插曲,為什么只有13臺根域名解析服務器?
- 因為要UDP報文中包含所有的根服務器信息
- 所以現在只能放13條地址在一個包里,也就是416字節,
- 在IPV4下一個單獨的包,解析后只能有512字節用來描述這些跟域名服務器。一個UDP數據包(512bit)必須包括所用跟服務的主機名和IP 。一個完整的IP 包括8 * 4 個字節 也就是 32 個。(11111111.11111111.11111111.11111111)
- 那么IP占用是32 * 13 = 416 。十三臺服務器的主機 是 A 到 M (13)其中每個字母占 7 個長度 ( A 表示 為 1000001)(M 表示為 1001101)總共長度為 7 * 13 = 91 。IP+主機名 = 507 所以一個UDP數據包只能放 13 個 這就是根服務器 目前只能有 13個而且主機名只是 A到M 命名的原因
- 假設是14個 IP + 主機名 = 14 * 32 + 7 * 14 = 546。都已經超過UDP的報文長度了
- 講了一大堆理論的東西,真正的原因還是因為互聯網這東西是美國興起的,自然占據了主動權,所以目前中國沒有根域名服務器!但是在2000年初,國家有了很多關于國家安全的措施。特此2018國慶,預祝我們祖國越來越昌盛!
- 關于為什么中國沒有根域名服務器的解析
如有錯誤希望指正
域名的分層結構
DNS 查詢的順序
- 是否是本機
- 是否是緩存
- HOSTS文件查詢
- DNS服務器查詢
下面來個生動形象的例子
黑色粗線,表示域名的分層結構!
箭頭表示訪問的順序