今天來跟大家普及一下,會是DNS解析,域名為什么要解析
2022-12-05 加入收藏
Internet上的成千上萬臺主機都是通過IP地址來區分的,而訪問這些主機的時候,顯然很難記住每一個沒有任何意義和規律的長達32位的二進制地址,即便是記住點分十進制的IP地址也是一件很令人頭疼的事情。能否用一些方便記憶的形式來訪問網絡中的主機呢?相比之下,人們顯然更愿意并且更容易記住那些有規律的、有實際意義的主機名字。但是網絡通信時只能識別二進制的IP地址,這就需要一種機制來完成主機名字到二進制IP地址的轉換工作。
在ARPANet時代,整個網絡上只有數百臺計算機,那時使用一個host.txt文件,里面記錄了所有主機名及其相對應的二進制IP地址,主機名字管理由網絡信息中心NIC集中完成。當用戶需要同某個主機進行通信時,只要用戶輸入這個主機的名字,計算機就能夠很快地查出相應的二進制IP地址并進行轉換。對于只有幾百個分時運行的計算機的網絡,這個方法還是很有效的。但是當網絡的規模不斷擴大,主機數越來越多時,NIC根據網絡的變化不斷改動host.txt文件,并定期向全網絡進行傳遞。這使得host文件越來越難以管理,網絡用戶不能忍受自己的主機名需要等待很長乃至幾天的時間才能加在host.txt文件中,更何況還有命名沖突的可能(除非全網絡的主機名被統一管理,這在一個復雜的國際網絡上顯然是不現實的)。另外,頻繁的host.txt文件下載請求對維護站主機造成了巨大的壓力,服務的質量得不到保證,一旦維護站出了故障,整個網絡就會癱瘓。
因此,迫切需要一個簡單的管理方法來解決這些問題。
1984年,因特網開始采用層次式的名字空間組織方案——域名系統DNS(Domain Name System),并使用分布式數據庫管理整個名字空間。域名系統在RFC1034和RFC1035中定義,并已成為因特網的正式標準。
當網絡上的一臺客戶機需要訪問耨服務器上資源時,客戶機的用戶只需在瀏覽器的地址文本框中數據該服務器網址,就可以與該服務器連接,計算機的硬件只能識別IP地址,不能識別其他類型地址,這樣在用戶容易記住的地址和計算機能夠識別的地址之間就需要轉換,DNS服務器便充當這個地址解析的角色
DNS是域名系統的縮寫(Domain Name System)
是一種組織成域層次結構的計算機和網絡服務命名系統
采用層次化、分布式、客戶-服務器模式的名字管理代替原來的集中式管理
允許命名管理者在較低的結構層次上管理用戶自己的名字
這樣把名字空間劃分的足夠小,由不同的組織進行分散管理,使名字管理更加靈活和方便
DNS主要包含三部分的內容:
層次樹型結構的域名空間(Domain Name Space)、
存儲有關域名及其二進制IP地址信息的名字服務器(Name Server)
實現域名與IP地址轉換的解析器(Resolver)。
DNS系統采用客戶/服務器工作方式。
解析器駐留在客戶端,按用戶的需要創建查詢請求并提交給名字服務器,同時將查詢結果返回給客戶,因此人們習慣將域名到二進制IP地址的轉換過程叫做域名解析。
運行在專門的網絡節點上保存域名樹結構(部分或者全部域名空間)和相應的信息的分布式數據庫系統稱為名字服務器。
在DNS中,域名服務器是一個服務器軟件,運行于指定的計算機,完成域名-IP地址的映射
理論上講可以只使用一個域名服務器來管理網絡上的所有主機名,并回答所有的IP查詢
然而網絡規模不斷擴大,這種方式下域名服務器負荷越來越重,會導致無法工作
該域名服務器一旦出現故障,整個網絡就會癱瘓。所以DNS采用聯機分布式數據庫系統。
DNS的分布式結構使得系統的生存性增強,即使某個服務器出了故障,整個系統還能正常運行;而客戶/服務器的工作方式促使大多數名字解析任務在本地完成,降低了因特網的通信量,提高了系統的效率。
域名空間(層次型域名系統)
網絡主機命名的三個問題:
主機名字的唯一性
要想因特網正常工作,和IP地址一樣,網絡上任何一個計算機的域名也必須是惟一的。
便于管理
便于映射
為了便于管理和查詢,域名空間使用層次的樹狀結構。
域名的具體結構或命名規則稱為域名空間。
DNS的分層管理機制采用一個規則的樹形結構的名字空間
每個節點都有一個獨立的節點名字,即標號
空標號“”保留為根,兄弟節點(同一父節點的各個子節點)不允許重名
非兄弟節點可以重名,葉節點通常用來代表主機
DNS將整個名字空間分成若干個域
一個節點的域由該節點及該節點以下的名字空間組成
一個域是樹型域名空間的一顆字數,每個域都有一個域名
域名定義了該域在分布式主機數據庫中的位置
每個域還可以再劃分為子域,子域是域的子集
看上去像是一棵倒置的樹,樹中每個節點和特定層次的域相對應,越靠近樹根級別越高。
根域下面是頂級域,頂級域之下是二級域,再下面是三級域,依此類推。
域(Domain)是樹狀的域名空間中的一棵子樹,代表因特網的某個可被管理的資源集合;
域還可以根據需要被進一步劃分為子域。
樹葉是Internet上一臺主機的名稱,通常是因特網上提供特定服務的服務器主機的名稱,
例如www、ftp、mail等等,它的下面就不能再劃分子域了。
在域名樹中的中間節點和葉子統稱為節點。
每個節點域有一個名字(不超過63個字符,且不用區分大小寫字母),
不同的節點域可以使用相同的名字,
根節點沒有名字。
某個節點的完整域名由從該節點到根的標記序列構成
中間以“.”(小數點)為分隔。
寫的時候由左至右按級別依次從低到高書寫,最右邊為頂級域,
如..三級域.二級域.頂級域
域名lib.pku.edu.cn由lib,pku,edu,cn共四個節點標識符組成,
這些標識符通常稱為標號
每個標號后面的各個標號稱為域
在lib.pku.edu.cn中最低級域為lib.pku.edu.cn,第三級域是pku.edu.cn,代表北京大學;第二級域是edu.cn代表教育機構;頂級域為cn代表中國
這種類似文件目錄樹的層次結構保證了每一個域名在全因特網范圍內是唯一的。雖然有的節點域使用了相同的名字,但是它們隸屬于不同的父域,下面又劃分不同的子域,因而保證了節點的完整域名在全網是唯一的
例如,www.tsinghua.edu.cn、mail.xjtu.edu.cn、www.xjtu.edu.cn,其中第1,3個計算機的名字都是www,但隸屬于不同三級域,而第2、3個域名表示相同三級域下不同的計算機
域名命名限制
域名不能超過63個字符
路徑全名不能超過255個字符
書寫時不區分大小寫
每級域名目前都是由英文字母和數字組成
級別最低的域名寫在最左邊,級別最高的域名寫在最右邊
域名系統不規定一個域名需要包含多少個下級域名
也不規定每一級的域名代表什么意思
各級域名由上一級域名管理機構管理
最高域名則由NIC管理
域名只是個邏輯概念,并不能反映出計算機所在的物理地點
域名管理
在DNS中,每個域分別由不同的組織進行管理。
每個組織都可以將它的域再分成一定數量的子域并將這些子域委托給其他組織進行管理。
例如,管理edu.cn域的中國互聯網絡信息中心(CNNIC)又授權北京大學信息中心來管理pku.edu.cn子域。
域名系統對下級域的個數和層數沒有規定,但是整個域名的長度不得超過255個字符。
域的命名由使用者自己決定,各級域的域名由其上一級的域名管理機構管理,而頂級域名由國際互聯網代理成員管理局IANA全權負責。
在1998年之后,國際域名注冊是由Internet名字與號碼指派公司ICANN(Internet Corporation for Assigned Names and Numbers,ICANN)統一管理的。
頂級域名(Top LevelDomain,TLD)有通用頂級域名以及國家頂級域名之分。
1.通用頂級域名gTLD
RFC1591最早規定的頂級域名有6個,
分別為
.edu(教育機構),
.com(經濟實體),
.org(各種不適于注冊在其他類別域的組織機構和非政府組織),
.net(網絡服務機構),
.gov(政府部門或機構,美國專用)和.mit(軍事部門,美國專用)
.int(用于由國際協議和國際數據庫建立的組織機構)。
每一個頂級域類別都是為相應的機構創建的。
2.國家頂級域名nTLD
國家頂級域名采用由ISO-3166標準規定的兩位字母的國家代碼的形式,目前有243個
如.us表示美國,.cn表示中國等。
由于因特網用戶數量的劇增,2000年11月起又增加了7個通用頂級域名
分別是:.biz,.info,.name,.pro,.museum,.aero和.coop。
在國家頂級域名之下的二級域名均由該國家自行確定。
我國將二級域名劃分為“類別域名”和“行政區域名”兩大類。
其中“類別域名”有6個,它們是
.AC適用于科研機構;
.com適用于工商、金融等企業,
.edu(適用于中國的教育機構),
.gov(適用于中國的政府機構),
.net(適用于提供互聯網絡服務的機構),
.org(適用于非營利性組織);
“行政區域名”共34個,適用于我國的各省、自治區、直轄市,
例如.bj表示北京市,.sh表示上海市等。
在中國注冊域名通常分為國內域名注冊和國際域名注冊。
目前,國內域名注冊統一由中國互聯網絡信息中心(CNNIC)進行管理,具體注冊工作由通過CNNIC認證授權的各代理商執行。
國際域名是由ICANN統一管理的,具體注冊工作由通過CNNIC認證授權的各代理商執行。
中文域名指能用漢字命名的新一代域名,它是中國人自己的域名,使用和記憶非常方便。
域名與IP
在這里要特別強調一點:雖然域名和IP地址都是分層的地址結構,而且都是以“.”為分隔的,但是二者的各層之間并沒有對應的關系。域名是按名字組織關系來劃分的,是一個邏輯概念,與計算機在網絡中的物理位置和子網的劃分沒有任何關系,而且“.”的數量不一定是三個;IP地址是一個32bit的二進制數,點分十進制記法中的“.”是為了提高可讀性,在計算機和網絡中處理的IP地址是沒有“.”的
域名解析
使用域名進行訪問網絡時,不能直接用于TCP/IP協議的路由選擇
需要先把域名解析成IP地址,這種主機域名映射成IP地址的過程叫做域名解析
進行域名解析的主機叫做DNS服務器(域名服務器,名字服務器,Name Server),就是將因特網上主機的域名轉化為計算機能識別的IP地址。
在DNS系統中,存儲有關域名及其二進制IP地址信息的程序軟件運行在專門的網絡節點之上,完成域名到IP映射
各服務器只負責解析主管范圍的解析工作
DNS系統由一個分布式的主機信息數據庫管理互聯網上所有主機的域名與IP地址,
不同域名是數據庫的不同部分
每個域至少有一個域名服務器進行管理,該域名服務器保存著這個域名空間的所有信息,并負責回答某個域名地址的查詢請求
查詢結構有兩種:本地計算機含有該域名地址則直接給出,若本地沒有該域名則給出其他域名服務器地址
根服務器知道所有一級域的服務器位置;
一級域名服務器知道本域內所有的域名服務器位置
收到域名查詢后,根域名服務器提供該域名所在的第一級域名服務器地址和名字,
第一級再提供第二級,以此類推,直到得到答案
經過統計發現,大部分的名字轉換請求為本地請求,
因此為了提高查詢效率,不必每次都去訪問根名字服務器。
另外,名字服務器還可以在其本地緩沖區存儲查詢過程中獲得的其他名字服務器的信息,
以便在將來的查詢中縮短響應時間,
用戶的主機中也可以使用這樣的緩存技術來加速查詢。
當然,名字服務器并不會永遠保留這個信息,而會在一定時間后放棄它。
這個到期間隔時間稱為存活期(Time To Live,TTL)。
DNS數據庫中的每一數據都有相應責任區的管理員指定的TTL。
DNS服務器類型
主要DNS服務器
當DNS服務器管理主要區域時,被稱為主要DNS服務器
它是主要區域的集中更新源,用戶可以部署兩種模式主要區域
1.標準主要區域;此區域數據存在本地文件中,只有主要DNS可以管理,一旦主DNS出現故障,此主要區域不能再進行修改,輔助服務器答復DNS的解析請求。此區域只支持非安全的動態更新
2.活動目錄集成主要區域;此區域僅當在域控制器上部署DNS時有效,區域數據存放在活動目錄中并隨目錄的復制而復制。默認情況下,每一個運行在域控制器上的DNS服務器都將成為主要DNS,并可以修改區域中數據(多點更新),避免標準主要區域的單點故障。活動目錄集成主要區域支持安全的動態更新
輔助DNS服務器
實現負載均衡和避免單點故障
輔助DNS用于獲取區域數據的源DNS服務器稱為主服務器
主服務器可以由主要DNS服務器或者其他輔助DNS來擔當
當創建輔助區域時,要求用戶指定主服務器
在輔助服務器和主服務器之間存在著區域復制,用于從主服務器更新區域數據