從點擊一個鏈接到瀏覽器顯示頁面,這個過程中發生了什么?


這個過程可以分為六步

  • 瀏覽器通過域名找出其IP地址(DNS解析)
  • 瀏覽器和服務器建立連接(TCP/TP三次握手)
  • 瀏覽器向服務器發送HTTP請求
  • 服務器接受到請求並返回HTTP響應
  • 瀏覽器解析渲染頁面
  • 斷開連接(四次揮手)

(HTML/CSS/JS/JSON都是HTTP中的第四部分,都是基於HTTP協議來傳輸的,而HTTP協議基於TCP/IP協議)

 

1  瀏覽器通過域名找出其IP地址(DNS解析)

  • 客戶端先檢查本地是否有對應的IP地址,若找到則返回響應的IP地址。若沒找到則請求上級DNS服務器,直至找到或到根節點。(瀏覽器緩存→系統緩存→路由器緩存→ISP DNS緩存→從根域名服務器遞歸搜索)
    注意⚠️:
    
    1  URL和域名的區別:
        域名:需要注冊和購買,域名經過解析為ip地址。。。就是說用ip地址和域名都可以訪問同一資源。
        url:簡單說網址=ip或域名 + 端口號 + 資源位置 + 參數 + 錨點
    2  IP 地址與域名的關系:
       多個提供相同服務的服務器 IP 可設置為同一個域名,但同一時刻一個域名只能解析出一個 IP地址。
        一個 IP 地址可以綁定多個域名。
    3  若修改hosts文件,可自己指定域名的IP,繞過DNS。

     

2  瀏覽器和服務器建立連接(TCP/TP三次握手)

  • 瀏覽器和服務器通過三次握手建立連接,三次握手分別為:
    第一次握手:相當於瀏覽器說問服務器:我可以連接你嗎?
    第二次握手:相當於服務器回答說:好,連吧
    第三次握手:相當於瀏覽器說:嗯,那我連接了

3 瀏覽器向服務器發送HTTP請求

  • 建立連接成功后,瀏覽器給web服務器發送一個HTTP請求。

4 服務器接受到請求並返回HTTP響應

  • 服務器接到請求后,會根據 HTTP 請求中的內容來決定如何獲取相應的文件,並將文件發送給瀏覽器

5 瀏覽器解析渲染頁面

  • 瀏覽器根據響應開始顯示頁面
  • 瀏覽器首先解析HTML文件構建DOM樹,然后解析CSS文件構建渲染樹,等到渲染樹構建完成后,瀏覽器開始布局渲染樹並將其繪制到屏幕上。

6  斷開連接(四次揮手)

  • 四次揮手即終止TCP連接。斷開一個TCP連接需要客戶端和服務端發送四次數據包以確定斷開連接。這發送的四次數據包稱為四次揮手,分別為:
    四次揮手:
    1  Client發送一個數據包,用來關閉Client到server的數據傳輸,Client進入最后的等待狀態。 
    2  server接到數據包經過判斷后,發送確認信息給Client,自己進入等待關閉狀態。 
    3  server發送一個數據包給Client,用來關閉server到Client的數據傳輸 
    4  Client接收到數據經過判斷后,自己進入Time_wait狀態,server接收數據經過判斷無誤后,server進入關閉狀態,Client等待2MLS(Maxmum segment lifetime),它是任何報文在網絡丟棄前在網絡內的最長時間,過了這個時間,Client就自動關閉了。
    
    通俗點講就是:
    1  主機向服務器發送一個斷開連接的請求(不早了,我該走了);
    2  服務器接到請求后發送確認收到請求的信號(知道了);
    3  服務器向主機發送斷開通知(我也該走了);
    4  主機接到斷開通知后斷開連接並反饋一個確認信號(嗯,好的),服務器收到確認信號后斷開連接;

     




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM