HTTP—一個(gè)應(yīng)用級(jí)協(xié)議

搬磚磷蜀,翻譯自原文https://dev.opera.com/articles/http-basic-introduction/

介紹

在不丹餐曹,當(dāng)人們見(jiàn)面是于颖,他們通常打招呼的方式是“你身體好嗎柏锄?”在日本他們獲取會(huì)鞠躬坪仇,視情況而定杂腰。在阿曼,人們經(jīng)常在握手后輕吻對(duì)方的鼻子椅文。在柬埔寨和泰國(guó)喂很,他們雙手合十像祈禱那樣。所有這些通信(交流)協(xié)議皆刺,一個(gè)簡(jiǎn)單的代碼序列都是有意義和準(zhǔn)備方進(jìn)行有意義的交換少辣。

在網(wǎng)絡(luò)上,我們有一個(gè)非常有小的應(yīng)用協(xié)議羡蛾,他為世界各地的電腦準(zhǔn)備有意義的交換:超文本傳輸協(xié)議(Hypertext Transfer Protocol)漓帅。HTTP是一個(gè)在TCP/IP之上的應(yīng)用級(jí)的協(xié)議,一個(gè)通信(交流)協(xié)議痴怨。在教web設(shè)計(jì)和開(kāi)發(fā)時(shí)忙干,HTTP似乎經(jīng)常被遺忘,這是一個(gè)遺憾:理解它將有主意定義更好的用戶(hù)交互腿箩,實(shí)現(xiàn)更好的站點(diǎn)性能豪直,并未管理網(wǎng)絡(luò)上的消息創(chuàng)建有效的工具。

這是一系列文章的第一篇珠移,目的是教HTTP基礎(chǔ)和我們?cè)鯓痈行У氖褂盟T谶@片文章我們將要看看HTTP適合于用在網(wǎng)絡(luò)機(jī)器哪里末融。

什么是一個(gè)通信協(xié)議钧惧?

在了解詳細(xì)之前,我們想象一下一個(gè)基本的交流情景勾习。為了能夠交流浓瞪,需要兩個(gè)部分(軟件,設(shè)備巧婶,人等等):

  • 語(yǔ)法(數(shù)據(jù)格式和編碼)
  • 語(yǔ)義(控制信息和錯(cuò)誤處理)
  • 時(shí)間(速度匹配和排序)

當(dāng)2個(gè)人見(jiàn)面時(shí)乾颁,他們使用一種通信(交流)協(xié)議:例如,在日本艺栈,一個(gè)人會(huì)用身體做出具體的姿勢(shì)英岭。其中一種姿勢(shì)就是鞠躬,這就是交互中用到的“語(yǔ)法”湿右。在日本文化中诅妹,鞠躬的姿勢(shì)于問(wèn)候某人的“語(yǔ)義”相關(guān)。最后當(dāng)一個(gè)人向另一個(gè)人鞠躬時(shí),在特定的“時(shí)間內(nèi)”已經(jīng)在兩者之間建立了一系列的時(shí)間吭狡。


通信(交流)的協(xié)議

一個(gè)在線(xiàn)的通信協(xié)議包含一樣的元素尖殃。語(yǔ)法是字符的序列,比如我們用于編寫(xiě)協(xié)議的關(guān)鍵字划煮,語(yǔ)義是與這些關(guān)鍵字相關(guān)聯(lián)的意義送丰,最后時(shí)間是兩個(gè)或多個(gè)實(shí)體交換這些關(guān)鍵字的順序。

HTTP適用于機(jī)器的什么地方呢弛秋?

HTTP 運(yùn)行于其他協(xié)議之上蚪战。等連接到到一個(gè)網(wǎng)站時(shí),比如www.example.org铐懊,用戶(hù)代理使用TCP/IP協(xié)議套件邀桑,TCP/IP模型設(shè)計(jì)與1970,有四個(gè)不同的層面:

  1. Link 描述了對(duì)物理媒介的訪(fǎng)問(wèn)(如:使用網(wǎng)卡)
  2. Internet 描述了對(duì)數(shù)據(jù)的封裝和路由 — 它是怎么包裝的(IP)
  3. Transport 描述數(shù)據(jù)從起點(diǎn)傳遞到最終目的地的方式(TCP,UDP)
  4. Application 描述了傳輸?shù)男畔⒌囊饬x或者格式(HTTP)

HTTP 是一個(gè)位于通信協(xié)議之上的應(yīng)用協(xié)議(application protocol)科乎。記住這一點(diǎn)很重要壁畸。將模型分離為獨(dú)立的層有助于發(fā)展平臺(tái)的各個(gè)部分,而不必重寫(xiě)所有內(nèi)容茅茂。比如捏萍,TCP,一個(gè)傳輸協(xié)議空闲,可以不用去修改應(yīng)用協(xié)議HTTP就能發(fā)展令杈。在實(shí)踐中,當(dāng)我們追求高性能通信時(shí)碴倾,這些細(xì)節(jié)變得有點(diǎn)難看逗噩。在前幾篇HTTP文章中,我們將重點(diǎn)討論在TCP/IP模型中定義的層的分離跌榔。HTTP被定義為通過(guò)HTTP消息在兩個(gè)軟件之間通信信息异雁。我們塑造和設(shè)計(jì)這些消息的方式會(huì)對(duì)客戶(hù)端(例如瀏覽器)、服務(wù)器(web站點(diǎn))及其中介(代理)產(chǎn)生影響僧须。

