|
先簡單的說下域名解析(懂的不用看啦): 在以前,人們用IP進行互訪,后來發(fā)現(xiàn)IP太多不好記憶,便有了域名,比如www.baidu.com,你一看就知道是百度搜索引擎,而不需要管他的服務器IP是多少,但是在最開始通信的時候,電腦路由器不認識域名,只認得IP啊,要怎么去獲得對應的IP呢,這時候有了域名解析,就是去請求網(wǎng)絡上的DNS服務器,讓他們來告訴你這個域名對應的IP是多少,至于請求DNS解析的詳細過程,大家就自行搜索啦,這里不贅述。 然后概括地說:
在說CNAME之前,要提到一個東西叫 A記錄: 1.A記錄A記錄,即Address記錄,它并不是一個IP或者一個域名,我們可以把它理解為一種指向關(guān)系:
也就是當你訪問這些域名或者主機名的時候,DNS服務器上會通過A記錄會幫你解析出相應的IP地址,以達到后續(xù)訪問目的。所以A記錄是IP解析,直接將域名或主機名指向某個IP。 2.CNAMECNAME記錄,也叫別名記錄,相當于給A記錄中的域名起個小名兒,比如www.xx.com的小名兒就叫www.yy.com好了,然后CNAME記錄也和A記錄一樣,是一種指向關(guān)系,把小名兒www.yy.com指向了www.xx.com,然后通過A記錄,www.xx.com又指向了對應的IP:
這樣一來就能通過它的小名兒直接訪問1.1.1.1了。 這時候有人問:這不多了一步嘛,不嫌麻煩? 假如這個時候我又想給原域名取幾個小名兒,分別叫www.cc.com和www.kk.com那么存在下列指向關(guān)系:
突然服務器的IP地址因為一些不可描述的原因要換了,不再是1.1.1.1了,換成了2.2.2.2,這時候你發(fā)現(xiàn),只要把www.xx.com的指向修改一下即可:
這時候你又發(fā)現(xiàn)了,原來他的小名兒不需要做更改,直接就能訪問服務器,因為他們都只指向了www.xx.com,服務器IP改沒改它們不管。 那么假如不用CNAME,直接做A記錄會怎樣?
那么當1.1.1.1更改的時候,全部相關(guān)A記錄指向關(guān)系都要做更改,這才麻煩 3.CNAME的應用現(xiàn)網(wǎng)常用在CDN加速上,關(guān)于CDN大家可以看看下面這篇文章,通俗易懂: 舉個CDN的栗子 : 已將原圖中www.xdd.com修改為www.dd.cdn.com (2020-0720) 假如你是DD公司老板,你公司中的一臺IP為1.1.1.1的服務器,注冊了域名為www.dd.com,要對外提供客戶訪問。隨著公司越做越大,訪問量也越來越多,服務器頂不住了,你去找CDN提供商購買CDN加速服務,這個時候他們要求你的域名做個CNAME指向他們給你的一個域名叫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提供商的服務器IP返回給本地DNS,然后再由本地DNS回給客戶端,讓用戶就近取到想要的資源(如訪問網(wǎng)站),大大降低了延遲。 __ 評論有博友問: 本地運營商的DNS服務器怎么知道一個域名的授權(quán)(權(quán)威)服務器是哪臺?這個域名應該在哪里取解析呢?
其他記錄我有空再詳細補充下~ ————————————————————————————————— 4.域名緩存問題最近在公司遇到比較多的是關(guān)于域名緩存的問題,在這邊簡單說下。
所以在公司比較常見到這種情況,內(nèi)網(wǎng)和公網(wǎng)域名切換的時效問題。 1.內(nèi)網(wǎng)環(huán)境:因為是在內(nèi)部局域網(wǎng)搭建的DNS,這個緩存時間我們是可控的,比如我們部署為1h緩存時間,如果有客戶的域名指向關(guān)系需要修改,比如客戶提供服務的機器ip要更換了,又想要做到快速切換,那我們需要在修改指向關(guān)系的一小時前把這個域名的緩存時間改成1min或者30s,那么一小時后可保證等所有用戶的緩存時間都過了再做域名指向關(guān)系的修改,那就能達到快速切換的效果。 2.外網(wǎng)環(huán)境:前文有提到,用戶在請求DD公司域名前,是經(jīng)過了運營商的,那其實DD公司的緩存是下發(fā)給運營商的,實際用戶的緩存時間可能是由運營商下發(fā)的,那就會存在一個問題,我改了緩存時間為30s,但運營商那邊做了操作,下發(fā)給用戶是1h(可能是部分地區(qū)運營商統(tǒng)一修改的緩存時間,可以設定上時間的下限),那這咋整?那就莫得辦法了,但能保證的是九成以上的地區(qū)能夠在短時間內(nèi)切換,要想做到所有用戶終端秒級切換是不大可能了
3.其他情況:像外網(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)威服務器還是中間節(jié)點了,比如圖中內(nèi)網(wǎng)也存在隔離環(huán)境DMZ區(qū)域,部分域名權(quán)威解析不一定在DMZ區(qū)域的服務器上做的,那這些域名就需要做一個轉(zhuǎn)發(fā)規(guī)則到這個域名的權(quán)威服務器上要解析,而這個解析就可能存在于DMZ區(qū)域的DNS服務器上了,那怎么看呢? 拿我的windows來舉例,打開CMD,解析百度 4.怎么清除本地緩存呢?
LINUX服務器如果沒有安裝DNS服務的話一般是沒有緩存的,你的緩存可能來存在于其他程序或者是中間節(jié)點,中間節(jié)點地址可以通過nslookup隨便一個域名看到,就是你的DNS SERVER,登上去清除一下(例 BIND服務器可通過 rndc -s 127.0.0.1 flush 清除,其他視情況自行解決~~)。 5.既然請求解析的第一步是查本地host,那我們是否可以自己修改本地緩存呢?完全闊以
和windows一樣直接修改就行了
DNS SERVER也是可以自己修改的,還有很多配置就先不寫了,看啥時候有空吧~ 轉(zhuǎn)載請標明出處,謝謝~ 歡迎提問。 2021.09.08 |
|
|
來自: 網(wǎng)絡搬運工 > 《傳輸層和應用層》