HTTP

#HTTP學(xué)習(xí)總結(jié)HTTP協(xié)議和TCP/IP協(xié)議作用相同促脉,都是用于客戶端和服務(wù)器之間的通信。在用于HTTP協(xié)議時,必然有一端擔(dān)任客戶端蓬网,另一端擔(dān)任服務(wù)器端角色。而且兩者的角色隨時可能互換------從一條通信線路來說鹉勒,服務(wù)端和客戶端的角色是確定的帆锋。和HTTP關(guān)系密切的協(xié)議:[TCP/IP](http://baike.baidu.com/link?url=6XiP08Nh9e6aRtRbI6jPMvx1Vn1wy9jYB5th2qj0EcgugRwnrdZaFEqE_viarropjOzbZ_WOV7A6QQzW8sal6YsLFID7ScDtrmSGcRyUpijvsq7qihRy0iSq_NIEKdy-q1SZASIck6jgzB9e0Jsyy_)和DNS:見下圖```sequence發(fā)送端->DNS端: 把它的IP地址告訴我吧 DNS端->發(fā)送端:它的地址是192.168.XXX.XXX發(fā)送端->服務(wù)器端:像192.168.XXX.XXX發(fā)送訪問請求```1. 首先客戶端想訪問http://www.xxx.com。2. 客戶端向NDS解析說:告訴我http://www.xxx.com的IP地址吧3. NDS告訴客戶端:http://www.xxx.com的IP地址是192.168.xxx.xxx4. 客戶端使用HTTP協(xié)議的職責(zé)贸弥,生成對服務(wù)器端的HTTP請求報文5. 客戶端使用TCP協(xié)議窟坐,將HTTP請求報文分割成報文段,按序號分為多個報文段,并且把每個報文段傳給對方6. 客戶端利用IP協(xié)議哲鸳,搜索到對方的地址臣疑,一遍中轉(zhuǎn),一邊傳送7. 服務(wù)器端使用TCP協(xié)議徙菠,將從對方那里接收到的報文段以原來的順序重組請求報文8. 服務(wù)器端利用HTTP協(xié)議讯沈,對請求內(nèi)容進(jìn)行處理9. 然后處理的結(jié)果再用同樣的過程進(jìn)行回傳##HTTP中可使用的幾種方法:* **GET:獲取資源*** **POST:傳輸實體主體**GET方法也可以傳輸實體,但是一般不用GET方法進(jìn)行傳輸婿奔,而是用POST方法缺狠,雖然說POST與GET相似,但是POST主要目的不是為了獲取響應(yīng)的主體內(nèi)容萍摊。* **PUT傳輸文件**PUT方法用來傳輸文件挤茄,就像FTP協(xié)議的文件上傳一樣,要求在請求保溫的主體中包含文件內(nèi)容冰木,然后保存到請求URI指定的位置穷劈。* **HEAD:獲取報文首部**HEAD方法和GET方法一樣,只是不返回報文主體部分踊沸。用于確認(rèn)URI的有效性及資源更新的日期時間歇终。* **DELETE:刪除文件**DELETE方法用來刪除文件,是與PUT相反的方法逼龟。DELETE方法按請求URL刪除指定的資源评凝。* **OPTIONS:詢問支持的方法**OPTIONS方法用來查詢針對請求URI指定的資源支持的方法* **TRACE:追蹤路徑**TRACE方法是讓服務(wù)器端將之前的請求通信環(huán)回給客戶端的方法。* **CONNECT:要求用隧道協(xié)議連接代理**CONNECT方法要求在與代理服務(wù)器通信時建立隧道腺律,實現(xiàn)用隧道協(xié)議進(jìn)行TCP通信奕短。主要使用SSL和TLS協(xié)議把通信內(nèi)容加密后經(jīng)網(wǎng)絡(luò)隧道傳輸。| 方法? ? |? ? 說明 || :------- | --------:|| GET? ? ? | 獲取資源 || POST? ? | 傳輸實體主體 || PUT? ? ? | 傳輸文件 || HEAD? ? | 獲得報文首部 || DELETE? | 刪除文件 || OPTIONS? | 詢問支持的方法 || TRACE? | 追蹤路徑 || CONNECT? | TRACE || LINK? ? | 建立和資源之間的連接|| UNLINK? | 斷開連接關(guān)系 |###HTTP歷程HTTP協(xié)議的初始版本中疾渣,每進(jìn)行一次HTTP通信就要斷開一次TCP連接篡诽。這樣會造成無謂的TCP連接建立和斷開,增加通信量的開銷榴捡。后來為了解決上述問題杈女,想出了持久連接------只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態(tài)------而且持久連接使得多數(shù)請求以管線化方法成為可能吊圾。###使用cookie的狀態(tài)管理HTTP是無狀態(tài)協(xié)議达椰,它不對之前發(fā)生過的請求和響應(yīng)的狀態(tài)進(jìn)行管理。也就是說项乒,無法根據(jù)之前的狀態(tài)進(jìn)行本次的請求處理啰劲,而且讓客戶端管理全部客戶端狀態(tài)則會成為負(fù)擔(dān)。保留無狀態(tài)協(xié)議這個特征的同時又要解決類似的問題檀何,于是引入了cookie技術(shù)------通過在請求和響應(yīng)報文中寫入cookie信息來控制客戶端的狀態(tài)蝇裤。* 沒有cookie信息狀態(tài)下的請求```sequence客戶端->服務(wù)端: 請求Note right of 服務(wù)端: 生成cookie廷支,并記錄信息 服務(wù)端->客戶端: 在響應(yīng)中添加cookie后返回```* 第二次有cookie后請求```sequence客戶端->服務(wù)端: 請求中添加cookie方法Note right of 服務(wù)端: 檢查cookie服務(wù)端->客戶端: 響應(yīng)```HTTP請求報文和響應(yīng)報文的內(nèi)容如下:1. 請求報文(沒有cookie信息的狀態(tài))```GET /reader/ HTTP/1.1Host: hackr.jp```2. 響應(yīng)報文(服務(wù)器生成cookie信息)```HTTP/1.1 200OKDate: Thu, 12 Jul 2012 07:12:20 GMTServer: Apache10-Oct-12 07:12:20 GMT>

