網址輸入後的經歷

  1. DNS域名解析
  2. 建立socket連接TCP3次握手
  3. 發起請求 : 向IP對應的服務器發送http請求
  4. 響應請求並傳輸數據 : 服務器響應http請求,發回網頁內容
  5. 瀏覽器解析網頁內容 : 瀏覽器解析並渲染呈現給用戶
  6. 連接結束TCP4次揮手

標題域名解析

  • 目的是爲了將網址轉爲便於機器識別的IP地址。
  • 本地機器上配置網絡時都有DNS
  • 會把URL發送給這個配置的DNS服務器;如果能夠找到相應的URL則返回其IP,否則該DNS將繼續將該解析請求發送給上級DNS,整個DNS可以看成一個樹狀結果,該請求將一直髮送到根直到得到結果。

建立socket連接TCP3次握手

  • 三次握手的目的是同步連接雙方的序列號和確認號並交換 TCP窗口大小信息。
  • 防止已失效的連接請求報文段突然又傳送到了服務端,因而產生錯誤。
  • 第一次握手: 建立連接。客戶端發送連接請求報文段,將SYN位置爲1,Sequence Number爲x;然後,客戶端進入SYN_SEND狀態,等待服務器的確認;
      第二次握手: 服務器收到SYN報文段。服務器收到客戶端的SYN報文段,需要對這個SYN報文段進行確認,設置Acknowledgment Number爲x+1(Sequence Number+1);同時,自己自己還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲y;服務器端將上述所有信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態;
      第三次握手: 客戶端收到服務器的SYN+ACK報文段。然後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢以後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。

發起請求 : 向IP對應的服務器發送http請求

  • HTTP請求報文是由三部分組成: 請求行, 請求報頭和請求正文。
  • 常用的方法有: GET, POST, PUT, DELETE, OPTIONS, HEAD。

響應請求並傳輸數據 : 服務器響應http請求,發回網頁內容

  • HTTP響應報文是由三部分組成: 狀態碼, 響應報頭和響應報文。
  • 狀態碼是由3位數組成,第一個數字定義了響應的類別
  • 常見的響應報頭字段有: Server, Connection
  • 服務器返回給瀏覽器的文本信息,通常HTML, CSS, JS, 圖片等文件就放在響應報文

瀏覽器解析網頁內容 : 瀏覽器解析並渲染呈現給用戶

  • 解析頁面生成DOM樹,遇到css標籤或JS腳本標籤就新起線程去下載他們,並繼續構建DOM。
  • 下載完後解析CSS爲CSS規則樹,瀏覽器結合CSS規則樹和DOM樹生成Render Tree。
  • 構建CSS Object Model(CSSOM)會阻塞JavaScript的執行。JavaScript的執行也會阻塞DOM的構建。
  • JavaScript下載後可以通過DOM API修改DOM,通過CSSOM API修改樣式作用域Render Tree。
    每次修改會造成Render Tree的重新佈局和重繪。只要修改DOM或修改了元素的形狀或大小,就會觸發Reflow

連接結束TCP4次揮手

  • TCP協議是一種面向連接的、可靠的、基於字節流的運輸層通信協議,TCP是全雙工模式
  • 第一次分手: 主機1(可以使客戶端,也可以是服務器端),設置Sequence Number,向主機2發送一個FIN報文段;此時,主機1進入FIN_WAIT_1狀態;這表示主機1沒有數據要發送給主機2了;
      第二次分手: 主機2收到了主機1發送的FIN報文段,向主機1回一個ACK報文段,Acknowledgment Number爲Sequence Number加1;主機1進入FIN_WAIT_2狀態;主機2告訴主機1,我“同意”你的關閉請求;
      第三次分手: 主機2向主機1發送FIN報文段,請求關閉連接,同時主機2進入LAST_ACK狀態;
      第四次分手: 主機1收到主機2發送的FIN報文段,向主機2發送ACK報文段,然後主機1進入TIME_WAIT狀態;主機2收到主機1的ACK報文段以後,就關閉連接;此時,主機1等待2MSL後依然沒有收到回覆,則證明Server端已正常關閉,那好,主機1也可以關閉連接了。
  • MSL:報文段最大生存時間,它是任何報文段被丟棄前在網絡內的最長時間。
  • TCP連接還要在TIME_WAIT狀態等待2倍MSL,這樣可以保證本次連接的所有數據都從網絡中消失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章