1. 程式人生 > 實用技巧 >瀏覽器從輸入地址到頁面輸出

瀏覽器從輸入地址到頁面輸出

瀏覽器從輸入地址到頁面輸出

主要流程

DNS原理

DNS(Domain Name Server)用來返回某個域名對應主機的ip的伺服器

根DNS (.)

只負責提供各類頂級DNS伺服器ip地址. 是域名解析的入口.

頂級DNS (TLD, Top Level Domain)

負責提供二級域名的DNS伺服器IP地址. 每一個頂級域名都有對應的DNS的伺服器,它們通常由專門的機構公司來維護. 比如.comVerisign Global Registry Services公司維護,.eduEducause公司維護. 它們各自提供自家域名下的子域名(二級域名)的名稱服務. 通常我們所說的"購買域名"就是向這些公司的資料庫註冊一條記錄.

權威DNS

負責提供三級域名對應的主機IP地址。由域名購買者提供,大多數域名註冊公司同時提供了權威DNS託管服務。

獲取域名對應的伺服器ip的過程:

1)瀏覽器快取

  當用戶通過瀏覽器訪問某域名時,瀏覽器首先會在自己的快取中查詢是否有該域名對應的IP地址(若曾經訪問過該域名且沒有清空快取便存在);

2)系統Hosts

  當瀏覽器快取中無域名對應IP則會自動檢查使用者計算機系統Hosts檔案是否有該域名對應IP;

3)本地域名伺服器

  當在使用者客服端查詢不到域名對應IP地址,則將進入本地DNS快取中進行查詢。通常這個本地域名DNS會配置成運營商(ISP)指定的DNS,但也不是必須的。

4)迭代查詢

  當以上均未完成,則會由本地DNS開始進行迭代查詢:

  • 向根域名伺服器查詢,得到頂級域名伺服器的IP地址
  • 向頂級域名伺服器查詢,得到權威域名伺服器的IP地址
  • 向權威域名伺服器查詢,最終得到域名的ip

則進入根伺服器進行查詢。全球僅有13臺根域名伺服器,1個主根域名伺服器,其餘12為輔根域名伺服器。根域名收到請求後會檢視區域檔案記錄,若無則將其管轄範圍內頂級域名(如.com)伺服器IP告訴本地DNS伺服器;

5)儲存結果至快取

  本地域名伺服器把返回的結果儲存到快取,以備下一次使用,同時將該結果反饋給客戶端,客戶端通過這個IP地址與web伺服器建立連結。

TCP三次握手與四次揮手

為什麼tcp是三次握手不是兩次

“已失效的連線請求報文段”的產生在這樣一種情況下:client發出的第一個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某個時間才到達server。本來這是一個早已失效的報文段。但server收到此失效的連線請求報文段後,就誤認為是client再次發出的一個新的連線請求。於是就向client發出確認報文段,同意建立連線。假設不採用“三次握手”,那麼只要server發出確認,新的連線就建立了。由於現在client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料。但server卻以為新的運輸連線已經建立,並一直等待client發來資料。這樣,server的很多資源就白白浪費掉了。採用“三次握手”的辦法可以防止上述現象發生。例如剛才那種情況,client不會向server的確認發出確認。server由於收不到確認,就知道client並沒有要求建立連線。”

TCP連線關閉時進行四次握手過程