網路 DNS處理順序

2021-09-12 12:22:03 字數 2888 閱讀 1705

上文中我們知道了dns到底是個什麼樣的東西,現在我們來看下dns快取,為什麼會有dns快取呢?這是為了解決頻繁的訪問dns伺服器,直接在本地進行快取伺服器ip位址的策略,這樣我們輸入乙個**網域名稱譬如:www.baidu.com,就用再到dns伺服器去獲取對應的**的ip位址,直接從本地獲取ip位址去做請求。

幾種dns快取:

瀏覽器dns快取

本地計算機dns快取

術語解釋

根域:就是所謂的「.」,其實我們的**www.baidu.com在配置當中應該是www.baidu.com.(最後有一點),一般我們在瀏覽器裡輸入時會省略後面的點,而這也已經成為了習慣。根域伺服器我們知道有13臺,但是這是錯誤的觀點。根域伺服器只是具有13個ip位址,但機器數量卻不是13臺,因為這些ip位址借助了任播的技術,所以我們可以在全球設立這些ip的映象站點,你訪問到的這個ip並不是唯一的那台主機。

網域名稱字尾:國際頂級網域名稱,有兩種劃分方式,一種網際網路剛興起時的按照行業性質劃分的com.,net.等,一種是按國家劃分的如cn.,jp.,等。每個域都會有網域名稱伺服器,也叫權威網域名稱伺服器。

頂級域:或者叫做一級域,baidu.com就是乙個頂級網域名稱,而www.baidu.com卻不是頂級網域名稱,他是在baidu.com 這個域裡的一叫做www的主機。

二級域和**域:只要我買了乙個頂級域,並且我搭建了自己bind伺服器(或者其他軟體搭建的)註冊到網際網路中,那麼我就可以隨意在前面多加幾個域了(當然長度是有限制的)。比如a.www.baidu.com,在這個**中,www.baidu.com變成了乙個二級域而不是一台主機,主機名是a。

網域名稱伺服器:能提供網域名稱解析的伺服器,上面的記錄型別可以是a(address)記錄,ns記錄(name server),mx(mail),cname等。

a記錄:a代表的是address,使用者可以在此設定子網域名稱並指向到自己的目標主機位址上,從而實現通過網域名稱找到伺服器。指向的目標主機位址型別只能使用ip位址,如將taobao.com網域名稱下的item.taobao.com指定到115.238.33.11,order.taobao.com指定到112.134.22.34。a記錄可以將多個網域名稱解析到乙個ip位址,但不能將乙個網域名稱解析到多個ip位址。

mx記錄:表示的是mail exchange(郵件交換記錄),用於將以該網域名稱為結尾的電子郵件指向對應的郵件伺服器以進行處理。如:使用者所用的郵件是以網域名稱mydomain.com為結尾的,則需要在管理介面中新增該網域名稱的mx記錄來處理所有以@mydomain.com結尾的郵件。

說明:mx記錄可以使用主機名或ip位址;·mx記錄可以通過設定優先順序實現主輔伺服器設定,「優先順序」中的數字越小表示級別越高。也可以使用相同優先順序(即隨機)達到負載均衡的目的;·如果在「主機名」中填入子網域名稱則此mx記錄只對該子網域名稱生效。

cname記錄:全稱是canonical name(別名解析)。可以為乙個網域名稱設定乙個或者多個別名。

說明:說明:cname的目標主機位址只能使用主機名,不能使用ip位址;·主機名前不能有任何其他字首,如:http://等是不被允許的;a記錄優先於cname記錄。即如果乙個主機位址同時存在a記錄和cname記錄,則cname記錄不生效。

ns記錄:txt記錄:為某個主機名或網域名稱設定說明,如可以為taobao.com設定txt記錄為「天下第一」這樣的說明。

dns解析過程

當使用者在瀏覽器中輸入網域名稱並按下回車鍵後

第一步:瀏覽器會檢查快取中有沒有這個網域名稱對應的解析過的ip位址,如果有,這個解析過程就結束了,直接拿到ip進行訪問。這個瀏覽器快取網域名稱是有限制的,除了快取大小有限制,快取的時間也有限制,通常情況下由ttl屬性來設定。

第二步:如果使用者瀏覽器快取中沒有,瀏覽器會查詢作業系統中是否有這個網域名稱對應的dns解析結果。windows中c:/windows/system32/drivers/etc/hosts檔案設定,linux中/etc/hosts檔案中設定。當解析到這個配置檔案中的某個網域名稱時,作業系統會在快取中快取這個解析結果。(修改檔案後不立即生效的原因)

第三步:在網路配置中都會有「dns伺服器位址」這一項,當前面兩步都不能解析時,作業系統會把這個網域名稱傳送給設定的dns伺服器(簡稱ldns)-local縮寫,一般是本地區的網域名稱伺服器也可以是自己設定的網域名稱伺服器位址,如果命中,那解析就此結束並返回ip並標記為非權威伺服器的應答。如是學校的網際網路,那麼你的dns伺服器肯定在你的學校,如果你是乙個小區接入網際網路,那這個dns就是提供給你接入網際網路的應用**商,即電信或聯通。windows中能用ipconfig檢視dns伺服器位址,linux中cat /etc/resolv.conf檢視dns server。

第四步:如果ldns沒有命中,ldns就會向root server網域名稱伺服器請求解析。ldns會從配置檔案裡面讀取13個根網域名稱伺服器的位址(這些位址是不變的,直接在bind的配置檔案中),然後像其中一台發起請求。

第五步:根伺服器拿到這個請求後,知道他是com.這個頂級網域名稱下的,所以就會返回com.域中的ns記錄,一般來說是13臺主機名和ip(主網域名稱伺服器位址即gtld-國際頂級網域名稱伺服器位址),返回給本地網域名稱伺服器即ldns,

第六步:ldns再向上一步返回的其中一台gtld伺服器傳送請求。com.域的伺服器(gtld)發現你這請求是baidu.com這個域的,一查發現了這個域的ns(一般就是你註冊的網域名稱伺服器),那就返回給你,你再去查。

第八步:ldns接受返回的ip和tll值

第九步:ldns快取這個網域名稱和ip的對應關係,快取時間有tll控制

第十步:ldns把解析的結果返回給使用者,使用者根據tll值快取在本地系統快取中,網域名稱解析結束。

大部分參考:

mfc訊息處理順序

mfc中處理訊息的順序 1.afxwndproc 接收訊息,尋找訊息所屬的 cwnd 物件,然後呼叫 afxcallwndproc 2.afxcallwndproc 儲存訊息 訊息識別符號和訊息引數 供未來參考,然後呼叫 windowproc 3.windowproc 傳送訊息給 onwndmsg ...

事件處理程式的處理順序問題

這也是今天討論到的乙個話題,其實還是比較簡單的。因為事件處理程式都是在主線程被執行的,所以主線程肯定是依次執行他們。那麼究竟是什麼決定了這個順序呢?using system using system.collections.generic using system.linq using system...

MFC程式的訊息處理順序

mfc應用程式中處理訊息的順序 1.afxwndproc 該函式負責接收訊息,找到訊息所屬的cwnd物件,然後呼叫afxcallwndproc 2.afxcallwndproc 該函式負責儲存訊息 儲存的內容主要是訊息識別符號和訊息引數 用程式以後使用,然後呼叫windowproc 函式 3.win...