IP、主機(jī)名和域名
時(shí)間:2023-02-06 18:36:01 | 來源:建站知識
時(shí)間:2023-02-06 18:36:01 來源:建站知識
以
http://www.sina.com.cn/為例,http是通信使用的協(xié)議,
http://sina.com.cn是域名,www是提供服務(wù)的機(jī)器的名字(計(jì)算機(jī)名),計(jì)算機(jī)名+域名才是主機(jī)名,即
http://www.sina.com.cn是主機(jī)名。再舉個例子,
http://blog.sina.com.cn/中,blog是提供博客服務(wù)的那臺機(jī)器的名字,
http://sina.com.cn是域名,
http://blog.sina.com.cn是主機(jī)名。
域名還分級,從后往前級別依次降低,
http://sina.com.cn中,cn是頂級域名,表示中國,com是二級域名,表示商業(yè)機(jī)構(gòu)(commercial),sina是三級域名,一般用自己的名字。
在網(wǎng)絡(luò)通信中,每個IP可唯一標(biāo)識一臺主機(jī),在多網(wǎng)卡或者路由器等的情況下,每個主機(jī)可以有多個IP,通過哪個IP都可以找到該主機(jī);但是IP地址是一個32位的數(shù)字,為了便于記憶,我們通常把按每字節(jié)劃分,然后用10進(jìn)制表示出來,即我們通常說的點(diǎn)分十進(jìn)制(在IPV6的中采用的是冒號分十六進(jìn)制)。如下圖的網(wǎng)絡(luò)抓包,可以看到一個我們常見的IP地址:192.168.100.1的實(shí)際存在形式用16進(jìn)制就是:c0 a8 64 01 ,用二進(jìn)制表示就是:
11000000 101010001100100 00000001
備注:
可以看到IP地址的可讀性非常差,雖然用點(diǎn)分十進(jìn)制表示之后,可讀性有所提升,但是依然難以記憶,尤其是對于數(shù)字不敏感的老外,因此他們就想用易讀的單詞來代替這些純數(shù)字,于是就誕生了主機(jī)名和域名。
在局域網(wǎng)中,每臺主機(jī)都有一個主機(jī)名,可以使用英文字母或者單詞組成的主機(jī)名來代替該主機(jī)的IP地址(這里假設(shè)主機(jī)只有一個網(wǎng)卡一個IP),這樣就非常方便記憶,例如我們局域網(wǎng)中有一個主機(jī)名為:clsserv202的服務(wù)器,它的IP地址是:11.12.112.202,我們在使用IP地址11.12.112.202的地方使用clsserv202來代替它,例如我們要ping該主機(jī),則可以執(zhí)行命令:
ping clsserv202
該命令的執(zhí)行情況如下圖所示:
Ping 主機(jī)名
跟ping ip地址是一樣的效果,如下圖:
Ping ip地址
這內(nèi)部發(fā)生了什么事情呢?在實(shí)際開發(fā)過程中,我們通常使用gethostbyname和gethostbyaddr這兩個系統(tǒng)函數(shù),其中g(shù)ethostbyname表示通過主機(jī)名來查詢IP地址,即傳入一個主機(jī)名或域名,它就給你返回一個IP地址;gethostbyaddr表示通過IP地址來查詢主機(jī)名;
在ping命令的源碼中可以看到它就調(diào)用了gethostbyname函數(shù)將主機(jī)名轉(zhuǎn)換成IP地址,然后才進(jìn)行的ping操作。ping.c
Hosts文件在linux系統(tǒng)中有個hosts文件來記錄本機(jī)所在局域網(wǎng)中的主機(jī)的IP地址和對應(yīng)的主機(jī)名,如下圖所示:
可以看到host文件由一行行的IP和主機(jī)名的對應(yīng)關(guān)系組成,其中每行的開始是一個IP地址,緊接著IP地址(隔著空格)的就是該IP對應(yīng)的主機(jī)名;
如果局域網(wǎng)內(nèi)的所有主機(jī)都想使用域名來代替IP進(jìn)行通信,那么要求該局域網(wǎng)中每個主機(jī)上的hosts文件都要把本局域網(wǎng)中的所有主機(jī)的主機(jī)名和IP的對應(yīng)關(guān)系都存起來。當(dāng)局域網(wǎng)內(nèi)的主機(jī)非常多的時(shí)候,維護(hù)起來就非常麻煩,例如IP有變更的時(shí)候就需要挨個把所有的主機(jī)的hosts文件都更新一遍。
那么有沒有更好的辦法來解決這個問題呢?方法就是通過搭建內(nèi)網(wǎng)DNS服務(wù)來完成主機(jī)名和IP的映射;
域名
域名可以認(rèn)為是主機(jī)在公網(wǎng)環(huán)境中的標(biāo)識,在在公網(wǎng)下,對應(yīng)一個唯一的IP,例如我們訪問百度的主頁:
http://www.baidu.com主機(jī)名和域名的區(qū)別
實(shí)質(zhì)上,主機(jī)名的含義是機(jī)器本身的名字,域名是方面記錄IP地址才做的一種IP映射;通過上述介紹可以看到,二者有共性:都能對應(yīng)到一個唯一的IP上,從應(yīng)用場景上可以這么簡單理解二者的區(qū)別:主機(jī)名用于局域網(wǎng)中;域名用于公網(wǎng)中。