瀏覽器從輸入網址到渲染完整個頁面的全過程


   1. DNS(域名系統)解析:用戶輸入網址后,DNS根據域名查找IP地址。(域名是人類可以理解的地址,IP地址對應一台真實的物理機器,由於IP地址不容易記憶,所以輸入人類可以理解的網址,DNS再根據域名查找地址)

   2. TCP(傳輸控制協議:是主要的網絡協議之一,能夠使兩台主機建立連接,並交換數據流。)連接。

TCP通過三次握手建立連接:客戶端和服務端都需要知道各自可收發,因此需要三次握手。

第一次:客戶端發送一個SYN(同步序列編號)消息,服務端確定自己能收到客戶端發的消息。

第二次:服務端發送一個SYN+ACK應答表示接收了這個消息,客戶端既確定自己能發送消息給服務端,也能確定自己可以接收服務端發的消息。

第三次:客戶端發送一個ACK回應服務端,服務端確定自己能發送消息到客戶端。

SYN是是TCP建立連接時使用的握手信號。

ACK是確認字符,表示發來的數據已確認接收無誤。在TCP協議中,如果接收方成功的接收到數據,那么會回復一個ACK。

   3. 向web服務器發送HTTP請求:瀏覽器根據解析到的IP地址和端口號發起HTTP請求。

請求報文包括 請求行(包含請求的方法、請求URI和HTTP版本)、請求報頭(首部字段)、請求報文主體。

http支持的請求方法:

get : 從指定的資源請求數據,指定的資源經服務器端解析后返回響應內容。

post : 向指定的資源提交要被處理的數據。雖然get方法也可以傳輸實體主體,但一般不用get方法進行傳輸,而是用post方法。

put :put方法用來傳輸文件。要求在請求報文的主體中包含文件內容,然后保存到請求URI指定的位置。但是HTTP/1.1的put方法自身不帶驗證機制,任何人都可以上傳文件,存在安全性問題,因此一般的網站不使用該方法。

head :head和get幾乎相同,但head不返回報文主體部分,用於確認URI的有效性及資源更新的日期時間等,返回的是與報文主體部分有關的響應首部。

delete :用來刪除文件,是與put相反的方法。delete方法按請求URI刪除指定的資源。但是HTTP/1.1的delete方法本身和put方法一樣不帶驗證機制,所以一般的Web網站也不使用delete方法。

options :查詢針對請求URI指定的資源所支持的方法。

trace : 追蹤路徑,讓Web服務器端將之前的請求通信返回給客戶端的方法。發送請求時,在Max-Forwards首部字段中填入數值,每經過一個服務器端就將改數字減1,當數值剛好減到0時,就停止繼續傳輸,最后接收到請求的服務器端則返回狀態嗎200OK的響應。

請求想要連接到源目標服務器可能會通過代理中轉,客戶端通過trace方法可以查詢發送出去的請求是怎樣被加工修改/篡改的,確認連接過程中發生的一系列操作。

trace方法本來就不常用,再加上容易引發XST(Cross-Site Tracing,跨站追蹤)攻擊,就更加不容易用!

connect:要求用隧道協議連接代理。

connect方法要求在與代理服務器通信時建立隧道,實現用隧道協議進行TCP通信。主要使用SSL和TLS協議把通信內容加密后經網絡隧道傳輸。

請求報頭:請求報頭允許客戶端向服務器傳遞請求的附加信息和客戶端自身的信息。

請求報文主體:在使用post、put等方法時,需要客戶端向服務器傳遞數據。這些數據就儲存在請求報文主體中。

4.服務器處理請求並返回HTTP響應報文。

響應報文:包含狀態行(包括響應結果的狀態碼、原因短語和HTTP版本)、響應報頭(首部字段)和響應報文主體三部分。

狀態碼告知客戶端從服務器端返回的請求結果。狀態碼由3位數字和原因短語組成。數字中的第一位指定了響應類別,響應類別分為5種:

  類別 原因短語
1XX Informational(信息類狀態碼) 請求已接收,接收的請求正在處理
2XX Success(成功狀態碼) 請求正常處理完畢
3XX Readirection(重定向狀態碼) 需要進行附加操作以完成請求
4XX Client Error(客戶端錯誤狀態碼) 服務器無法處理請求
5XX Server Error(服務器錯誤狀態碼) 服務器處理請求出錯

 

常見的狀態碼:

200 OK:表示請求被正常處理,如果頁面需要更新以顯示頁面更新后的資源則返回200

204 No Content : 表示請求已成功處理,但在返回的響應報文中不含實體的主體部分。瀏覽器顯示的頁面不發生更新時返回204

301 Moved Permanently :永久性重定向,表示請求的資源已被分配了新的URI,以后應使用資源現在所指的URI

302 Found :臨時性重定向,表示請求的資源已被分配了新的URI,希望用戶(本次)使用新的URI進行訪問,但是仍舊保留當前頁面的URI

304  Not Modified :表示客戶端發送附帶條件的請求(If-Modified-Since)時,服務器端允許請求訪問資源,但因請求未滿足條件,直接返回304(服務器端資源未改變,可直接使用客戶端未過期的緩存)304狀態碼返回時,不包含任何響應的主體部分。304雖然被划分在3XX類別中,但和重定向沒有關系

400 Bad Request :該狀態碼表示請求報文中存在語法錯誤,當錯誤發生時,需修改請求的內容后再次發送

401 Unauthorized : 該狀態碼表示發送的請求需要有通過HTTP認證的認證信息。若之前已經進行過1次請求,則表示用戶認證失敗

403 Forbidden :該狀態碼表示對請求資源的訪問被服務器拒絕了。未獲得文件系統的訪問授權,訪問權限出現某些問題等情況都可能發生403

404 Not Found :該狀態碼表示服務器端無法找到請求的資源,除此之外,也可以在服務器端拒絕請求且不想說明理由時使用

500 Internal Server Error :該狀態碼表示服務器端在執行請求時發生了錯誤。也有可能是Web應用存在的bug或某些臨時的故障

響應報文主體 :服務器返回給瀏覽器的文本信息,通常HTML, CSS, JS, 圖片等文件就放在這一部分。

5.瀏覽器解析渲染頁面

6.連接結束

 

 

 


免責聲明!

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



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