一.簡(jiǎn)介
HTTP協(xié)議,中文名:超文本傳輸協(xié)議(HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議, 所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn).
HTTP最開(kāi)始是專門用來(lái)傳輸HTML。
HMTL中文名:超文本標(biāo)記語(yǔ)言。隨著互聯(lián)網(wǎng)時(shí)代的發(fā)展,HTTP可以用來(lái)傳輸任何數(shù)據(jù)類型。
HTTP 是一種請(qǐng)求/響應(yīng)式的協(xié)議。一個(gè)客戶端與服務(wù)器建立連接后,發(fā)送一個(gè)請(qǐng)求給服務(wù)器;服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息。
發(fā)展歷程
HTTP 的第一版本 HTTP/0.9是一種簡(jiǎn)單的用于網(wǎng)絡(luò)間原始數(shù)據(jù)傳輸?shù)膮f(xié)議;
HTTP/1.0由 RFC 1945 定義 ,在原 HTTP/0.9 的基礎(chǔ)上,有了進(jìn)一步的改進(jìn),允許消息以類 MIME 信息格式存 在,包括請(qǐng)求/響應(yīng)范式中的已傳輸數(shù)據(jù)和修飾符等方面的信息;
HTTP/1.1(RFC2616) 的要求更加嚴(yán)格以確保服務(wù)的可靠性,增強(qiáng)了在HTTP/1.0 沒(méi)有充分考慮到分層代理服務(wù)器、高速緩沖存儲(chǔ)器、持久連接需求或虛擬主機(jī)等方面的效能;
安全增強(qiáng)版的 HTTP (即S-HTTP或HTTPS),則是HTTP協(xié)議與安全套接口層(SSL)的結(jié)合,使HTTP的協(xié)議數(shù)據(jù)在傳輸過(guò)程中更加安全。
思考?
? 客戶端該傳什么格式的數(shù)據(jù)給服務(wù)器?服務(wù)器才能看懂
? 服務(wù)器該返回什么格式的數(shù)據(jù)給客戶端?客戶端才能看懂
兩邊要怎樣傳輸數(shù)據(jù)才能有效溝通?
二.HTTP協(xié)議的作用
- 規(guī)定客戶端和服務(wù)器之間的數(shù)據(jù)傳輸格式
- 讓客戶端和服務(wù)器能有效地進(jìn)行數(shù)據(jù)溝通

