HTTP請求與響應步驟
http請求和響應,說白了就是計算機之間的問答對話。http請求是提問者,http響應是回答者。詳細步驟如下所示。
-
建立連接
先解析DNS,例如把localhost變成ip(127.0.0.1),然後根據127.0.0.1和端口號8080(沒有端口號則使用默認的端口)建立socket。也可以理解爲通過“三次握手”建立TCP連接,確定通訊正常。 -
發送請求命令
socket建立好之後,客戶端開始向web服務器發送請求命令(GET/POST等)。 -
發送請求頭(和請求正文如果有)
客戶端先發送與自身相關的信息,再發送空行表示請求頭髮送完畢,如果是post則繼續發送請求正文。 -
回傳狀態行
應答第一步,發送協議版本和狀態碼(200、503、404等) -
回傳應答頭
應答第二步,先發送自身相關信息、Content-Type(必須)及被請求的文檔。 -
回傳應答正文
應答第三步,根據應答頭的Content-Type指定的格式發送應答正文。 -
關閉連接
一次‘會話’完成,如果設置了Connection:keep-alive則TCP連接不關閉,否則關閉連接。
PS:常見狀態碼
1xx:指示信息–表示請求已接收,繼續處理。
2xx:成功–表示請求已被成功接收、理解、接受。
3xx:重定向–要完成請求必須進行更進一步的操作。
4xx:客戶端錯誤–請求有語法錯誤或請求無法實現。
5xx:服務器端錯誤–服務器未能實現合法的請求。