我想知道Windows主機名稱解析系統是如何工作的。
更確切地說,我想知道在這個過程中使用或缺少本地緩存。
據Microsoft TCP/IP Host Name Resolution Order,過程如下:Windows主機名稱解析
- 客戶端檢查是否查詢名稱是其自身。
- 客戶端然後搜索本地主機文件,本地計算機上存儲的IP地址和名稱列表。
- 查詢域名系統(DNS)服務器。
- 如果名稱仍未解析,則使用NetBIOS名稱解析順序作爲備份。通過配置客戶端的NetBIOS節點類型可以更改此順序。
我想知道的是,stage(2)是否以某種方式被緩存。
最近幾天突然興起,因爲我安裝了利用HOSTS
文件的惡意軟件防護(SpyBot)。事實上,它現在是14K條目大,並計數...
該文件目前按主機名排序,但這當然不一定是。對於每個解析請求,表示通過文件的14個步驟(步驟14K)。這些請求可能每秒鐘以幾秒的速度到達,並且通常到達幾百個主機(頂端)。
我的這個應該工作是怎麼樣的這個觀點:
- 在系統啓動窗口DNS解決機制加載hosts文件一次。
- 它提交了一個對文件進行排序的迭代。工作副本被加載到內存中。
最初的HOSTS文件在整個決議過程中不會被進一步閱讀。 - 所有網絡進程(IE,Firefox,MSN ...)都通過此進程/機制工作。
沒有其他進程直接接口/讀取HOSTS文件。 - 收到名稱解析請求後,該進程將檢查其駐留內存的緩存。
如果它找到正確的IP,那麼就是適當的答案。 - 否則(它沒有被緩存),解析過程繼續到內存駐留(排序)HOSTS文件,並對其執行快速二分搜索。從這裏開始,該過程如最初描述的那樣繼續。
該決議的結果被緩存供進一步使用。
雖然我不確定這些的重要性,但我真的很感謝答案。
我只想看看我的推理是否正確,如果沒有,爲什麼這樣呢?
我知道,在永遠在線PC的這個時代,緩存必須定期(或增量)清除。我現在忽略這一點。
那麼讓我們來看看Windows源代碼和..哦,等待,廢話:-( – halfdan 2010-09-18 21:42:28
@halfdan :-) ::: – Trevor 2010-09-18 21:51:06