Contect-Type: text/plain: charset:UTF-8

```

3. 請求報文(自動發(fā)送保存著的cookie信息)

```

GET /image/ HTTP/1.1

Host:hackr.jp

Cookie:aid=1342077140226724

```

###返回結(jié)果的HTTP狀態(tài)碼

|? 狀態(tài)碼? | 類別 |? ? 原因短語 |

| :------- |? ? ? |--------:|

| 1XX? ? ? | Informational(信息性狀態(tài)碼) | 接收的請求正在處理|

| 2XX? ? ? | Success(成功狀態(tài)碼)| 請求正常處理完畢 |

| 3XX? ? ? | Redirection(重定向狀態(tài)碼) | 需要進(jìn)行附加操作以完成請求 |

| 4XX? ? ? | Client Error(客戶端錯誤狀態(tài)碼)| 服務(wù)器無法處理請求 |

| 5XX? ? ? | Server Error(服務(wù)器錯誤狀態(tài)碼)| 服務(wù)器處理請求出錯 |

###HTTP首部

首部字段這里不做多描述,詳見[鏈接](http://www.cnblogs.com/kissdodog/archive/2013/04/01/2993228.html)

###與HTTP協(xié)作的服務(wù)器

* 用單個虛擬主機(jī)實現(xiàn)多個域名

* 通信數(shù)據(jù)轉(zhuǎn)發(fā)程序:代理栓辜、網(wǎng)關(guān)恋拍、隧道

* 代理

1. 代理服務(wù)器的功能是代理網(wǎng)絡(luò)用戶去取得網(wǎng)絡(luò)信息。主要功能是利用緩存技術(shù)保存在代理服務(wù)器上藕甩,當(dāng)代理再次接受到相同資源的請求時施敢,就可以不從源服務(wù)器哪里獲取資源,而是將之前緩存的資源作為響應(yīng)返回狭莱。

2. 代理在轉(zhuǎn)發(fā)請求或者響應(yīng)時僵娃,不對報文做任何加工的稱為透明代理。反之腋妙,對報文內(nèi)容進(jìn)行加工的代理被稱為非透明代理默怨。

* 網(wǎng)關(guān)

網(wǎng)關(guān)工作機(jī)制和代理相似。網(wǎng)關(guān)能使通信線路上的服務(wù)器提供非HTTP協(xié)議服務(wù)骤素。

```sequence

