1. 程式人生 > >域名、dns、伺服器、IP、主機名

域名、dns、伺服器、IP、主機名

1.IP地址:每個連線到Internet上的主機都會分配一個IP地址,IP地址是用來唯一標識網際網路上計算機的邏輯地址,機器之間的訪問就是通過IP地址來進行的。IP地址採用二進位制的形式表示的話很長,比較麻煩,為了便於使用,IP地址經常被寫成十進位制的形式,用“.”分開,叫做“點分十進位制表示法”,如:127.0.0.1。

2.域名:IP地址畢竟是數字標識,使用時不好記憶和書寫,因此在IP地址的基礎上又發展出一種符號化的地址方案,來代替數字型的IP地址。每一個符號化的地址都與特定的IP地址對應。這個與網路上的數字型IP地址相對應的字元型地址,就被稱為域名。目前域名已經成為網際網路品牌、網上商標保護必備的要素之一,除了識別功能外,還有引導、宣傳等作用。如:www.hstc.edn.cn。

3.DNS:在Internet上域名與IP地址之間是一對一(或者多對一)的,域名雖然便於人們記憶,但機器之間只能互相認識IP地址,它們之間的轉換工作稱為域名解析,域名解析需要由專門的域名解析伺服器來完成,DNS就是進行域名解析的伺服器。域名的最終指向是IP。

4.URL:統一資源定位符(英語UniformResourceLocator的縮寫)俗稱為網址,網址格式為:<協議>://<域名或IP>:<埠>/<路徑>。<協議>://<域名或IP>是必需的,<埠>/<路徑>有時可省略。如:https://www.baidu.com/

DNS:

DNS(Domain Name System,域名系統),全球資訊網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議執行在UDP協議之上,使用埠號53。在RFC文件中RFC 2181對DNS有規範說明,RFC 2136對DNS的動態更新進行說明,RFC 2308對DNS查詢的反向快取進行說明。

域名:

域名Domain Name),是由一串用“點”分隔的字元組成的Internet上某一臺計算機或計算機組的名稱,用於在資料傳輸時標識計算機的電子方位(有時也指地理位置,地理上的域名,指代有行政自主權的一個地方區域)。域名是一個

IP地址上有“面具” 。域名的目的是便於記憶和溝通的一組伺服器的地址(網站,電子郵件,FTP等)。域名作為力所能及難忘的網際網路參與者的名稱。域名按域名系統(DNS)的規則流程組成。在DNS中註冊的任何名稱都是域名。域名用於各種網路環境和應用程式特定的命名和定址目的。通常,域名錶示網際網路協議(IP)資源,例如用於訪問因特網的個人計算機,託管網站的伺服器計算機,或網站本身或通過因特網傳送的任何其他服務。世界上第一個註冊的域名是在1985年1月註冊的。

伺服器:

伺服器,也稱伺服器,是提供計算服務的裝置。由於伺服器需要響應服務請求,並進行處理,因此一般來說伺服器應具備承擔服務並且保障服務的能力。 伺服器的構成包括 處理器硬碟記憶體系統 匯流排等,和通用的計算機架構類似,但是由於需要 提供高可靠的服務,因此在處理能力、穩定性、可靠性、安全性、可擴充套件性、可管理性等方面要求較高。 在網路環境下,根據伺服器提供的服務型別不同,分為檔案伺服器, 資料庫伺服器,應用程式伺服器,WEB伺服器等。

IP、主機名和域名

在網路通訊中,每個IP可唯一標識一臺主機,在多網絡卡或者路由器等的情況下,每個主機可以有多個IP,通過哪個IP都可以找到該主機;但是IP地址是一個32位的數字,為了便於記憶,我們通常把按每位元組劃分,然後用10進製表示出來,即我們通常說的點分十進位制(在IPV6的中採用的是冒號分十六進位制)。如下圖的網路抓包,可以看到一個我們常見的IP地址:192.168.100.1的實際存在形式用16進位制就是:c0 a8 64 01 ,用二進位制表示就是:

11000000 101010001100100 00000001

可以看到IP地址的可讀性非常差,雖然用點分十進位制表示之後,可讀性有所提升,但是依然難以記憶,尤其是對於數字不敏感的老外,因此他們就想用易讀的單詞來代替這些純數字,於是就誕生了主機名和域名。

在區域網中,每臺主機都有一個主機名,可以使用英文字母或者單片語成的主機名來代替該主機的IP地址(這裡假設主機只有一個網絡卡一個IP),這樣就非常方便記憶,例如我們區域網中有一個主機名為:clsserv202的伺服器,它的IP地址是:11.12.112.202,我們在使用IP地址11.12.112.202的地方使用clsserv202來代替它,例如我們要ping該主機,則可以執行命令:

ping clsserv202

這內部發生了什麼事情呢?

在實際開發過程中,我們通常使用gethostbyname和gethostbyaddr這兩個系統函式,其中gethostbyname表示通過主機名來查詢IP地址,即傳入一個主機名或域名,它就給你返回一個IP地址;gethostbyaddr表示通過IP地址來查詢主機名;

在ping命令的原始碼中可以看到它就呼叫了gethostbyname函式將主機名轉換成IP地址,然後才進行的ping操作。

Hosts檔案

在linux系統中有個hosts檔案來記錄本機所在區域網中的主機的IP地址和對應的主機名。

可以看到host檔案由一行行的IP和主機名的對應關係組成,其中每行的開始是一個IP地址,緊接著IP地址(隔著空格)的就是該IP對應的主機名;

如果區域網內的所有主機都想使用域名來代替IP進行通訊,那麼要求該區域網中每個主機上的hosts檔案都要把本區域網中的所有主機的主機名和IP的對應關係都存起來。當局域網內的主機非常多的時候,維護起來就非常麻煩,例如IP有變更的時候就需要挨個把所有的主機的hosts檔案都更新一遍。

那麼有沒有更好的辦法來解決這個問題呢?方法就是通過搭建內網DNS服務來完成主機名和IP的對映;

域名

域名可以認為是主機在公網環境中的標識,在在公網下,對應一個唯一的IP,例如我們訪問百度的主頁:www.baidu.com

主機名和域名的區別

實質上,主機名的含義是機器本身的名字,域名是方面記錄IP地址才做的一種IP對映;通過上述介紹可以看到,二者有共性:都能對應到一個唯一的IP上,從應用場景上可以這麼簡單理解二者的區別:主機名用於區域網中;域名用於公網中。





IP、主機名和域名