http網絡連接過程


最近做爬蟲發現http協議真是太重要了 ,所以寫一篇博客記錄一下。

做后端的時候只是知道get,post區別,沒有對http有詳盡的了解,最近看了才發現這玩意跟遞歸一樣,沒有了解到時候都覺得很簡單,了解之后才發現復雜的一匹。。。。。

  1. 首先我們從瀏覽器輸入一個地址開始,瀏覽器會把這個url地址放入請求隊列
  2. 然后會解析url地址中的ip地址,這個過程也叫DNS解析,可以理解為把這個域名拿去數據庫進行查詢獲取域名對應的ip地址,注意這里有個流程叫DNS緩存,就想數據庫緩存一樣,每次我們查詢的時候都會先看一下自己主機里面有沒有關於這個域名的緩存,這也是有時候我們使用盜版軟件時候,修改host文件,就是把軟件指向的驗證域名改成我們本機地址
  3. 獲取到ip后,我們就要檢查我們主機到ip之間的連接是否開啟,如果開啟之間連接,如果否,就開啟tcp三次握手的連接,注意,這里還有一個判斷,就是如果是https協議,那么在tcp的基礎之上還要加上TLS握手協議
  4. 確認連接以后,到到ip層了,ip層會在收到tcp層發送數據的請求后,生成一個ip頭部,這個頭部包含ip地址信息
  5. ip層之后到MAC層,mac層會生成報頭和校驗序列,用於校驗發送包的正確性
  6. MAC層之后就是PHY層會將MAC層的電信號轉化為為網絡傳輸協議所需的格式,通過網線轉發后,最終到達服務器

服務返回的流程也是一樣,把電信號轉化回http請求,貼一張大致的流程圖:

 

從服務器返回接受信號轉為http協議,再到瀏覽器,這里面還有很多流程,如果你打開f12,看一下網站的任何一次訪問,都會發現很多資源並不是一次加載好的,例如圖片,js文件之類的資源,都是在主頁面之后放入請求隊列,再次請求,

eg:

 

也就是說在獲取到返回頁面之后,瀏覽器會解析html,對頁面的資源進行優先級排序,添加新的請求到請求隊列,當所有的關鍵資源全部接收完成的時候,開始渲染頁面,一個完整的頁面渲染就是這樣的

 

 

 我把那個等待專門標注了,因為那個涉及瀏覽器內核如何工作,資源如何加載,這是一個復雜的流程,因為是異步加載,涉及到資源優先級,以及dom樹的繪制以及渲染,都在瀏覽器進行,這一個方面我了解還不夠深,這里面的部分等我了解了再寫


免責聲明!

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



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