HTTP 協(xié)議簡(jiǎn)介
HTTP 是超文本傳輸協(xié)議 (Hyper Text Transfer Protocol)的縮寫,用于 WWW 服務(wù)
HTTP的工作原理
HTTP是一個(gè)面向事務(wù)的客戶服務(wù)器協(xié)議.盡管 HTTP使用TCP 作為底層傳輸協(xié)議,但是HTTP 協(xié)議是無(wú)狀態(tài)的,也就是說,每個(gè)事務(wù)都是獨(dú)立的進(jìn)行處理.在瀏覽器和服務(wù)器之間的請(qǐng)求和響應(yīng)的交互尿褪,必須遵循 HTTP 規(guī)定的格式和規(guī)則。
1 瀏覽器分析待訪問頁(yè)面的 URL 并向本地 DNS 服務(wù)器請(qǐng)求 IP 地解析;
2 DNS 服務(wù)器解析出該 HTTP 服務(wù)器的 IP 地址并將 IP 地址返回給瀏覽器;
3 瀏覽器與 HTTP 服務(wù)器建立 TCP 連接,若連接成功注暗,則進(jìn)入下一步;
4 瀏覽器向 HTTP 服務(wù)器發(fā)出請(qǐng)求報(bào)文 (含 GET 信息)趾唱,請(qǐng)求訪問服務(wù)器的指定頁(yè)面;
5 服務(wù)器作出響應(yīng)奴璃,將瀏覽器要訪問的頁(yè)面發(fā)送給瀏覽器瞒滴,在頁(yè)面?zhèn)鬏斶^程中,瀏覽器會(huì)打開多個(gè)端口哮缺,與服務(wù)器建立多個(gè)連接;
6 釋放 TCP 連接;
7 瀏覽器收到頁(yè)面并顯示給用戶弄跌。
HTTP 報(bào)文格式
HTTP 有兩類報(bào)文:從客戶到服務(wù)器的請(qǐng)求報(bào)文和從服務(wù)器到客戶的響應(yīng)報(bào)文.
顯示了兩種報(bào)文的結(jié)構(gòu)。
請(qǐng)求報(bào)文(請(qǐng)求行 首部行[HTTP頭],實(shí)體 )
- 請(qǐng)求行
- 方法字段尝苇,最常用的方法為 “GET”铛只,表示請(qǐng)求讀取一個(gè)萬(wàn)維網(wǎng)的頁(yè)面。常用的方法還有 “HEAD(指讀取頁(yè)面的首部)”和“POST(請(qǐng)求接受所附加的信息);
- URL 字段為主機(jī)上的文件名茎匠,這時(shí)因?yàn)樵诮?TCP 連接時(shí)已經(jīng)有了主機(jī)名;
- 版本字段說明所使用的 HTTP 協(xié)議的版本格仲,一般為 “HTTP/1.1”押袍。
- 首部行
- 第一個(gè)字段等同請(qǐng)求行的第三字段;
- 第二個(gè)字段一般為“200”诵冒,表示一切正常,狀態(tài)碼共有41種谊惭,常用的有:301 (網(wǎng)站已轉(zhuǎn)移)汽馋,400(服務(wù)器無(wú)法理解請(qǐng)求報(bào)文),404(服務(wù)器沒有鎖請(qǐng)求的對(duì)象)等;
- 第三個(gè)字段時(shí)解釋狀態(tài)碼的短語(yǔ)圈盔。
- 根據(jù)具體情況豹芯,首部行的行數(shù)是可變的。請(qǐng)求首部有 Accept 字段驱敲,其值表示瀏覽器,可以接受何種類型的媒體;Accept-language铁蹈,其值表示瀏覽器使用的語(yǔ)言;User-agent 表明可用的瀏覽器類型。響應(yīng)首部中有 Date众眨、Server握牧、Content-Type、Content-Length 等字段娩梨。在請(qǐng)求首部和響應(yīng)首部中都有 Connection 字段沿腰,其值為 Keep-Alive 或 Close,表示服務(wù)器在傳送完所請(qǐng)求的對(duì)象后是保持連接或關(guān)閉連接
- 實(shí)體
- 若請(qǐng)求報(bào)文中使用 “GET”方法狈定,首部行后面沒有實(shí)體主體.
- 當(dāng)使用"POST"方法,附加的信息被填寫在實(shí)體部分.
- 在相應(yīng)報(bào)文中 ,實(shí)體主部分為服務(wù)器發(fā)給客戶的對(duì)象.