一文看懂:網(wǎng)址,URL,域名,IP地址,DNS,域名解析
關(guān)注我們,設(shè)為星標(biāo),每天7:30不見不散,架構(gòu)路上與您共享 回復(fù)"架構(gòu)師"獲取資源
一、一個疑問
在指出這個問題之前,首先我們要清楚以下幾點:
互聯(lián)網(wǎng)上的所有數(shù)據(jù)都是存儲在主機(jī)(服務(wù)器)上
互聯(lián)網(wǎng)中的所有主機(jī)都擁有唯一的IP地址
互聯(lián)網(wǎng)中任意兩臺主機(jī)通信都是通過IP地址來實現(xiàn)
那么了解上述內(nèi)容之后,我們以兩臺主機(jī)最簡單的通信方式——上網(wǎng)為例,為大家說明這個疑問是什么!
21世紀(jì)的每個人應(yīng)該都熟悉網(wǎng)上沖浪(不知道還有沒有人用這個詞)的過程,我們上網(wǎng)的實質(zhì)就是獲取網(wǎng)址對應(yīng)主機(jī)上的數(shù)據(jù)并在用戶主機(jī)上進(jìn)行展示(瀏覽器上),那么我們就該懷疑一個問題:
互聯(lián)網(wǎng)中的任意兩臺主機(jī)通信是依靠IP地址進(jìn)行的,而我們上網(wǎng)只是輸入的網(wǎng)址,并不是IP地址,怎么就能找到對方主機(jī)并獲取它的數(shù)據(jù)呢?

一個疑問
因此,勢必存在某種機(jī)制,將網(wǎng)址解析成為了IP地址,再通過IP地址進(jìn)行通信!這個機(jī)制也是貫穿本文所有技術(shù)知識的主線!
二、網(wǎng)址
1. 網(wǎng)址是什么?
網(wǎng)址,也叫做域名,又稱URL,是互聯(lián)網(wǎng)用戶用來標(biāo)識主機(jī)的名字,該名字具有唯一性,層次性,字面意義可以表示主機(jī)的賬號、功能、性質(zhì)、所屬的地區(qū)或組織,便于所有互聯(lián)網(wǎng)用戶記憶與使用!
URL,即Uniform Resource Locator,統(tǒng)一資源定位符,用于指明互聯(lián)網(wǎng)主機(jī)的服務(wù)器及具體的網(wǎng)頁位置,URL的構(gòu)成策略與示例如下:

URL構(gòu)成與示例
特點:網(wǎng)址命名遵循互聯(lián)網(wǎng)域名規(guī)則,且易于管理,包括分配,確認(rèn)、回收,同時與主機(jī)IP地址進(jìn)行綁定,在用戶訪問域名時能夠高效的將網(wǎng)址映射到IP地址(高效由域名服務(wù)器保證,詳見后文)。

網(wǎng)址
2. 網(wǎng)址的出現(xiàn)解決了什么問題?
網(wǎng)址/域名/URL的出現(xiàn)解決了以下兩個問題:
問題一:IP地址是互聯(lián)網(wǎng)中所有主機(jī)的統(tǒng)一尋址方式,使用IP地址能夠直接訪問互聯(lián)網(wǎng)上主機(jī)數(shù)據(jù)、資源,但由于IP地址只是一串?dāng)?shù)據(jù),不具有實際意義,導(dǎo)致所有互聯(lián)網(wǎng)用戶記憶起來十分困難。
問題二:在Internet架構(gòu)中,幾乎所有的應(yīng)用層軟件都不是通過IP地址來訪問互聯(lián)網(wǎng)中的主機(jī)資源,而是要求用戶輸入具有一定意義的主機(jī)名字來訪問對應(yīng)主機(jī)的。

