一.簡(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最開始是專門用來傳輸HTML稿蹲。
HMTL中文名:超文本標(biāo)記語言。隨著互聯(lián)網(wǎng)時(shí)代的發(fā)展鹊奖,HTTP可以用來傳輸任何數(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 沒有充分考慮到分層代理服務(wù)器狰贯、高速緩沖存儲(chǔ)器、持久連接需求或虛擬主機(jī)等方面的效能;
安全增強(qiáng)版的 HTTP (即S-HTTP或HTTPS)嗦玖,則是HTTP協(xié)議與安全套接口層(SSL)的結(jié)合器瘪,使HTTP的協(xié)議數(shù)據(jù)在傳輸過程中更加安全欣除。
思考杠娱?
? 客戶端該傳什么格式的數(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ù)器端立即斷開連接。采用這種通信方式可以大大的節(jié)省傳輸時(shí)間悄雅。
HTTP 1.1使用持續(xù)連接
不必為每個(gè)web對(duì)象創(chuàng)建一個(gè)新的連接,一個(gè)連接可以傳送多個(gè)對(duì)象
面向無狀態(tài)
Http是無狀態(tài)的協(xié)議矫俺。所謂的無狀態(tài)是指協(xié)議對(duì)于請(qǐng)求的處理沒有記憶功能。無狀態(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的情況下从隆,如果打開一個(gè)包含一個(gè)HTML文件和10個(gè)內(nèi)聯(lián)圖象對(duì)象的網(wǎng)頁時(shí),HTTP就要建立11次TCP連接才能把文件從服務(wù)器傳送到客戶端。而使用HTTP/1.1的情況下,如果打開同樣的文件時(shí)炉擅,HTTP建立一次TCP連接就可把文件從服務(wù)器傳送到客戶端纲岭。
四止潮、HTTP的基本通信過程
1唆樊、建立請(qǐng)求
HTTP協(xié)議規(guī)定:一個(gè)完整的
由客戶端發(fā)給服務(wù)器的HTTP請(qǐng)求 需要包含以下內(nèi)容:
1)仓洼、請(qǐng)求行:指定 請(qǐng)求方法介牙、請(qǐng)求資源路徑 以及 HTTP協(xié)議版本饶唤。
# / 表示訪問根目錄
GET / HTTP/1.1
2)、請(qǐng)求頭:對(duì)客戶端的環(huán)境描述贯钩、客戶端請(qǐng)求的主機(jī)地址等信息募狂。
* 請(qǐng)求頭中 至少包含以下信息
# 客戶端要訪問的服務(wù)器主機(jī)地址
Host:m.baidu.com
* 請(qǐng)求頭中 還可以包含以下信息
# 客戶端的類型,客戶端的軟件環(huán)境
User-Agent:iPhone AppleWebKit
# 客戶端所能接收的數(shù)據(jù)類型
Accept:text/html
# 客戶端的語言環(huán)境
Accept-Language:zh-cn
# 客戶端支持的數(shù)據(jù)壓縮格式
Accept-Encoding:gzip
# 訪問結(jié)束后角雷,是否斷開連接
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ù)的長度
#Date: Mon, 23 Jun 2014 12:54:52 GMT // 響應(yīng)的時(shí)間
3)、實(shí)體內(nèi)容:服務(wù)器返回給客戶端的具體數(shù)據(jù),比如文件數(shù)據(jù)
五.URL和常見協(xié)議
- 什么是URL
- URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符)
- 通過1個(gè)URL充甚,能找到互聯(lián)網(wǎng)上唯一的1個(gè)資源
- URL就是資源的地址以政、位置,互聯(lián)網(wǎng)上的每個(gè)資源都有一個(gè)唯一的URL