域名、主機服務(wù)器、ip、網(wǎng)卡與網(wǎng)站之間的關(guān)系是什么?
網(wǎng)友解答: 首先,你需要了解三個基礎(chǔ)網(wǎng)絡(luò)知識。1 DNS1.1 DNS簡單說就是你給它一個域名,它解析一個IP給你。但是實際上情況不是這么簡單的。客戶端發(fā)起一個DNS查詢請求,提交一個完
首先,你需要了解三個基礎(chǔ)網(wǎng)絡(luò)知識。
1 DNS
1.1 DNS簡單說就是你給它一個域名,它解析一個IP給你。但是實際上情況不是這么簡單的。
客戶端發(fā)起一個DNS查詢請求,提交一個完整主機名(例如www.abc.com)到設(shè)置的DNS服務(wù)器上,DNS服務(wù)器如果查詢到相關(guān)記錄,則返回這個記錄。對于IPv4,記錄分為A記錄或者CNAME。A記錄表示是一個IPv4的地址,CNAME表示為另外一個主機名(例如server1.realserver.com)。A記錄允許同名存在,多個不同的IP被對應(yīng)到同一個主機名上,也允許使用根記錄,本例中即為abc.com,不帶任何前綴;CNAME不允許同名存在,不允許根記錄,也不允許與A記錄同名。如果客戶端得到的返回是一個CNAME,則會重新再來一次DNS查詢?nèi)ソ馕鲞@個CNAME的IP。對于這個CNAME的查詢,可能返回另外的CNAME,則這個過程會很長,直至解析出A記錄。
1.2如果DNS服務(wù)器上沒有查詢到相關(guān)記錄,則會詢問上一層的DNS服務(wù)器。如果上一層服務(wù)器解析出結(jié)果,則它在返回給用戶結(jié)果時,順便自己緩存一份。緩存的時間由域名的TTL決定。
1.3每個域名首先要注冊在跟DNS上NS服務(wù)器名稱。當(dāng)一個區(qū)域中最頂層的DNS也沒有用戶查詢的主機名記錄時,則會首先向INTERNET跟DNS獲取這個NS服務(wù)器名稱,并嘗試向這個NS服務(wù)器發(fā)起查詢請求。NS服務(wù)器必須響應(yīng)并響應(yīng)這個查詢。如果DNS跟服務(wù)器無法被連接到、NS無法被找到、無法被連接到或者NS服務(wù)器無法解析,則本主機名最終解析失敗。
1.4 DNS如果返回多條A記錄時,會生成一個有序集合。這個排序根據(jù)歷史查詢散列,并根據(jù)訪問者的IP所在區(qū)域優(yōu)化??蛻舳四玫降募现械牡谝粭lIP通常為一個優(yōu)化后的地址,但其他地址依舊可作為備選使用。
1.5 DNS服務(wù)器通常不歸主機管理商所有,并且由于需要快速響應(yīng),在查詢的時候是無法判斷主機狀態(tài)和負載的。但一些較大的機構(gòu),會自己擁有一個重新設(shè)計的DNS服務(wù)器,考慮到這些信息。而對于這種情況,外部公網(wǎng)的DNS只能解析出一個CNAME,并交由這個DNS來進行后續(xù)解析(這個DNS被注冊為這個CNAME對應(yīng)的NS)。這種設(shè)計下的DNS通常被認為是NLB(網(wǎng)絡(luò)負載均衡)設(shè)計的一部份。
1.6由于1.2提及的代理查詢以及TTL的機制,DNS其實并不能良好的實現(xiàn)服務(wù)器的輪詢負載均衡,但是可以實現(xiàn)區(qū)域優(yōu)化查詢,即對某個特定區(qū)域盡量返回其區(qū)域內(nèi)的IP結(jié)果。
2 HTTP頭
在發(fā)起HTTP請求時,客戶端會同時提交要訪問的文件(一般在GET命令后)以及主機名(HOST字段),對方服務(wù)器會根據(jù)這個HOST來確定它要訪問的域名。所以一個主機在一個IP上并行存在多個不同的主機地址。
3 NLB
通常的NLB有三種解決辦法。
3.1本地DNS加速,如1.5所述的方法。
3.2 CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))。CDN可以被看做是一個獨立的HTTP代理網(wǎng)絡(luò)。使用CDN的時候,DNS應(yīng)把域名解析到某個CDN的全球IP群上。CDN服務(wù)器得到HTTP請求后,會在轉(zhuǎn)發(fā)原真實服務(wù)器的數(shù)據(jù)時,本地緩存一份。甚至可以實現(xiàn)數(shù)據(jù)的預(yù)推送。因此CDN非常適合于靜態(tài)數(shù)據(jù)的全球化緩存。例如微軟發(fā)布補丁、蘋果發(fā)布新產(chǎn)品、Wordpress、Amazon網(wǎng)站的圖片緩存都是使用了CDN技術(shù)。
3.3虛擬IP地址。通常情況下,一個IP不應(yīng)該被設(shè)置到超過一個設(shè)備上,因為超過這個設(shè)置后,上層的路由器就不知道如何轉(zhuǎn)發(fā)這個包了。但是,如果路由器經(jīng)過了設(shè)置(例如BGP協(xié)議或者專門設(shè)計的路由軟件等),是可以在多個設(shè)備下共享同一個IP的。這種共享既可以是物理的(多個設(shè)備同時使用一個IP,由上層路由進行分支選擇或者廣播、組播數(shù)據(jù)包),或者是輪詢的(多個設(shè)備輪流使用一個IP,同時只有一個設(shè)備使用這個IP,而這個IP可以在多個設(shè)備間高速切換)。如果某個應(yīng)用必須基于IP地址(例如DNS服務(wù)本身),只能使用這種方式來處理。
那么回頭看你三個問題。
Q1返回多個A紀(jì)錄后,客戶端會按照集合的順序依次嘗試訪問。這些數(shù)據(jù)在NS服務(wù)器上是單一存在的,但是會被多層DNS緩存。
Q2 HTTP頭段已經(jīng)講述。
Q3希望你看過NLB段后能理解。
網(wǎng)友解答:這個問題必須要解答下,小編也有做過一些網(wǎng)站,對這塊也有相對的理解,從域名到網(wǎng)站雖然整體來說較為簡單,梳理起來涵蓋了很多技術(shù)知識,下面我們來區(qū)分下域名、服務(wù)器主機、ip和公網(wǎng)ip、網(wǎng)站程序服務(wù)等等。
域名是互聯(lián)網(wǎng)上某個計算機或組的一種身份標(biāo)識,用于在傳輸數(shù)據(jù)時的電子方位標(biāo)識,服務(wù)器主機就是用于服務(wù)于互聯(lián)網(wǎng)的PC的計算機服務(wù)設(shè)備,ip有內(nèi)網(wǎng)ip和公網(wǎng)ip,內(nèi)網(wǎng)ip是在一個路由下的設(shè)備的ip,公網(wǎng)ip是全球互聯(lián)網(wǎng)的一個設(shè)備終端身份標(biāo)識,公網(wǎng)ip是有全球互聯(lián)網(wǎng)根服務(wù)器管理著,網(wǎng)站程序是我們通過各種編程語言編寫的服務(wù)程序。
一個網(wǎng)站的形成服務(wù)是這樣聯(lián)系的,首先就是你的服務(wù)器主機通過相關(guān)服務(wù)程序開放所需的服務(wù)和端口,如網(wǎng)站服務(wù)程序基本端口如80 443這些端口開放出來,然后把相應(yīng)的程序系統(tǒng)(如iis)會有一個綁定域名(服務(wù)的名稱)服務(wù),主機和路由器之間再映射一個服務(wù)器主機的ip(內(nèi)網(wǎng)ip)對應(yīng)相對的端口給對外服務(wù)的ip,只要有用戶通過相應(yīng)的公網(wǎng)ip就可以訪問你的服務(wù)了。
但是題主說了,如果一臺主機一個端口多個站點那怎么辦,這就是要域名的電子標(biāo)識,域名是通過互聯(lián)網(wǎng)的某臺DNS域名解析服務(wù)器指向你這臺主機的,但是指向這臺服務(wù)器,那得有個電子標(biāo)識才能知道是哪個服務(wù)程序的請求,所以就要用域名和相關(guān)服務(wù)程序之間去綁定。
像百度等大型的網(wǎng)站域名一個,服務(wù)器很多,這個就要涉及到分發(fā)服務(wù)器和CDN緩存加速服務(wù),就是有一臺超級的服務(wù)器,他自身多級管理著下面很多臺服務(wù)器,通過服務(wù)器的相關(guān)分發(fā)系統(tǒng)對應(yīng)出的每個請求分發(fā)到相應(yīng)的服務(wù)器如工作,說的籠統(tǒng)點就是超級克隆同樣的服務(wù),這樣更加保障的數(shù)據(jù)的安全和輸出的能力。
所涉及的技術(shù)一下也說不完,但是無論多服務(wù)器或多服務(wù)網(wǎng)站,相對的標(biāo)識(ip域名)只有一個,是通過各種協(xié)議和技術(shù)服務(wù)程序把他們統(tǒng)一起來,不是域名通過起來,域名和ip是身份的標(biāo)識而已,底下工作的人可以是很多,如一個大公司的boos,我們知道公司的名字和相關(guān)創(chuàng)始人,工作的機制都有相對的人和物去完成。