1. 程式人生 > 其它 >組合語言程式設計(七)更靈活定位記憶體地址

組合語言程式設計(七)更靈活定位記憶體地址

什麼是 DNS

DNS(Domain Name System)是域名系統的英文縮寫,是一種組織成域層次結構的計算機和網路服務命名系統,用於 TCP/IP 網路。

當我們在瀏覽器輸入一個 URL 地址時,瀏覽器要向這個 URL 的主機名對應的伺服器傳送請求,就得知道伺服器的 IP,對於瀏覽器來說,DNS 的作用就是將主機名轉換成 IP 地址。

DNS域名解析流程

DNS 域名解析,簡單地說就是把域名翻譯成 IP 地址。例如:把 www.baidu.com 這個域名翻譯成對應 IP 220.181.38.251,這裡只是舉個例子。

上圖中分 8 個步驟介紹了域名解析的流程,但在此之前會先檢查本機的快取配置+ hosts 解析,然後才真正執行上圖的流程:

瀏覽器快取檢查

瀏覽器會首先搜尋瀏覽器自身的 DNS 快取,快取時間比較短,大概只有1分鐘,且只能容納 1000 條快取,看自身的快取中是否有對應的條目,而且沒有過期,如果有且沒有過期則解析到此結束。

作業系統快取檢查 + hosts 解析

如果瀏覽器的快取裡沒有找到對應的條目,作業系統也會有一個域名解析的過程,那麼瀏覽器先搜尋作業系統的 DNS 快取中是否有這個域名對應的解析結果,如果找到且沒有過期則停止搜尋,解析到此結束。

在 Linux 中可以通過 /etc/hosts 檔案來設定,可以將任何域名解析到任何能夠訪問的IP 地址。如果在這裡指定了一個域名對應的 IP 地址,那麼瀏覽器會首先使用這個 IP地址。當解析到這個配置檔案中的某個域名時,作業系統會在快取中快取這個解析結果,快取的時間同樣是受這個域名的失效時間和快取的空間大小控制的。

域名解析步驟

第一步:客戶端通過瀏覽器訪問域名為 www.baidu.com (http://www.baidu.com) 的網站,發起查詢該域名的 IP 地址的 DNS 請求。該請求傳送到了本地 DNS 伺服器上。本地 DNS 伺服器會首先查詢它的快取記錄,如果快取中有此條記錄,就可以直接返回結果。如果沒有,本地 DNS 伺服器還要向 DNS 根伺服器進行查詢。

第二步:本地 DNS 伺服器向根伺服器傳送 DNS 請求,請求域名為 www.baidu.com (http://www.baidu.com) 的 IP 地址。

第三步:根伺服器經過查詢,沒有記錄該域名及 IP 地址的對應關係。但是會告訴本地 DNS 伺服器,可以到域名伺服器上繼續查詢,並給出域名伺服器的地址(.com 伺服器)。

第四步:本地 DNS 伺服器向 .com 伺服器傳送 DNS 請求,請求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。

第五步:com 伺服器收到請求後,不會直接返回域名和 IP 地址的對應關係,而是告訴本地DNS 伺服器,該域名可以在 baidu.com 域名伺服器上進行解析獲取 IP 地址,並告訴 baidu.com 域名伺服器的地址。

第六步:本地 DNS 伺服器向 baidu.com 域名伺服器傳送 DNS 請求,請求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。

第七步:baidu.com 伺服器收到請求後,在自己的快取表中發現了該域名和 IP 地址的對應關係,並將 IP 地址返回給本地 DNS 伺服器。

第八步:本地 DNS 伺服器將獲取到與域名對應的 IP 地址返回給客戶端,並且將域名和 IP 地址的對應關係儲存在快取中,以備下次別的使用者查詢時使用。

總結

最後引用大佬的一張圖做下總結:

END!!