讓我們?cè)L問(wèn)服務(wù)器

端口80是連接到Web服務(wù)器的默認(rèn)端口.我們可以自己用shell試試纲刀。打開(kāi)命令行,用一下的命令担平,嘗試打開(kāi)一個(gè)連接到www.opera.com 的80端口
telnet www.opera.com 80
你會(huì)得到像下面的輸出:

Trying 195.189.143.147...
Connected to front.opera.com.
Escape character is '^]'.
Connection closed by foreign host

我們可以看到終端正在嘗試與位于IP地址195.189.143.147的服務(wù)器進(jìn)行通信示绊。如果我們不做任何其他事情,服務(wù)器將自己關(guān)閉連接暂论。使用不同的端口和不同的通信協(xié)議是完全可能的面褐,但這些是最常見(jiàn)的。

讓我們講一點(diǎn)HTTP

步驟1:用win + r 打開(kāi)cmd
步驟2:在cmd中執(zhí)行www.opera.com 80空另, 然后可以看到一個(gè)黑色的框框
步驟3: 然后按 ctrl + ], 退出盆耽, 結(jié)果為:

歡迎使用 Microsoft Telnet Client
Escape 字符是 'CTRL+]'
Microsoft Telnet>

步驟4: 然后按enter, 進(jìn)入到輸入框, 又是黑漆漆的一片
步驟5:輸入如下內(nèi)容(有時(shí)間限制, 所以最好是先寫(xiě)好摄杂, 然后整體拷貝進(jìn)去)

GET / HTTP/1.1
Host: www.opera.com

這個(gè)消息指定了:

  • GET:我們希望去獲取消息的代表坝咐。
  • /:我們希望獲取存在站點(diǎn)根目錄下的信息。
  • HTTP/1.1 我們使用的是HTTP 1.1版本析恢。
  • 我正在嘗試訪(fǎng)問(wèn)一個(gè)具體的網(wǎng)站墨坚。
  • www.opera.com :網(wǎng)站的名稱(chēng)

步驟6:然后連續(xù)按兩下enter鍵盤(pán), 得到的結(jié)果為:

HTTP/1.1 200 OK
Date: Wed, 23 Nov 2011 19:41:37 GMT
Server: Apache
Content-Type: text/html; charset=utf-8
Set-Cookie: language=none; path=/; domain=www.opera.com; expires=Thu, 25-Aug-2011 19:41:38 GMT
Set-Cookie: language=en; path=/; domain=.opera.com; expires=Sat, 20-Nov-2021 19:41:38 GMT
Vary: Accept-Encoding
Transfer-Encoding: chunked

<!DOCTYPE html>
<html lang="en">
…

這里服務(wù)器說(shuō):“我說(shuō)的是HTTP 1.1版本映挂。你的請(qǐng)求成功了泽篮,所以我回復(fù)了代碼200。OK字符串是可選的柑船,用來(lái)解釋這段代碼對(duì)人類(lèi)的意義——在這種情況下帽撑,一切正常,我們的消息被接受了鞍时。然后發(fā)送一系列HTTP頭來(lái)描述消息是什么亏拉,以及應(yīng)該如何理解它。最后逆巍,包含位于站點(diǎn)根目錄的頁(yè)面內(nèi)容及塘,以<!DOCTYPE html >。下面幾篇文章將解釋HTTP謂詞和代碼列表锐极。


HTTP request and response
總結(jié)

我們剛剛談了HTTP -它是如此簡(jiǎn)單!我們發(fā)送了一個(gè)信息(就像寫(xiě)信一樣)笙僚,我們收到了一個(gè)答復(fù),因?yàn)槲覀兊男畔⒈焕斫饬肆樵佟O麓挝覀儗⒃敿?xì)探討這些標(biāo)題的含義以及它們可以用于什么

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肋层,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子檬嘀,更是在濱河造成了極大的恐慌槽驶,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸳兽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡罕拂,警方通過(guò)查閱死者的電腦和手機(jī)揍异,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)爆班,“玉大人衷掷,你說(shuō)我怎么就攤上這事∈疗校” “怎么了戚嗅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我懦胞,道長(zhǎng)替久,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任躏尉,我火速辦了婚禮蚯根,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胀糜。我一直安慰自己颅拦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布教藻。 她就那樣靜靜地躺著距帅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪括堤。 梳的紋絲不亂的頭發(fā)上碌秸,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音痊臭,去河邊找鬼哮肚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛广匙,可吹牛的內(nèi)容都是我干的允趟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鸦致,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼潮剪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起分唾,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抗碰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后绽乔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弧蝇,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年折砸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了看疗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡睦授,死狀恐怖两芳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情去枷,我是刑警寧澤怖辆,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布是复,位于F島的核電站,受9級(jí)特大地震影響竖螃,放射性物質(zhì)發(fā)生泄漏淑廊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一斑鼻、第九天 我趴在偏房一處隱蔽的房頂上張望蒋纬。 院中可真熱鬧,春花似錦坚弱、人聲如沸蜀备。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碾阁。三九已至,卻和暖如春些楣,著一層夾襖步出監(jiān)牢的瞬間脂凶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工愁茁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚕钦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓鹅很,卻偏偏與公主長(zhǎng)得像嘶居,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子促煮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348