https://mp.weixin.qq.com/s/fpA2CThk2L-YBw6z0k4rtw
HTTP 請求/相應
1、客戶端連接到Web服務器
一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認為80)建立一個TCP套接字連接。
2、發送HTTP請求
通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。
3、服務器接受請求並返回HTTP響應
Web服務器解析請求,定位請求資源。服務器將資源復本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。
4、釋放連接TCP連接
若connection 模式為close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection 模式為keepalive,則該連接會保持一段時間,在該時間內可以繼續接收請求。
5、客戶端瀏覽器解析HTML內容
客戶端瀏覽器首先解析狀態行,查看表明請求是否成功的狀態代碼。然后解析每一個響應頭,響應頭告知以下為若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示。
在瀏覽器地址欄鍵入URL,按下回車之后會經歷以下流程
1、瀏覽器向 DNS 服務器請求解析該 URL 中的域名所對應的 IP 地址; 2、解析出 IP 地址后,根據該 IP 地址和默認端口 80,和服務器建立TCP連接; 3、瀏覽器發出讀取文件(URL 中域名后面部分對應的文件)的HTTP 請求,該請求報文作為 TCP 三次握手的第三個報文的數據發送給服務器; 4、服務器對瀏覽器請求作出響應,並把對應的 html 文本發送給瀏覽器; 5、釋放 TCP連接; 6、瀏覽器將該 html 文本並顯示內容;