1. 程式人生 > >輸入一個網站的網址,然後發生了啥?

輸入一個網站的網址,然後發生了啥?

第一步 瀏覽器查詢該域名的 IP 地址



第二步 瀏覽器根據解析得到的IP地址向 web 伺服器傳送一個 HTTP 請求


第三步 伺服器收到請求並進行處理


第四步 伺服器返回一個響應


第五步 瀏覽器對該響應進行解碼,渲染顯示。


第六步 頁面顯示完成後,瀏覽器傳送非同步請求。

下面對每個環節做進一步分析:

01 瀏覽器查詢該域名的 IP 地址

瀏覽器快取 首先是查詢瀏覽器快取,瀏覽器會快取DNS記錄一段時間,不同瀏覽器儲存的時常不等(2分鐘到30分鐘不等)。 

系統快取 如果在瀏覽器快取裡沒有找到需要的記錄,瀏覽器會做一個系統呼叫來查詢這個網址的對應DNS資訊。 

路由器快取 如果在系統快取裡沒有找到找到對應的IP,請求會發向路由器,它一般會有自己的DNS快取。 

ISP DNS伺服器 如果在路由器快取裡還是沒有對應的IP,請求會被髮送到ISP。 

根域名伺服器 如果還是沒有,請求將發向根域名伺服器進行搜尋。找不到就說明此域名不存在。

02 瀏覽器根據解析得到的IP地址向 web 伺服器傳送一個 HTTP 請求

可能會重定向響應

伺服器重定向的原因有很多,舉其中兩個: 

       一:跟搜尋引擎排名有關。你看,如果一個頁面有兩個地址,就像“http://www.facebook.com/” 和“http://facebook.com/”。搜尋引擎會認為它們是兩個網站,結果造成每一個的搜尋連結都減少從而降低排名。 

       二:不同的地址會造成快取友好性變差。當一個頁面有好幾個名字時,它可能會在快取裡出現好幾次。

然後瀏覽器會跟蹤重定向地址 

過程:

       通過DNS獲取到IP後,目標IP和本機IP分別與子網掩碼相與的結果相同,那麼它們在一個子網,那麼通過ARP協議可以查到目標主機的MAC地址,否則的話,需要通過閘道器轉發,也就是目標MAC是閘道器的MAC。 

       請求需要進行編碼,生成一個HTTP資料包,依次打上TCP、IP、乙太網協議的頭部。其中TCP頭部主要資訊是本機埠和目標埠號等資訊,用於標識同一個主機的不同程序,對於HTTP協議,伺服器端的預設埠號是80,本機瀏覽器的話生成一個1024到65535之間的埠號。IP頭部主要包含本地IP和目標IP等資訊。乙太網協議頭部主要是雙方的MAC地址,目標MAC可以由第一條所訴方法得到。乙太網資料包的資料部分,最大長度為1500位元組,所以如果IP包太大的話還要拆包,比如IP包5000位元組,要分為4包,每一包都包含一個IP頭部。

03 伺服器收到請求並進行處理

負載均衡

       網站可能會有負載均衡裝置來平均分配所有使用者的請求。 

       負載均衡,即對工作任務進行平衡,分攤到多個操作單元上執行,如圖片伺服器,應用伺服器。可分為鏈路負載均衡,叢集負載均衡,作業系統負載均衡 

       叢集負載均衡又分為硬體負載均衡和軟體負載均衡。

CDN

       請求的資料可能儲存在分散式快取、靜態檔案或者資料庫中。如果請求的資料是靜態檔案,如果在CDN上,那麼CDN伺服器又會處理這個使用者的請求。如果在資料庫中需要向資料庫發起查詢請求。

04 伺服器返回一個響應

過程:

       伺服器返回一個 HTTP 響應,如果返回狀態碼304,瀏覽器可以直接使用之前快取的資源。對於內容響應,瀏覽器需要進行響應解碼,渲染顯示。

05 瀏覽器對該響應進行解碼,渲染顯示。

過程:

       在瀏覽器沒有完整接受全部HTML文件時,它就已經開始顯示這個頁面了,如果是個靜態的頁面,拿到此就基本結束了。如果是是動態的,那麼在瀏覽器顯示HTML時,會獲取嵌入在HTML中的物件,瀏覽器會發送獲取請求來重新獲得這些檔案。這些請求都要經歷一個和HTML讀取類似的過程。 

       對於靜態的頁面內容,瀏覽器通常會進行快取,而對於動態的內容,瀏覽器通常不會進行快取。

06 頁面顯示完成後,瀏覽器傳送非同步請求。

過程:

       頁面顯示完成後客戶端仍與伺服器端保持著聯絡。 

它會持續與伺服器保持聯絡來及時更新一些頁面資訊。在瀏覽器中執行的 JavaScript程式碼會給伺服器傳送非同步請求。這個非同步請求傳送給特定的地址,它是一個按照程式構造的獲取或傳送請求。

相關擴充套件:

ARP原理

01 每個主機都會在自己的ARP緩衝區中建立一個ARP列表,以表示IP地址和MAC地址之間的對應關係。 

02 當源主機要傳送資料時,首先檢查ARP列表中是否有對應IP地址的目的主機的MAC地址,如果有,則直接傳送資料,如果沒有,就向本網段的所有主機發送ARP資料包,該資料包包括的內容有:源主機 IP地址,源主機MAC地址,目的主機的IP 地址。 

03 當本網路的所有主機收到該ARP資料包時,首先檢查資料包中的IP地址是否是自己的IP地址,如果不是,則忽略該資料包,如果是,則首先從資料包中取出源主機的IP和MAC地址寫入到ARP列表中,如果已經存在,則覆蓋,然後將自己的MAC地址寫入ARP響應包中,告訴源主機自己是它想要找的MAC地址。 

04 源主機收到ARP響應包後。將目的主機的IP和MAC地址寫入ARP列表,並利用此資訊傳送資料。如果源主機一直沒有收到ARP響應資料包,表示ARP查詢失敗。

RARP原理

       RARP是逆地址解析協議,作用是完成硬體地址到IP地址的對映,主要用於無盤工作站,因為給無盤工作站配置的IP地址不能儲存。 

       工作流程:在網路中配置一臺RARP伺服器,裡面儲存著IP地址和MAC地址的對映關係,當無盤工作站啟動後,就封裝一個RARP資料包,裡面有其MAC地址,然後廣播到網路上去,當伺服器收到請求包後,就查詢對應的MAC地址的IP地址裝入響應報文中發回給請求者。因為需要廣播請求報文,因此RARP只能用於具有廣播能力的網路。