?HTTP協(xié)議又叫超文本傳輸協(xié)議,該協(xié)議是工作在應(yīng)用層。
HTTP的作用
? ? ? ? ?當(dāng)兩臺(tái)計(jì)算機(jī)使用HTTP協(xié)議通信時(shí),一方必定為客戶端,另一方必定為服務(wù)器端。而HTTP卻能明確的區(qū)分出那方是客戶端,那方是服務(wù)器端。HTTP協(xié)議規(guī)定請(qǐng)求是從客戶端發(fā)出,服務(wù)器響應(yīng)請(qǐng)求返回(所以TCP的三次握手是從客戶端先發(fā)起請(qǐng)求的)。
????????一個(gè)請(qǐng)求報(bào)文是由5部分組成。他們分別是URL,協(xié)議版本號(hào),請(qǐng)求首部字段和實(shí)體內(nèi)容組成。
? ? ? ? 一個(gè)響應(yīng)報(bào)文是由5部分構(gòu)成。他們分別是協(xié)議版本,狀態(tài)碼,狀態(tài)碼的原因短語,響應(yīng)首部字段和主體。
HTTP報(bào)文分為請(qǐng)求報(bào)文和響應(yīng)報(bào)文。
在客戶端發(fā)起的HTTP請(qǐng)求叫做請(qǐng)求報(bào)文,請(qǐng)求報(bào)文的結(jié)構(gòu)為,

在服務(wù)器端的響應(yīng)報(bào)文,響應(yīng)報(bào)文的結(jié)構(gòu)為,

HTTP協(xié)議的特點(diǎn)?
HTTP是無狀態(tài)的,也就是說HTTP協(xié)議自身不會(huì)對(duì)請(qǐng)求和響應(yīng)之間的狀態(tài)進(jìn)行保存。每當(dāng)有新的請(qǐng)求就會(huì)產(chǎn)生新的響應(yīng),協(xié)議本身并不保留之前的一切請(qǐng)求。
HTTP的方法都有哪些?
get(獲取資源),post(傳輸實(shí)體主體),put(傳輸文件),head(獲得報(bào)文首部),delete(刪除文件),trace(追蹤路徑)
? ? get和post的區(qū)別
1.最直觀的區(qū)別就是GET把參數(shù)包含在URL中,POST通過request body傳遞參數(shù)。
? ? ? ?2.本質(zhì)是一樣的
? ? ? ? ? ????http的底層是tcp,tcp的作用傳輸數(shù)據(jù) ,get是把傳輸?shù)臄?shù)據(jù)放到url中方便記錄。
????????post方式是把數(shù)據(jù)放到requestbody 中
? ? ? ? 3.url中的數(shù)據(jù)大多數(shù)瀏覽器規(guī)定為2k,大多數(shù)的服務(wù)器最多處理64k大小的數(shù)據(jù),超過的部分,恕不處理。
????????4.Get方式會(huì)把 httpheader 和 data 一并發(fā)過去,服務(wù)器響應(yīng)200 返回?cái)?shù)據(jù)。
????????Post方式瀏覽器先發(fā)送header 服務(wù)器響應(yīng)100 瀏覽器在發(fā)送data 返回?cái)?shù)據(jù)。
常見返回結(jié)果的HTTP狀態(tài)碼
? ??200? 表示客戶端發(fā)送的請(qǐng)求被服務(wù)器端正常的處理。
? ? 204? 表示服務(wù)器連接的請(qǐng)求成功處理,但在返回的報(bào)文中不含實(shí)體的主體部分。
? ? ? ? ? ? 返回204,瀏覽器頁面不發(fā)生跟新。
? ? 206? 表示客戶端進(jìn)行了范圍請(qǐng)求,而服務(wù)器執(zhí)行了這部分的GET請(qǐng)求。
? ? 301 永久性重定向,該狀態(tài)碼表示請(qǐng)求資源已被分配了新的URL,以后使用資源時(shí)現(xiàn)在的URL? ?
? ? 302? 臨時(shí)性重定向,表示請(qǐng)求的資源被分配了新的URL,希望用戶本次使用新的URL。
? ? 303? 該狀態(tài)碼表示請(qǐng)求的資源存在一個(gè)新的URL,應(yīng)使用GET方法定向獲取請(qǐng)求資源。
? ? 304? 該狀態(tài)碼返回時(shí),不包含響應(yīng)主體部分。
? ? 307? ?臨時(shí)重定向,該狀態(tài)碼和302的狀態(tài)碼含義相同,而307會(huì)準(zhǔn)照瀏覽器的標(biāo)準(zhǔn),不會(huì)從POST裝換為GET。? ?
? ? 400 改狀態(tài)碼表示請(qǐng)求中存在語法錯(cuò)誤。
? ? 401 改狀態(tài)碼表示發(fā)送的請(qǐng)求需要通過HTTP認(rèn)證的認(rèn)證信息。另外若之前進(jìn)行過1次請(qǐng)求, 則表示用戶認(rèn)證失敗。
? ? 403 該狀態(tài)碼表示請(qǐng)求的資源被服務(wù)器拒絕了。
? ? 404 該狀態(tài)碼表示服務(wù)器上無法找到請(qǐng)求資源。
? ? 500 該狀態(tài)碼表示服務(wù)器在執(zhí)行請(qǐng)求時(shí)發(fā)生了錯(cuò)誤。
????503 該狀態(tài)碼表示服務(wù)器暫時(shí)處于超負(fù)載或者停機(jī)維護(hù),現(xiàn)在無法處理請(qǐng)求。
HTTP1.0和HTTP1.1的區(qū)別
? ? ? ? 在HTTP1.0版本中每進(jìn)行一次HTTP通信就要建立和斷開一次TCP鏈接。在使用瀏覽器包含多張圖片的HTML頁面時(shí),在發(fā)生請(qǐng)求該HTML資源時(shí)會(huì)增加通信量的開銷。而HTTP1.1版本采用了持久鏈接。建立好TCP鏈接可以進(jìn)行多次HTTP請(qǐng)求,持久鏈接好處減少了重復(fù)建立和開銷造成額外資源的浪費(fèi)。