1. 程式人生 > >瀏覽器與伺服器通訊的過程

瀏覽器與伺服器通訊的過程

首先需要知道:

使用者在瀏覽器中輸入網址時候,瀏覽器會通過訪問的域名來定位得到IP(DNS)

會依此從瀏覽器快取、系統快取、路由器快取、ISP DNS快取中查詢

HTTP協議:超文字傳輸協議,目的是為了提供一種釋出和接受HTML頁面的方法,瀏覽器和伺服器都遵循的一種語法規範,所有的資訊通過這種語法規範傳輸,使得瀏覽器和伺服器都可以正確理解。

但瀏覽器和伺服器不是直接連線上的,需要中間的網路裝置(網線),而網路裝置s行傳輸資料還需要一種通用的語法規範(協議),這種協議一般是TCP協議和UDP協議

通訊過程:

  1. 輸入網址後,請求由瀏覽器以一種滿足http協議的請求報文的形式發往伺服器。請求報文中包含了要請求的頁面地址,請求的檔案型別等一系列資訊
  2. 傳遞的時候,網路裝置把請求報文包裝在一個滿足TCP協議的資料中,通過網線傳送給伺服器
  3. 伺服器接受資料後,將資料解譯,重新恢復成瀏覽器滿足http協議的請求報文的形式,然後傳向伺服器軟體
  4. 服務軟體得到請求報文後,根據請求報文的頁面地址在伺服器資料庫中找到相應的頁面,生成滿足http協議的響應報文發向瀏覽器。響應報文包括響應報文頭和請求頁面的程式碼
  5. 響應報文通過伺服器的網路裝置,包裝在滿足TCP協議的資料,通過網線傳給客戶端
  6. 客戶端網路裝置將響應報文解析,傳給瀏覽器軟體,瀏覽器將報文解析,得到網頁

一個網頁往往包含HTML,JS程式碼和CSS樣式表,圖片等多種資料,這些資料是按一定順序由瀏覽器請求,伺服器傳輸的。通過不斷地請求,得到最後完整的網頁

但在資料傳輸前,需要先建立連線,也就是TCP/IP協議的三次握手和四次揮手

三次握手步驟:

  1. 第一次握手:客戶端向伺服器端傳送連線請求報文段,客戶端進入等待狀態,等待伺服器確認
  2. 第二次握手:伺服器收到客戶端的報文段,對報文段確認後,伺服器端將伺服器端連線配置資訊放到報文段中,傳送給客戶端,伺服器進入等待狀態
  3. 第三次握手:客戶端收到伺服器返回的報文段,根據配置資訊傳送連線報文段,建立連線狀態

資料傳輸完畢後,通過四次揮手斷開連線

  1. 第一次揮手:客戶端向伺服器端傳送請求關閉連線報文段,表示客戶端沒有資料要傳送給伺服器了,客戶端進入終止等待1狀態
  2. 第二次揮手:伺服器端收到客戶端傳送的報文段,再發送一個確認關閉報文段,表示同意關閉請求,伺服器進入關閉等待狀態
  3. 第三次揮手:客戶端收到請求後,進入終止等待2狀態,等待伺服器傳送連線釋放報文。伺服器最後的資料傳送完畢後,向客戶端傳送連線釋放報文,伺服器進入最後確認狀態
  4. 第四次握手:客戶端收到報文,傳送確認報文,進入時間等待狀態(注意此時TCP連線還沒有釋放,必須經過2∗MSL(最長報文段壽命)的時間後,當客戶端撤銷相應的TCB後,才進入CLOSED狀態。),而伺服器端收到確認報文後馬上關閉