IP地址記憶困難
3. 網(wǎng)址的結(jié)構(gòu)組成
上面提到的主機(jī)名稱,也就是網(wǎng)址/域名的命名遵循了一定規(guī)則,這個規(guī)則便是由互聯(lián)網(wǎng)中的“名字管理機(jī)構(gòu)”來制定的,即域名系統(tǒng)DNS。這里先介紹下網(wǎng)址的組成:
互聯(lián)網(wǎng)中的某臺主機(jī)域名由其所屬各級域名及其自身名字共同組成(即由子域名構(gòu)成),級別從左到右依增加,最右邊為頂級域名,最左邊為主機(jī)自己的名字,各級子域名使用“.”隔開,常見的格式如下:
主機(jī)名.機(jī)構(gòu)名.網(wǎng)絡(luò)名.頂級域名 
中科大域名組成
下面將詳細(xì)介紹上圖提到的域名系統(tǒng)DNS,包括DNS誕生解決了什么問題,域名發(fā)展史,域名層級,部分頂層域名對象,域名服務(wù)器,域名解析過程與IP技術(shù)拓展!
三、DNS域名系統(tǒng)
1. DNS是什么?
DNS,英文全寫為Domain Name System,中文意思為域名系統(tǒng),是互聯(lián)網(wǎng)中提供域名與IP地址互相映射的分布式數(shù)據(jù)庫。
2. DNS發(fā)展史

DNS發(fā)展史
3. DNS解決了什么問題?
前文已經(jīng)提到DNS域名系統(tǒng)是互聯(lián)網(wǎng)中的主機(jī)域名管理系統(tǒng),充當(dāng)“管理員”的角色!DNS在誕生之前(ARPANET時期),互聯(lián)網(wǎng)中的每臺主機(jī)都是用一個文件來紀(jì)錄所有的主機(jī)名及其IP地址,這個文件就是hosts.txt (現(xiàn)在是hosts文件,無后綴),所有主機(jī)都必須定期從相應(yīng)站點來更新該文件,用于同步互聯(lián)網(wǎng)中主機(jī)的新增、變更、消失。

hosts文件內(nèi)容
可以想象,隨著互聯(lián)網(wǎng)中的主機(jī)數(shù)量增加,hosts文件必將越來越大,在維護(hù)更新方面的難度更是激增,主機(jī)名更是頻繁發(fā)生沖突,為了解決這個問題,1983年DNS域名系統(tǒng)問世。

DNS解決了什么問題
4. DNS域名層次結(jié)構(gòu)
DNS是一個分層的樹形結(jié)構(gòu),各層由域構(gòu)成,域的意義如下:
域表示一個區(qū)域、一個范圍
每個域可容納大量主機(jī)
每個主機(jī)必有自己的域,卻不一定有自己的域名地址
DNS標(biāo)準(zhǔn)規(guī)定,單個域名長度一般在63個字符以內(nèi),最長不超過255個字符
DNS標(biāo)準(zhǔn)規(guī)定,域名中的字符限26個字母(不分大小寫),數(shù)字,連字符“-”(不能作為子 域名首字母與末尾字母)
域所在服務(wù)器稱為域名服務(wù)器,主要用于將域名映射為IP地址(詳見后文)
DNS的域名樹由根域,頂級域,二級域及其子域構(gòu)成,其結(jié)構(gòu)圖與示例如下:

域名結(jié)構(gòu)
下面逐一介紹各級域:
根域,由互聯(lián)網(wǎng)網(wǎng)絡(luò)信息中心(InterNIC)負(fù)責(zé)管理,用點“.”表示,無名稱,是域名系統(tǒng)中的最高級別域,標(biāo)準(zhǔn)域名結(jié)尾應(yīng)包含根域“.”,但實際使用中該根域都是省略的,所以大家常見的網(wǎng)址末尾并沒有“.”。
頂級域(Top-Level Domains = TLD),隸屬于根域,是僅次于根域的下一級域,由國家頂級域(ccTLD)與通用頂級域(gTLD)共同組成。國家頂級域共有243個(即全球的國家與地區(qū)總數(shù)),而通用頂級域,也叫國際域名,其數(shù)量是隨著因特網(wǎng)的發(fā)展在逐漸增加,理論會達(dá)到無窮多個。下表羅列出了常見的通用頂級域名:

