從輸入URL到頁面加載完成都發(fā)生了什么?

1、URl加載過程

2、詳解

  • DNS解析
    將域名解析成IP地址,首先,會在 本地域名 服務(wù)器中查詢IP地址,如果沒有找到會向 根域名 服務(wù)器發(fā)送一個請求,如果根域名服務(wù)器也沒有找到,會向 頂級域名服務(wù)器com 發(fā)送一個請求,依次類推下去,直到最后本地域名服務(wù)器得到IP地址并把它緩存到本地
    解析過程: . -> .com -> google.com. -> www.google.com.

    • DNS緩存——為了減少請求次數(shù)
      DNS 具體的查找過程包括:瀏覽器緩存,系統(tǒng)緩存,路由器緩存,IPS服務(wù)器緩存,根域名服務(wù)器緩存,頂級域名服務(wù)器緩存,主域名服務(wù)器緩存
    • DNS負載均衡——DNS服務(wù)器會返回一個跟用戶最接近的點的IP地址給用戶
      舉例:如果西安有服務(wù)器,北京也有,你處在西安,就會從西安的服務(wù)器上獲取
  • TCP連接

  • 第一次:建立連接時,客戶端向服務(wù)器發(fā)送syn=i,并進入SYN_SENT狀態(tài),等待服務(wù)器確認

  • 第二次:服務(wù)器收到syn,確認SYN(ack=i+1),同時也發(fā)送一個syn=j包,并進入SYN_RECV狀態(tài)

  • 第三次:客戶端收到服務(wù)器的syn=j,ack=i+1后,繼續(xù)向服務(wù)器發(fā)送確認包ack=j+1,,客戶端和服務(wù)器進入ESTABLISHEC狀態(tài),三次握手完成,TCP連接建立成功

  • 發(fā)送HTTP請求

  • 主要發(fā)生在客戶端,HTTP請求報文是由三部分組成: 請求行, 請求報頭和請求正文。

  • 常見的請求報頭有: Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Authorization, Cookie, User-Agent

  • 服務(wù)器處理請求并返回HTTP報文

  • HTTP響應(yīng)報文也是由三部分組成:狀態(tài)碼, 響應(yīng)報頭和響應(yīng)報文

  • 瀏覽器解析渲染頁面

    • 瀏覽器是一個邊解析邊渲染的過程,首先瀏覽器解析HTML文件構(gòu)建DOM樹,然后解析CSS文件構(gòu)建渲染樹,頁面在首次加載時必然會經(jīng)歷reflow(回流)和repain(重繪)
  • 連接結(jié)束

參考文章推薦:
從輸入URL到頁面加載發(fā)生了什么
從輸入 URL 到頁面加載完成的過程中都發(fā)生了什么事情?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容