HTTP協(xié)議摘要
- HTTP協(xié)議工作在第幾層,它下層使用了哪些協(xié)議?
HTTP是應(yīng)用層協(xié)議,工作在第5層(TCP/IP協(xié)議族)。它的傳輸層使用的是TCP協(xié)議,網(wǎng)絡(luò)層使用IP協(xié)議。
- HTTP協(xié)議是無連接的,其具體含義是什么?
HTTP協(xié)議無連接,不代表真的不建立TCP連接。它是基于TCP的,而TCP是面向連接的傳輸層協(xié)議,所以HTTP一定得建立TCP連接,只不過HTTP限制了每次連接只處理客戶端的一個(gè)請(qǐng)求,響應(yīng)結(jié)束即斷開連接,目的是節(jié)省傳輸時(shí)間。
- HTTP是無狀態(tài)的。
HTTP對(duì)事務(wù)的處理沒有記憶能力。如果后續(xù)操作需要前面的信息,那么前面的信息也必須重傳。
HTTP消息結(jié)構(gòu)
分為客戶端請(qǐng)求消息的結(jié)構(gòu)和服務(wù)器響應(yīng)消息的結(jié)構(gòu):
請(qǐng)求消息
- 請(qǐng)求行: 請(qǐng)求方法(GET/POST/PUT/DELETE/....) URL 協(xié)議版本
- 請(qǐng)求頭部: 由多行組成,每行: 頭部字段名:值。
- 請(qǐng)求數(shù)據(jù): 具體的請(qǐng)求數(shù)據(jù)。
請(qǐng)求方法:
- GET:請(qǐng)求URL標(biāo)識(shí)的資源
- POST:請(qǐng)求URL標(biāo)識(shí)的資源,同時(shí)附加額外的數(shù)據(jù)給服務(wù)器,通常用來提交表單。
- HEAD:和GET類似,知識(shí)響應(yīng)中不必真的回復(fù)具體的內(nèi)容,用于獲取報(bào)頭。
- PUT: 請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源,并用URL標(biāo)識(shí)該資源。
- DELETE:請(qǐng)求服務(wù)器刪除URL標(biāo)識(shí)的資源。
- 其它:TRACE/OPTIONS 不是很常用,用時(shí)自查。
請(qǐng)求頭部:
- Accpt-Charset: 客戶端指定自己能接收什么字符集。
- Accept-Encoding:接受什么編碼。
- Authorization:如果服務(wù)器返回401(未授權(quán)時(shí)),可以添加該字段認(rèn)證自己有權(quán)限
- ....
響應(yīng)消息
- 狀態(tài)行: 號(hào)碼(200/404/503/.......)
- 消息報(bào)頭:后面詳解
- 響應(yīng)正文:通常是html文件。
響應(yīng)頭部
- Allow:服務(wù)器支持哪些請(qǐng)求方法:GET?POST?..
- Content-Encoding: 文檔的編碼方法。
- Content-Length:內(nèi)容長(zhǎng)度,只有當(dāng)瀏覽器使用持久HTTP連接時(shí)才需要這個(gè)數(shù)據(jù)。
- Content-Type: 響應(yīng)正文術(shù)語(yǔ)什么MIME類型,text/html? 等等。。。
- Date: 當(dāng)前GMT時(shí)間。
- Refresh:瀏覽器應(yīng)該在多少時(shí)間后刷新文檔,以秒計(jì)。編程時(shí),函數(shù)setHeader("Refresh","3;URL=http://another_page")可以在3秒鐘后讓瀏覽器刷新到URL指定的頁(yè)面,但是這種功能是通過設(shè)置html的 META DATA來實(shí)現(xiàn)的,是html編寫者寫的。而對(duì)于Servlet, 才可以直接設(shè)置HTTP Refresh頭部。
- Server:Server的名字。
- Set-Cookie:設(shè)置和頁(yè)面關(guān)聯(lián)的Cookie,Cookie的含義和作用后面詳說。
常用狀態(tài)嗎的含義
- 200:正常
- 301:資源被轉(zhuǎn)移
- 403:服務(wù)器拒絕你的訪問。
- 404:資源不存在
- 500:服務(wù)器內(nèi)部錯(cuò)誤
- 503:服務(wù)器暫時(shí)出錯(cuò)了,一段時(shí)間后也許可以使用。