通用頂級域名
二級域,正式給組織和個人注冊使用的唯一名稱,如亞馬遜、IBM,微軟的官方網(wǎng)址(頭條不能帶網(wǎng)址)中的字眼“amazon”“ibm”“microsoft”就是這些企業(yè)注冊的二級域名。
二級域以下子域,在二級域中的組織機(jī)構(gòu)可以根據(jù)需要來進(jìn)一步劃分子域,如銷售部門用sale子域名,業(yè)務(wù)部門用business子域名等。
前文中已經(jīng)提到域名的出現(xiàn)是為了解決用戶記憶困難的問題,實際在互聯(lián)網(wǎng)中并不能使用域名進(jìn)行主機(jī)間的通信,而仍然需要使用IP地址進(jìn)行數(shù)據(jù)交互,所以DNS系統(tǒng)在提供域名功能的同時更大的作用是能夠高效的將域名解析映射到對應(yīng)主機(jī)的IP地址。這就是即將為大家介紹的域名服務(wù)器的作用。
5. 域名服務(wù)器
域名服務(wù)器構(gòu)成了DNS中的分布式網(wǎng)絡(luò)系統(tǒng),其功能主要是為內(nèi)外主機(jī)提供域名與IP地址的互相解析映射服務(wù)。域名服務(wù)器分布在互聯(lián)網(wǎng)的各子網(wǎng)中,每個域名服務(wù)器負(fù)責(zé)管理連接到本子網(wǎng)的所有主機(jī),并為其提供服務(wù),服務(wù)內(nèi)容為:
客戶機(jī)應(yīng)用程序?qū)⒛繕?biāo)主機(jī)域名發(fā)送給其所屬子網(wǎng)的域名服務(wù)器,域名服務(wù)器給該客戶機(jī)返回對應(yīng)的目標(biāo)主機(jī)IP地址;若本子網(wǎng)中的域名服務(wù)器無法查詢到目標(biāo)主機(jī)域名的IP,則根據(jù)DNS的標(biāo)準(zhǔn)IP地址解析流程提供進(jìn)一步的查詢服務(wù),該過程將在下文“域名解析過程”中詳細(xì)介紹。
四、域名解析過程
通過域名獲取對應(yīng)IP地址的過程叫做域名解析,參與域名解析過程最重要的單元就是域名服務(wù)器,域名服務(wù)器的體系結(jié)構(gòu)如下:

域名服務(wù)器的結(jié)構(gòu)
根域名服務(wù)器,是全球級別最高,最重要的域名服務(wù)器,全世界共有13臺(IPv4根域名服務(wù)器,編號為A到M),1個主根服務(wù)器和9個輔根服務(wù)器在美國,歐洲2個輔根服務(wù)器,位于英國和瑞典,亞洲1個輔根服務(wù)器,位于日本。根域名服務(wù)器只紀(jì)錄其下級頂級域名服務(wù)器的域名及其IP地址,當(dāng)?shù)图売蛎?wù)器遇到無法解析的域名時,首先會向根域名服務(wù)器求助。
頂級域名服務(wù)器,級別同頂級域,用于紀(jì)錄注冊在該頂級域名服務(wù)器上的所有二級域名并提供DNS查詢服務(wù)。
權(quán)限域名服務(wù)器,為一個區(qū)域的主機(jī)提供DNS查詢服務(wù),如果查詢結(jié)果為空,則通知發(fā)起請求的DNS用戶應(yīng)到哪個權(quán)限域名服務(wù)器進(jìn)一步查詢。
☆本地域名服務(wù)器,不在上圖的域名服務(wù)器體系中,但在域名解析中扮演重要的角色。每主機(jī)發(fā)出的DNS域名查詢請求首先都會發(fā)送到本地域名服務(wù)器。本地域名服務(wù)器可以設(shè)立在個人,大學(xué),公司等各種范圍內(nèi),又叫做首選DNS(很熟悉吧),就是我們計算機(jī)網(wǎng)絡(luò)連接中的首選DNS:

