一個http請求從瀏覽器發出去,經歷的過程(即上網流程)


步驟

1- 輸入網址 

2- 緩存解析 

3- 域名解析 

4- tcp連接,三次握手 

5-服務器收到請求

6-頁面渲染

7-服務器收到請求

8-開始解析html

9-四次揮手斷開TCP連接

一:輸入網址

輸入你要訪問的網站網址了,俗稱url;

二:緩存解析

瀏覽器獲取了這個url,當然就去解析了,它先去緩存當中看看有沒有,從 瀏覽器緩存-系統緩存-路由器緩存 當中查看,如果有從緩存當中顯示頁面,然后沒有那就進行步驟三; 
緩存就是把你之前訪問的web資源,比如一些js,css,圖片什么的保存在你本機的內存或者磁盤當中。

(1) 在chrome瀏覽器中輸入網址: chrome://chrome-urls/ chrome-urls是一個看到所有的Chrome支持的偽RUL,找到其中的chrome://appcache-internals/ 可以看見chrome的本地緩存地址:Instances in: C:\Users\User\AppData\Local\Google\Chrome\User Data\Default (0)

(2)在chrome中訪問www.baidu.com/,打開開發者模式,不勾選 Disable cache

三: 域名解析

在發送http之前,需要進行DNS解析即域名解析。 
DNS解析:域名到IP地址的轉換過程。域名的解析工作由DNS服務器完成。解析后可以獲取域名相應的IP地址
和步驟二一樣,做一個訪問新頁面的操作juejin.im/timeline,同樣打開開發者模式,,不勾選 Disable cache

通過域名查找對應的服務器IP
- 在本地vhosts文件中查找
- 在本地DNS服務器中查找
- 本地DNS服務器向根DNS服務器發送請求,根DNS服務器會返回一個域服務器(.com服務器)地址
- 本地DNS服務器向域服務器發送請求,域服務器返回一個域名解析服務器地址
- 本地DNS服務器向域名解析服務器發送請求,獲得服務器ip地址
- 本地DNS服務器緩存查詢結果,並告知瀏覽器

 

四:tcp連接,三次握手

在域名解析之后,瀏覽器向服務器發起了http請求,三次握手,瀏覽器與服務器建立TCP連接。TCP協議是面向連接的,所以在傳輸數據前必須建立連接
注意:三次握手的目的是確保通訊雙發的發送、接收消息的功能都正常
(1)客戶端向服務器發送連接請求報文; 
(2)服務器端接受客戶端發送的連接請求后后回復ACK報文,並為這次連接分配資源。 
(3)客戶端接收到ACK報文后也向服務器端發生ACK報文,並分配資源。

這樣TCP連接就建立了。 
在此之后,瀏覽器開始向服務器發送http請求,請求數據包。請求信息包含一個頭部和一個請求體。

五:服務器收到請求

服務器收到瀏覽器發送的請求信息,返回一個響應頭和一個響應體。

 發送HTTP請求到達服務器,nginx作為反向代理服務器會將請求分發給web服務器

六:頁面渲染

nginx作為web服務器處理請求,如果是靜態請求js、css、圖片等,直接將靜態資源返回給客戶端;如果是動態請求.php,通過fast-cgi轉交給php-fpm,php-fpm調用cgi腳本解釋器解析腳本,得到的結果再經由fast-cgi返回給nginx,nginx將結果返回給客戶端

 

七、 客戶端接收到response返回結果,開始解析html,以及內嵌資源。發現有遠程資源,繼續向服務器請求資源

 

八、四次揮手斷開TCP連接
  

四次揮手的目的:確認雙發都收到斷開連接的請求。

C 發出斷開連接的請求
S ack 這個斷開請求,確保自己的數據傳輸完畢,再發送斷開連接的請求,
C 收到斷開請求進入TIME-WAIT狀態,發送ack,等待2MSL后沒有再收到S的請求則完全斷開連接
S 收到C的ack后關閉連接

 


免責聲明!

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



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