HTTP協議
1.什么是HTTP協議
- 是一個基于請求和響應的應用層協議, 底層協議是TCP, 保證了數據的可靠傳輸。
- 通過url進行客戶端與服務器之間數據的交互。
- 是一種C/S(B/S)模式的協議(B/S是瀏覽器/服務端模式是一種特殊的C/S), C/S客戶端/服務端:客戶端發(fā)送請求, 服務器接收并響應請求。
- 是無狀態(tài)的協議(不記錄用戶的訪問狀態(tài), 可以通過cookie會話技術告訴服務器用戶狀態(tài))。
2.HTTP協議的流程
- 創(chuàng)建一個TCP鏈接(目的是確??蛻舳撕头掌髦g有一個可靠的數據通路)
三次握手:客戶端向服務器發(fā)起一個信號以確認服務器是否空閑(或是否同意創(chuàng)建鏈接), 服務器返回給客戶端是否哦可以創(chuàng)建連接的信號, 客戶端在發(fā)起一個信號進而創(chuàng)建鏈接。 - 客戶端向服務器發(fā)起HTTP請求, 通過請求頭, 請求體把相關數據傳遞給服務器。
常見的請求方式有:get、post、 put、delete、put
請求頭:包含了本次請求的配置信息(數據格式, cookie, 用戶代理等)
請求體:即參數, 就是客戶端要提交給服務器的內容
get請求和post請求的區(qū)別:
形式上:get請求的參數拼接在url后米娜, post不體現在url上
內容上:get請求提交的數據量有限制(不同瀏覽器對url最大限制不同)post請求對數據提交量沒有限制。 - 服務器處理請求, 響應請求
- 關閉鏈接:每一次http請求與響應結束之后就會把本次創(chuàng)建的TCP鏈接關閉(短鏈接)
HTTP協議在1.1版本以后加入了長連接, HTTP請求結束以后, TCP鏈接不會立即關閉, 經過一段時間以后, 如果這個鏈接不再發(fā)生http請求, 再關掉