本地DNS服務(wù)器
一張圖看懂域名解析全過程:

域名解析詳細(xì)過程
上圖以用戶訪問頭條網(wǎng)站為例,簡明扼要的為大家講述了用戶輸入網(wǎng)址到獲取IP地址的全過程,下面我們來詳細(xì)解釋該過程:
用戶打開計算機(jī),在瀏覽器中輸入頭條網(wǎng)址后計算機(jī)將向本地DNS服務(wù)器發(fā)起域名解析請求。本地DNS服務(wù)器通常由互聯(lián)網(wǎng)服務(wù)提供商(ISP)提供,如三大運(yùn)營商。
本地DNS服務(wù)器接收到用的DNS請求后,首先查詢其自身緩存紀(jì)錄中是否存在頭條域名對應(yīng)的IP地址,如果存在,則直接將該IP地址回傳給用戶計算機(jī);否則,將進(jìn)一步向根域名服務(wù)器發(fā)起求助。
由于根域名服務(wù)器只會紀(jì)錄其下級的13個頂級域名服務(wù)器,而不會直接紀(jì)錄域名與IP的映射關(guān)系,所以在接收到本地域名服務(wù)器的解析請求時,根域名服務(wù)器將告知本地服務(wù)器:“你所請求的域名由.com頂級域名服務(wù)器管理,其IP為xxx”。
本地DNS服務(wù)器進(jìn)一步向.com頂級域名服務(wù)器發(fā)起域名解析請求,由于.com域名服務(wù)器也不會紀(jì)錄域名與IP的映射關(guān)系,而是告知請求者去該域名所屬的域服務(wù)器上查詢,并給出其IP地址。
本地DNS服務(wù)器繼續(xù)向域服務(wù)器發(fā)起頭條域名解析請求,便會得到頭條域名對應(yīng)的IP地址,這時本地DNS服務(wù)器不僅會向用戶計算機(jī)返回IP地址,同時在其自身緩存中增加頭條域名與其IP的紀(jì)錄,從而加快其他計算機(jī)獲取頭條域名對應(yīng)IP的解析速度。
總結(jié)
本文以通俗易懂的語言結(jié)合實際問題詳細(xì)闡述了網(wǎng)址、域名、IP地址、URL、域名服務(wù)器、域名解析等相關(guān)技術(shù)原理,并配置了細(xì)致的示意圖,讓內(nèi)容更易于讀者理解、記憶。希望有利于讀者的學(xué)習(xí)、工作!
來源:猴哥技術(shù)站

到此文章就結(jié)束了。如果今天的文章對你在進(jìn)階架構(gòu)師的路上有新的啟發(fā)和進(jìn)步,歡迎轉(zhuǎn)發(fā)給更多人。歡迎加入架構(gòu)師社區(qū)技術(shù)交流群,眾多大咖帶你進(jìn)階架構(gòu)師,在后臺回復(fù)“加群”即可入群。
這些年小編給你分享過的干貨
1.SpringBoot物流管理項目,拿去學(xué)習(xí)吧(附源碼)
2.ERP系統(tǒng),自帶進(jìn)銷存+財務(wù)+生產(chǎn)功能,拿來即用(附源碼)
3.帶工作流的SpringBoot后臺管理項目快速開發(fā)(附源碼)
4.最好的OA系統(tǒng),拿來即用,非常方便(附源碼)
5.SpringBoot+Vue完整的外賣系統(tǒng),手機(jī)端和后臺管理,附源碼!
6.SpringBoot+Vue 可視化拖拽編輯的大屏項目(附源碼)

轉(zhuǎn)發(fā)在看就是最大的支持??
