HTTP

HTTP是什么

超文本傳輸協(xié)議

  1. http客戶端發(fā)起請(qǐng)求,創(chuàng)建端口
  2. http服務(wù)器在端口監(jiān)聽(tīng)客戶端請(qǐng)求
  3. http服務(wù)器向客戶端返回狀態(tài)和內(nèi)容

url 到頁(yè)面展現(xiàn)的過(guò)程

  1. chrome 搜索自身的 DNS 緩存 (chrome://net-internals/#dns

  2. 搜索操作系統(tǒng)的 DNS 緩存

  3. 讀取本地的 host 文件

  4. 瀏覽器發(fā)起一個(gè) DNS 的一個(gè)系統(tǒng)調(diào)用,一般是向網(wǎng)絡(luò)運(yùn)營(yíng)商發(fā)

  5. 網(wǎng)絡(luò)運(yùn)營(yíng)商查看自身的緩存

  6. 網(wǎng)絡(luò)運(yùn)營(yíng)商發(fā)起一個(gè)迭代的 DNS 解析請(qǐng)求,向 根域 發(fā)

  7. 根域 從 .com 頂級(jí)域開(kāi)始查找,找到 IP 地址。(url 從后往前查找)

  8. IP地址返回到操作系統(tǒng)內(nèi)核

  9. 操作系統(tǒng)內(nèi)核把結(jié)果返回給瀏覽器

  10. 最終瀏覽器拿到 域名 對(duì)應(yīng)的 IP 地址

  11. 瀏覽器獲得域名對(duì)應(yīng)的 IP 地址后,發(fā)起 HTTP “三次握手”,TCP連接請(qǐng)求

  12. 第一次握手:主機(jī)A發(fā)送位碼為syn=1,隨機(jī)產(chǎn)生seq number=1234567的數(shù)據(jù)包到服務(wù)器,主機(jī)B由SYN=1知道,A要求建立聯(lián)機(jī);

  13. 第二次握手:主機(jī)B收到請(qǐng)求后要確認(rèn)聯(lián)機(jī)信息,向A發(fā)送ack number=(主機(jī)A的seq+1),syn=1,ack=1,隨機(jī)產(chǎn)生seq=7654321的包

  14. 第三次握手:主機(jī)A收到后檢查ack number是否正確,即第一次發(fā)送的seq number+1,以及位碼ack是否為1,若正確,主機(jī)A會(huì)再發(fā)送ack number=(主機(jī)B的seq+1),ack=1,主機(jī)B收到后確認(rèn)seq值與ack=1則連接建立成功。

  15. TCP/IP 連接建立起來(lái)后,瀏覽器就可以向服務(wù)器發(fā)送 http 請(qǐng)求了。

  16. 服務(wù)器端接收到了這個(gè)請(qǐng)求,根據(jù)路徑參數(shù),經(jīng)過(guò)后端處理,把處理后的數(shù)據(jù)返回給瀏覽器

  17. 瀏覽器拿到頁(yè)面的 HTML 代碼后,開(kāi)始解析,解析到 JS、css、img 等靜態(tài)資源的時(shí)候,同樣是一個(gè)個(gè) http 請(qǐng)求,都需要經(jīng)過(guò)上面的 7 個(gè)步驟。

  18. 瀏覽器渲染頁(yè)面,展現(xiàn)給用戶

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

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

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