瀏覽器與伺服器通訊的過程
阿新 • • 發佈:2018-12-17
首先需要知道:
使用者在瀏覽器中輸入網址時候,瀏覽器會通過訪問的域名來定位得到IP(DNS)
會依此從瀏覽器快取、系統快取、路由器快取、ISP DNS快取中查詢
HTTP協議:超文字傳輸協議,目的是為了提供一種釋出和接受HTML頁面的方法,瀏覽器和伺服器都遵循的一種語法規範,所有的資訊通過這種語法規範傳輸,使得瀏覽器和伺服器都可以正確理解。
但瀏覽器和伺服器不是直接連線上的,需要中間的網路裝置(網線),而網路裝置s行傳輸資料還需要一種通用的語法規範(協議),這種協議一般是TCP協議和UDP協議
通訊過程:
- 輸入網址後,請求由瀏覽器以一種滿足http協議的請求報文的形式發往伺服器。請求報文中包含了要請求的頁面地址,請求的檔案型別等一系列資訊
- 傳遞的時候,網路裝置把請求報文包裝在一個滿足TCP協議的資料中,通過網線傳送給伺服器
- 伺服器接受資料後,將資料解譯,重新恢復成瀏覽器滿足http協議的請求報文的形式,然後傳向伺服器軟體
- 服務軟體得到請求報文後,根據請求報文的頁面地址在伺服器資料庫中找到相應的頁面,生成滿足http協議的響應報文發向瀏覽器。響應報文包括響應報文頭和請求頁面的程式碼
- 響應報文通過伺服器的網路裝置,包裝在滿足TCP協議的資料,通過網線傳給客戶端
- 客戶端網路裝置將響應報文解析,傳給瀏覽器軟體,瀏覽器將報文解析,得到網頁
一個網頁往往包含HTML,JS程式碼和CSS樣式表,圖片等多種資料,這些資料是按一定順序由瀏覽器請求,伺服器傳輸的。通過不斷地請求,得到最後完整的網頁
但在資料傳輸前,需要先建立連線,也就是TCP/IP協議的三次握手和四次揮手
三次握手步驟:
- 第一次握手:客戶端向伺服器端傳送連線請求報文段,客戶端進入等待狀態,等待伺服器確認
- 第二次握手:伺服器收到客戶端的報文段,對報文段確認後,伺服器端將伺服器端連線配置資訊放到報文段中,傳送給客戶端,伺服器進入等待狀態
- 第三次握手:客戶端收到伺服器返回的報文段,根據配置資訊傳送連線報文段,建立連線狀態
資料傳輸完畢後,通過四次揮手斷開連線
- 第一次揮手:客戶端向伺服器端傳送請求關閉連線報文段,表示客戶端沒有資料要傳送給伺服器了,客戶端進入終止等待1狀態
- 第二次揮手:伺服器端收到客戶端傳送的報文段,再發送一個確認關閉報文段,表示同意關閉請求,伺服器進入關閉等待狀態
- 第三次揮手:客戶端收到請求後,進入終止等待2狀態,等待伺服器傳送連線釋放報文。伺服器最後的資料傳送完畢後,向客戶端傳送連線釋放報文,伺服器進入最後確認狀態
- 第四次握手:客戶端收到報文,傳送確認報文,進入時間等待狀態(注意此時TCP連線還沒有釋放,必須經過2∗MSL(最長報文段壽命)的時間後,當客戶端撤銷相應的TCB後,才進入CLOSED狀態。),而伺服器端收到確認報文後馬上關閉