一、前言
? ? ? ?做Java開發的人員都知道,其實我們很多時候不單單在寫Java程序。做的各種各樣的系統,不管是PC的 還是移動端的,還是為別的系統提供接口。其實都離不開http協議或者https 這些東西。Java作為編程語言,再做業務開發時,已經不單單停留在Java上面了。通訊協議是Java對外提供服務的渠道。本節介紹一下http請求和響應里的各項屬性的含義。所謂的htt協議,其實就是定義了一套參數,參數代表著一些約定的含義,這就是所謂協議
二、http請求體結構解析
http請求報文格式:請求行,請求頭,請求體
請求行:包括四個部分 請求方法、請求地址、空行、協議版本、
http常用的幾種請求方法:get、post、put、delete、option、head等等。
請求頭:請求報文的一些附加信息。
1、請求頭包含的信息
?
請求頭的最后有一行空行表示請求頭的結束,這一很重要,必不可少。這是判斷請求頭是否結束的條件。
請求體:英文(request body),post請求就是靠這個來傳遞參數,而get方法就沒有這個請求體;
一個簡單的post請求實例:
各行屬性解析
?
http響應報文格式:
同樣的,http響應報文也包括了四個部分:響應行、響應頭、空行、響應體。
響應行:包括協議版本、狀態碼
響應頭:響應報文的一些附加信息
?
響應體各屬性解析
三、http通訊過程?
DNS解析
首先,客戶端通過DNS解析域名得到服務器的IP地址。
建立連接
客戶端與服務器通過三次握手建立連接。
發起請求
客戶端發送HTTP請求報文給服務器。
服務器響應
服務器根據請求的端口號、路徑等信息找到對應的資源文件,并將響應的源代碼返回給客戶端。
客戶端處理
客戶端接收到響應數據后,開始解析頁面并請求其他資源。
渲染頁面
客戶端根據解析的數據渲染頁面。
斷開連接
服務器與客戶端通過四次揮手斷開連接。
三次握手與四次揮手
三次握手
概念:TCP協議在建立連接時的一種通信方式,用于確保通信雙方的可靠性。
流程
客戶端發送SYN包給服務器,請求建立連接。
服務器回復SYNACK包,表示同意建立連接。
客戶端發送ACK包,確認建立連接。
四次揮手
概念:TCP協議在斷開連接時的一種通信方式。
流程
客戶端發送FIN包給服務器,表示沒有數據要發送。
服務器回復ACK包,確認收到FIN包。
服務器發送FIN包給客戶端,表示沒有數據要發送。
客戶端回復ACK包,確認收到FIN包,然后進入TIMEWAIT狀態,等待一段時間后關閉連接。
通過這些步驟,HTTP協議確保了客戶端與服務器之間的可靠通信。
?