三.HTTP協(xié)議的特點(diǎn)
簡(jiǎn)單方便快速
因?yàn)镠TTP協(xié)議比較簡(jiǎn)單,所以HTTP服務(wù)器的程序規(guī)模相對(duì)比較小,從而使得通信的速度非???。靈活
Http協(xié)議允許客戶端和服務(wù)器端傳輸任意類型任意格式的數(shù)據(jù)對(duì)象。HTTP 0.9和1.0使用非持續(xù)連接
非持續(xù)連接的含義是每次建立的連接只處理一個(gè)客戶端請(qǐng)求。 當(dāng)服務(wù)器處理完客戶端的請(qǐng)求之后,并且收到客戶的反饋應(yīng)答后,服務(wù)器端立即斷開(kāi)連接。采用這種通信方式可以大大的節(jié)省傳輸時(shí)間。
HTTP 1.1使用持續(xù)連接
不必為每個(gè)web對(duì)象創(chuàng)建一個(gè)新的連接,一個(gè)連接可以傳送多個(gè)對(duì)象面向無(wú)狀態(tài)
Http是無(wú)狀態(tài)的協(xié)議。所謂的無(wú)狀態(tài)是指協(xié)議對(duì)于請(qǐng)求的處理沒(méi)有記憶功能。無(wú)狀態(tài)意味著如果要再次處理先前的信息,則這些先前的信息必須要重傳,這就導(dǎo)致了數(shù)據(jù)量傳輸?shù)脑黾印?/code>
非持續(xù)連接和持續(xù)連接的區(qū)別?
非持續(xù)連接是指啟動(dòng)一次TCP連接服務(wù)器就向客戶端傳送一個(gè)對(duì)象。 持續(xù)連接是指服務(wù)器可在相同的TCP連接上向客戶端發(fā)送多個(gè)對(duì)象。HTTP/1.0的默認(rèn)設(shè)置是非持續(xù)連接,而HTTP/1.1的默認(rèn)設(shè)置是持續(xù)連接。
舉個(gè)例子
在使用HTTP/1.0的情況下,如果打開(kāi)一個(gè)包含一個(gè)HTML文件和10個(gè)內(nèi)聯(lián)圖象對(duì)象的網(wǎng)頁(yè)時(shí),HTTP就要建立11次TCP連接才能把文件從服務(wù)器傳送到客戶端。而使用HTTP/1.1的情況下,如果打開(kāi)同樣的文件時(shí),HTTP建立一次TCP連接就可把文件從服務(wù)器傳送到客戶端。
四、HTTP的基本通信過(guò)程
1、建立請(qǐng)求
HTTP協(xié)議規(guī)定:一個(gè)完整的
由客戶端發(fā)給服務(wù)器的HTTP請(qǐng)求 需要包含以下內(nèi)容:
1)、請(qǐng)求行:指定 請(qǐng)求方法、請(qǐng)求資源路徑 以及 HTTP協(xié)議版本。
# / 表示訪問(wèn)根目錄
GET / HTTP/1.1
2)、請(qǐng)求頭:對(duì)客戶端的環(huán)境描述、客戶端請(qǐng)求的主機(jī)地址等信息。
* 請(qǐng)求頭中 至少包含以下信息
# 客戶端要訪問(wèn)的服務(wù)器主機(jī)地址
Host:m.baidu.com
* 請(qǐng)求頭中 還可以包含以下信息
# 客戶端的類型,客戶端的軟件環(huán)境
User-Agent:iPhone AppleWebKit
# 客戶端所能接收的數(shù)據(jù)類型
Accept:text/html
# 客戶端的語(yǔ)言環(huán)境
Accept-Language:zh-cn
# 客戶端支持的數(shù)據(jù)壓縮格式
Accept-Encoding:gzip
# 訪問(wèn)結(jié)束后,是否斷開(kāi)連接
Connection:Close
3)、請(qǐng)求體(可選):客戶端發(fā)給服務(wù)器的具體數(shù)據(jù),例如要上傳的文件數(shù)據(jù)。
請(qǐng)求格式:
每一項(xiàng)請(qǐng)求信息末尾使用 \r\n
最后一個(gè)請(qǐng)求項(xiàng)末尾使用
\r\n\r\n 表示請(qǐng)求結(jié)束
#warming 每一項(xiàng)請(qǐng)求信息和\r\n之間不能有空格。
2、接收響應(yīng)
客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器應(yīng)當(dāng)做出響應(yīng),即返回給客戶端的數(shù)據(jù)。
HTTP協(xié)議規(guī)定:1個(gè)完整的HTTP響應(yīng)中包含以下內(nèi)容
1)、狀態(tài)行:包含了HTTP協(xié)議版本、狀態(tài)碼、狀態(tài)英文名稱
#HTTP/1.1 200 OK
2)、響應(yīng)頭:包含了對(duì)服務(wù)器的描述、對(duì)返回?cái)?shù)據(jù)的描述
#Server: Apache-Coyote/1.1 // 服務(wù)器的類型
#Content-Type: image/jpeg // 返回?cái)?shù)據(jù)的類型
#Content-Length: 56811 // 返回?cái)?shù)據(jù)的長(zhǎng)度
#Date: Mon, 23 Jun 2014 12:54:52 GMT // 響應(yīng)的時(shí)間
3)、實(shí)體內(nèi)容:服務(wù)器返回給客戶端的具體數(shù)據(jù),比如文件數(shù)據(jù)

五.URL和常見(jiàn)協(xié)議
- 什么是URL
- URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符)
- 通過(guò)1個(gè)URL,能找到互聯(lián)網(wǎng)上唯一的1個(gè)資源
- URL就是資源的地址、位置,互聯(lián)網(wǎng)上的每個(gè)資源都有一個(gè)唯一的URL