客戶端->網(wǎng)關(guān): HTTP請求

網(wǎng)關(guān)->非HTTP服務(wù)器: 非HTTP協(xié)議通信

非HTTP服務(wù)器->網(wǎng)關(guān):

網(wǎng)關(guān)->客戶端:HTTP響應(yīng)

```

* 隧道

隧道可按要求建立一條與其他服務(wù)器的通信線路先壕,屆時使用SSL等加密手段進(jìn)行通信。隧道的目的是確弊惶穑客戶端能與服務(wù)器進(jìn)行安全的通信。

###HTTP集绰、Socket规辱、TCP的區(qū)別轉(zhuǎn)自[編程小翁](http://www.cocoachina.com/ios/20160325/15773.html)

1. TCP鏈接與HTTP的區(qū)別

HTTP基于TCP,客戶端往服務(wù)器發(fā)送一個HTTP請求時第一步就是要建立與服務(wù)器的TCP鏈接栽燕,也就是先三次握手罕袋。一次TCP連接可以發(fā)送多次HTTP請求。

2. TCP連接與Socket連接的區(qū)別

socket層只是在TCP/UDP傳輸層上做的一個抽象接口層碍岔,因此一個socket連接可以基于TCP浴讯,也可能基于UDP“玻基于TCP協(xié)議的socket連接同樣需要通過三次握手建立連接榆纽,是可靠的;基于UDP協(xié)議的socket連接不需要建立連接的過程捏肢,不過對方能不能收到都會發(fā)送過去奈籽,是不可靠的,大多數(shù)的即時通訊IM都是后者鸵赫。

3. HTTP連接與socket連接的區(qū)別

* HTTP是短連接衣屏,socket(基于TCP)是長連接

* HTTP服務(wù)端無法主動發(fā)消息,socket連接雙反隨時可以向另一方喊話辩棒。

4. 什么時候該用HTTP狼忱,什么時候該用socket

* 用HTTP的情況:雙方不需要時刻保持連接在線膨疏,比如客戶端資源的獲取、文件上傳等钻弄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佃却,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斧蜕,更是在濱河造成了極大的恐慌双霍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件批销,死亡現(xiàn)場離奇詭異洒闸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)均芽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門丘逸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掀宋,你說我怎么就攤上這事深纲。” “怎么了劲妙?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵湃鹊,是天一觀的道長。 經(jīng)常有香客問我镣奋,道長币呵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任侨颈,我火速辦了婚禮余赢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哈垢。我一直安慰自己妻柒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布耘分。 她就那樣靜靜地躺著举塔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陶贼。 梳的紋絲不亂的頭發(fā)上啤贩,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音拜秧,去河邊找鬼痹屹。 笑死,一個胖子當(dāng)著我的面吹牛枉氮,可吹牛的內(nèi)容都是我干的志衍。 我是一名探鬼主播暖庄,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼楼肪!你這毒婦竟也來了培廓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤春叫,失蹤者是張志新(化名)和其女友劉穎肩钠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暂殖,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡价匠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了呛每。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踩窖。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晨横,靈堂內(nèi)的尸體忽然破棺而出洋腮,到底是詐尸還是另有隱情,我是刑警寧澤手形,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布啥供,位于F島的核電站,受9級特大地震影響库糠,放射性物質(zhì)發(fā)生泄漏滤灯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一曼玩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窒百,春花似錦黍判、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渤滞,卻和暖如春贬墩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妄呕。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工陶舞, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绪励。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓肿孵,卻偏偏與公主長得像唠粥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子停做,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容