輸入一個url后大約需要經過以下五個步驟:
一、域名解析
1、根據url路徑解析出里面的域名
注:域名 = 主機名:結構名:網絡名:最高層域名
2、根據域名解析出對應的IP地址
① 查詢瀏覽器中的DNS緩存
② 若瀏覽器中沒有查詢到相應的DNS緩存,查詢本地客戶端的hosts文件中有無對應的ip地址
③ 若hosts文件中也沒有,則查找本地DNS服務器(運營商提供的DNS服務器)
④ 若本地DNS緩存中也沒有,則向根服務器查詢,進行遞歸查找【遞歸查找時從頂級域名開始(如.com),一步步縮小范圍,最終客戶端取得ip地址】
查詢過程如下圖所示:
二、TCP連接的建立
TCP連接是安全的、面向連接的可靠傳輸,建立連接時經過三次握手:
① 客戶端 -----> 服務端:發送帶有SYN標志的連接報文
② 服務端 -----> 客戶端:返回帶有SYN標志的ACK應答報文
③ 客戶端 -----> 服務端:發送ACK應答報文
經過三次握手后,已經成功建立了TCP連接,可以發送數據了。
三、發送HTTP請求
連接建立完成后,開始發送HTTP請求,HTTP請求方法有很多種 ,常用的主要是兩種GET和POST方法
請求報文格式:
請求方法 URL HTTP版本號
請求頭 Header
【一個空行】
請求體 Body
四、服務器進行操作並發送響應
服務器根據請求報文中url里的路徑查找響應資源並對其數據進行處理:
響應報文:
HTTP版本號 狀態碼 狀態碼解釋
響應頭 Header【鍵值對數據】
【一個空行】
響應體 Body
響應狀態碼:
200:OK
301:永久移動,重定向
302:臨時轉發,轉發
400:語法錯誤
403:無權限
404:找不到請求資源,url錯誤
405:請求方法被禁止,請求方法類型不對
500:服務器內部錯誤
五、瀏覽器解析渲染