1. 程式人生 > >瀏覽器輸入網址後發生了什麼?

瀏覽器輸入網址後發生了什麼?

在你的瀏覽器中輸入www.baidu.com以後,會在你的瀏覽器呈現百度首頁,這期間發生了什麼?

首先我們需要知道TCP/IP的網路模型,這裡我就以四層模型為例子。

這裡寫圖片描述

第一步:在瀏覽器中輸入www.baidu.com後,應用層會使用DNS解析域名,如果本地存有對應的IP,則使用;如果沒有,則會向上級DNS伺服器請求幫助,直至獲得IP。域名解析詳細過程會在下文講到。

第二步:應用層將請求的資訊裝載入HTTP請求報文,資訊包含了請求的方法(GET / POST)、目標url、遵循的協議(http / https / ftp…)等,然後應用層將發起HTTP請求。

第三步:傳輸層接收到應用層傳遞下來的資料,並分割成以報文段為單位的資料包進行管理,併為它們編號,方便伺服器接收時能準確地還原報文資訊。通過三次握手和目標埠建立安全通訊。

第四步:網路層接收傳輸層傳遞的資料,根據IP通過ARP協議獲得目標計算機實體地址—MAC。當通訊的雙方不在同一個區域網時,需要多次中轉才能到達最終的目標,在中轉的過程中需要通過下一個中轉站的MAC地址來搜尋下一個中轉目標。

第五步:找到目標MAC地址以後,就將資料傳送到資料鏈路層,這時開始真正的傳輸請求資訊,傳輸完成以後請求結束。

第六步:伺服器接收資料後,從下到上層層將資料解包,直到應用層。

第七步: 伺服器接收到客戶端傳送的HTTP請求後,查詢客戶端請求的資源,將資料裝載入響應報文並返回,響應報文中包括一個重要的資訊——狀態碼,如200,404,500。

DNS域名解析

域名解析就是將域名地址解析為IP地址,從瀏覽器輸入域名到解析為IP地址,其中具體的過程可以分為如下一些步驟!

1.瀏覽器檢查快取中是否有此域名對應解析過的IP地址,如果有,直接返回結果,解析過程接結束。

2.瀏覽器沒有快取對應的IP,此時瀏覽器會查詢作業系統中是否有此域名對應的DNS解析結果,如果有,直接返回結果,解析過程接結束。在windows中可以通過C:\Windows\System32\drivers\etc\hosts來設定域名解析過程,linux下是/ect/named.conf。

3.如果在本機中無法完成域名解析過程,就會請求DNS伺服器來解析了。在網路設定中我們會配有DNS伺服器地址:

這裡寫圖片描述

作業系統會將域名傳送到這裡的設定的LDNS(本地區域名伺服器),如果LDNS解析成功,則返回結果,解析過程結束。

4.LDNS不能成功解析域名,則會請求RootServer域名伺服器請求解析。RootServer將所要解析的域名的主伺服器(gTLD)地址返回給LDNS,就好像路標,告訴LDNS應該去哪裡尋找結果。

5.LDNS請求gTLD,接收請求的gTLD查詢並返回此域名對應的NameServer,NameServer就是此域名註冊的域名伺服器。gTLD也是一個路牌,告訴你該去此域名註冊時的域名伺服器那裡去尋找結果。

6.NameServer接收請求,並將域名和IP的對映關係表連同一個TTL值返回給LDNS。

7.LDNS將解析結果返回給使用者,並且將域名和IP對應關係快取。

8.本地使用者接收到解析結果,並將域名和IP對應關係快取到本地,整個域名解析過程結束。