什么是CNAME以及CDN?
時間:2023-02-02 01:24:01 | 來源:建站知識
時間:2023-02-02 01:24:01 來源:建站知識
什么是CNAME?
先簡單的說下域名解析:在以前,人們用IP進行互訪,后來發(fā)現(xiàn)IP太多不好記憶,便有了域名,比如www.baidu.com,你一看就知道是百度搜索引擎,而不需要管他的服務(wù)器IP是多少,但是在最開始通信的時候,電腦路由器不認識域名,只認得IP啊,要怎么去獲得對應(yīng)的IP呢,這時候有了域名解析,就是去請求網(wǎng)絡(luò)上的DNS服務(wù)器,讓他們來告訴你這個域名對應(yīng)的IP是多少,至于請求DNS解析的詳細過程,大家就自行搜索啦,這里不贅述。
然后簡單概括地說:
- A記錄是將域名解析成IP,CNAME是將域名解析成另外一個域名。
在說CNAME之前,要提到一個東西叫 A記錄:
1.A記錄
A記錄,即Address記錄,它并不是一個IP或者一個域名,我們可以把它理解為一種指向關(guān)系:
域名 www.xx.com → 1.1.1.1
主機名 DD → 2.2.2.2
也就是當你訪問這些域名或者主機名的時候,DNS服務(wù)器上會通過A記錄會幫你解析出相應(yīng)的IP地址,以達到后續(xù)訪問目的。所以A記錄是IP解析,直接將域名或主機名指向某個IP。
2.CNAME
CNAME記錄,也叫別名記錄,相當于給A記錄中的域名起個小名兒,比如www.xx.com的小名兒就叫www.yy.com好了,然后CNAME記錄也和A記錄一樣,是一種指向關(guān)系,把小名兒www.yy.com指向了www.xx.com,然后通過A記錄,www.xx.com又指向了對應(yīng)的IP:
www.yy.com→ www.xx.com → 1.1.1.1
這樣一來就能通過它的小名兒直接訪問1.1.1.1了。
這時候有人問:這不多了一步嘛,不嫌麻煩?
假如這個時候我又想給原域名取幾個小名兒,分別叫www.cc.com和www.kk.com那么存在下列指向關(guān)系:
www.yy.com → www.xx.com → 1.1.1.1
www.cc.com → www.xx.com → 1.1.1.1
www.kk.com → www.xx.com → 1.1.1.1
突然服務(wù)器的IP地址因為一些不可描述的原因要更換了,不再是1.1.1.1了,換成了2.2.2.2,這時候你發(fā)現(xiàn),只要把www.xx.com的指向修改一下即可:
域名 www.xx.com → 2.2.2.2
這時候你又發(fā)現(xiàn)了,原來他的小名兒不需要做更改,直接就能訪問服務(wù)器,因為他們都只指向了www.xx.com,服務(wù)器IP改沒改它們不管。
那么假如不用CNAME,直接做A記錄會怎樣?
www.yy.com → 1.1.1.1
www.cc.com → 1.1.1.1
www.xx.com → 1.1.1.1
www.kk.com → 1.1.1.1
那么當1.1.1.1更改的時候,全部相關(guān)A記錄指向關(guān)系都要做更改,這才麻煩
3.CNAME的應(yīng)用:CDN
現(xiàn)網(wǎng)常用在CDN加速上,關(guān)于CDN大家可以看看下面這篇文章,通俗易懂:
舉個CDN的栗子 :
假如你是DD公司老板,你公司中的一臺IP為1.1.1.1的服務(wù)器,注冊了域名為www.dd.com,要對外提供客戶訪問。隨著公司做大做強,訪問量也越來越多,服務(wù)器頂不住了,你去找CDN提供商購買CDN加速服務(wù),這個時候他們要求你的域名做個CNAME指向他們給你的一個域名叫www.dd.cdn.com
www.dd.com → www.dd.cdn.com
當用戶訪問www.dd.com的時候,本地DNS會獲得CDN提供的CNAME域名:www.dd.cdn.com,然后再次向DNS調(diào)度系統(tǒng)發(fā)出請求,通過DNS調(diào)度系統(tǒng)的智能解析,把離客戶端地理位置最近的(或者相對負載低的,主要看CDN那邊智能解析的策略)CDN提供商的服務(wù)器IP返回給本地DNS,然后再由本地DNS回給客戶端,讓用戶就近取到想要的資源(如訪問網(wǎng)站),大大降低了延遲。
本地運營商的DNS服務(wù)器怎么知道一個域名的授權(quán)(權(quán)威)服務(wù)器是哪臺?這個域名應(yīng)該在哪里取解析呢?首先公司會去找運營商買域名,比如CDN公司買了cdn.com這個一級域名(相對于a.cdn.com和b.cdn.com來說cdn.com可以稱為一級域名,這個不用糾結(jié)哈),那么本地運營商會做一個NS記錄,即匹配到這個cdn.com后綴的域名都會到CDN服務(wù)提供商的DNS服務(wù)器做解析,即到權(quán)威服務(wù)器做解析。
其他記錄我有空再詳細補充下~
4.域名緩存問題
最近在公司遇到比較多的是關(guān)于
域名緩存的問題,在這邊簡單說下。
- 還是舉個栗子,你搭建了一個權(quán)威DNS服務(wù)器,這個服務(wù)器需要處理用戶終端發(fā)起的域名查詢請求,假如用戶量很大,訪問域名頻繁,或者說有些接口需要頻繁調(diào)用網(wǎng)站域名的情況,那用戶每次調(diào)用都去請求解析不太合理,降低了我調(diào)用的效率,DNS權(quán)威服務(wù)器也有負擔。所以一般DNS服務(wù)器在下發(fā)解析的時候是帶有緩存時間的(10min或者是1h,主要由DNS服務(wù)器決定),而且這個緩存是下發(fā)到用戶終端、用戶終端、用戶終端上的(重要的事情說三遍),其實用戶在訪問域名的第一步不是直接去查解析,而是查本地host文件,然后是看緩存是否有這個解析記錄,都沒有的話才去請求解析。
所以在公司比較常見到這種情況,
內(nèi)網(wǎng)和公網(wǎng)域名切換的時效問題。A.內(nèi)網(wǎng)環(huán)境:因為是在內(nèi)部局域網(wǎng)搭建的DNS,這個緩存時間我們是可控的,比如我們部署為1h緩存時間,如果有客戶的域名指向關(guān)系需要修改,比如客戶提供服務(wù)的機器ip要更換了,又想要做到快速切換,那我們需要在修改指向關(guān)系的一小時前把這個域名的緩存時間改成1min或者30s,那么一小時后可保證等所有用戶的緩存時間都過了再做域名指向關(guān)系的修改,那就能達到快速切換的效果。
B.外網(wǎng)環(huán)境:前文有提到,用戶在請求DD公司域名前,是經(jīng)過了運營商的,那其實DD公司的緩存是下發(fā)給運營商的,實際用戶的緩存時間可能是由運營商下發(fā)的,那就會存在一個問題,我改了緩存時間為30s,但運營商那邊做了操作,下發(fā)給用戶是1h(可能是部分地區(qū)運營商統(tǒng)一修改的緩存時間,可以設(shè)定上時間的下限),那這咋整?那就莫得辦法了,但能保證的是九成以上的地區(qū)能夠在短時間內(nèi)切換,要想做到所有用戶終端秒級切換是不大可能了
C.其他情況:像外網(wǎng)環(huán)境那樣中間經(jīng)過了運營商,其實就是相當于經(jīng)過了一個中間節(jié)點一樣,這個中間節(jié)點幫我們?nèi)プ稣埱筠D(zhuǎn)發(fā)或者是遞歸查詢,那其實內(nèi)網(wǎng)環(huán)境也存在這么一種情況,當清除了本地緩存解析還沒生效,那就要考慮下是否你的
DNS SERVER是
權(quán)威服務(wù)器還是
中間節(jié)點了,比如圖中內(nèi)網(wǎng)也存在隔離環(huán)境DMZ區(qū)域,部分域名權(quán)威解析不一定在DMZ區(qū)域的服務(wù)器上做的,那這些域名就需要做一個轉(zhuǎn)發(fā)規(guī)則到這個域名的權(quán)威服務(wù)器上要解析,而這個解析就可能存在于DMZ區(qū)域的DNS服務(wù)器上了,那怎么看呢?
拿我的windows來舉例,打開CMD,解析百度
server address是 192.168.3.1 ,那這明顯是經(jīng)過了中間節(jié)點了(是我的網(wǎng)關(guān),路由器地址),下面還告訴你了
非權(quán)威應(yīng)答,說明是路由器幫我們?nèi)ミf歸請求解析了。
怎么清除本地緩存呢?可以這樣看緩存ipconfig /displaydns
也可以清緩存 ipconfig /flushdns
LINUX服務(wù)器如果沒有安裝DNS服務(wù)的話一般是沒有緩存的,你的緩存可能來存在于其他程序或者是中間節(jié)點,中間節(jié)點地址可以通過nslookup隨便一個域名看到,就是你的DNS SERVER,登上去清除一下(例 BIND服務(wù)器可通過
rndc -s 127.0.0.1 flush 清除,其他視情況自行解決~~)。
既然請求解析的第一步是查本地host,那我們是否可以自己修改本地緩存呢?完全闊以路徑 C:/Windows/System32/drivers/etc
www.dd.com 1.1.1.1
baidu.com 1.1.1.1
ping測試說明本地host是優(yōu)先的,但是nslookup的結(jié)果還是baidu.com的地址,我懷疑是nslookup這個程序直接跳過了查詢本地host這一步。
和windows一樣直接修改就行了
[root@sword ~]# cat /etc/hosts
1.1.1.1 www.dd.com
1.1.1.1 baidu.com
DNS SERVER也是可以自己修改的,還有很多配置就先不寫了,看啥時候有空吧~
——————————————————
版權(quán)聲明:本文為CSDN博主「沒事重啟一下」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
該文為本人在CSDN編寫,轉(zhuǎn)載請標明出處,謝謝~