HTTP相關(guān)知識(shí)

Hypertext transfer protocol(簡(jiǎn)稱:HTTP超文本傳輸協(xié)議叉袍。HTTPWWW(world wide web 萬(wàn)維網(wǎng))在一個(gè)超文本里面包含超鏈接的數(shù)據(jù)通信的基礎(chǔ)锭沟。

HTTP的發(fā)展起始于1989年被 Tim Berners-LeeCERN創(chuàng)立。HTTP標(biāo)準(zhǔn)的發(fā)展是被IEIF(Internet Engineering Task Force)W3C (world wide web consortium)調(diào)整,并在提出 RFCs(request for comments)后達(dá)到了頂點(diǎn)。

HTTP的第一個(gè)修訂版HTTP/1.1,在1997被廣泛應(yīng)用,不過(guò) 在 1999 年被 RFC 2616廢棄,之后在2014年又出現(xiàn)了 RFC 7230驾孔;

稍后芍秆,在2015年,提出了 繼任者HTTP/2(之后的繼任者是HTTP/3, 建立在 HTTP/2之上),現(xiàn)在被大部分主要的web服務(wù)器和瀏覽器通過(guò) TSL(Transport Layer Security 傳輸層安全協(xié)議)使用ALPN (Application-Layer Protocol Negotiation 應(yīng)用層協(xié)議協(xié)商)擴(kuò)展支持的翠勉。

1妖啥、技術(shù)介紹

HTTP方法作為一個(gè)請(qǐng)求-響應(yīng)客戶端-服務(wù)器計(jì)算模式。舉例对碌,比如一個(gè)web瀏覽器,或者是一個(gè)客戶端應(yīng)用程序運(yùn)行在擁有網(wǎng)站域名的電腦主機(jī)上荆虱。客戶端發(fā)起一個(gè) HTTP request 請(qǐng)求朽们,提供資源比如 HTML或者其他資源或代表客戶機(jī)執(zhí)行其他行為的一個(gè)服務(wù)器怀读,返回一個(gè)response message響應(yīng)的消息給客戶端。返回的響應(yīng)信息包含了請(qǐng)求的完整信息狀態(tài)和或許會(huì)包含請(qǐng)求的內(nèi)容骑脱。

瀏覽器就是一個(gè)用戶代理(user agent 簡(jiǎn)稱 UA)菜枷。其他的用戶代理包括,搜索提供服務(wù)的索引瀏覽器(web爬蟲)叁丧,語(yǔ)音瀏覽器啤誊,移動(dòng)apps和其他軟件,訪問拥娄、消耗或者展示 網(wǎng)頁(yè)內(nèi)容蚊锹。

HTTP被設(shè)計(jì)去允許網(wǎng)絡(luò)中間件元素去提高或者加強(qiáng)客戶端和服務(wù)器之間的通信。高并發(fā)的網(wǎng)站經(jīng)常受益在那些傳遞在上層服務(wù)器提高響應(yīng)時(shí)間的web cache(網(wǎng)頁(yè)緩存)上条舔。網(wǎng)頁(yè)瀏覽器緩存之前獲取到的資源然后再減少網(wǎng)絡(luò)擁堵的時(shí)候重復(fù)使用這些資源枫耳。在私有網(wǎng)絡(luò)邊界的HTTP代理服務(wù)器能夠促進(jìn)和通過(guò)額外的服務(wù)器傳遞消息的客戶端的通信。

HTTP是一個(gè)設(shè)計(jì)在互聯(lián)網(wǎng)協(xié)議套件Internet protocol suite)里的一個(gè)應(yīng)用層協(xié)議孟抗。它的定義內(nèi)容假一個(gè)潛在的可靠的傳輸層協(xié)議transport layer protocol 簡(jiǎn)稱 TLP )和 傳輸控制協(xié)議Transmission Control Protocol 簡(jiǎn)稱 TCP)被普遍應(yīng)用。然而钻心,HTTP可以被適用于不可靠額協(xié)議比如用戶數(shù)據(jù)報(bào)協(xié)議 (User Dategram Protocol 簡(jiǎn)稱 UDP),比如凄硼,HTTPU 通用即用即插簡(jiǎn)單的服務(wù)發(fā)現(xiàn)協(xié)議 (Simple Service Discovery Protocol 簡(jiǎn)稱 SSDP)

HTTP資源利用URLs 統(tǒng)一資源存放器(Uniform Resource Locators)定義和存放在網(wǎng)絡(luò)上捷沸,利用URL‘s(Uniform Resource identifiers)統(tǒng)一資源標(biāo)識(shí)符 http 和 https摊沉。比如:包含所有的可選擇的組件:

[外鏈圖片轉(zhuǎn)存失敗(img-hsc38fMd-1564190968738)(assets/1559022847926.png)]

URLs在HTML 文檔中被解碼為超鏈接,所以成為了相關(guān)聯(lián)的超文本文檔痒给。

HTTP/1.1是在原來(lái)HTTP(HTTP/1.0)的一次版本更新说墨,在HTTP/1.0,每一次請(qǐng)求服務(wù)器資源苍柏,都要單獨(dú)發(fā)一次請(qǐng)求連接尼斧。在HTTP/1.1,可以在頁(yè)面被發(fā)布后,重復(fù)使用一個(gè)請(qǐng)求連接去請(qǐng)求下載圖片试吁,腳本和樣式表等棺棵。

2楼咳、歷史

術(shù)語(yǔ) hypertext最早在1985年被Ted Nelson 提出,反而在1930年的 vannevar Bush 的基于微縮膠卷的信息檢索和管理的“memex”系統(tǒng)所激勵(lì)烛恤。后來(lái)Berners-Lee和他的團(tuán)隊(duì)發(fā)明的最初的HTTP, 還有Html和相關(guān)的網(wǎng)頁(yè)服務(wù)器和基于文本的網(wǎng)頁(yè)瀏覽器的相關(guān)的技術(shù)母怜,終于被認(rèn)可。

Broners-lee在1989年 第一次提出了 “worldWideWeb”項(xiàng)目缚柏,也就是現(xiàn)在著名的 World Wide Web苹熏。第一個(gè)版本的協(xié)議只有一個(gè)方法:GET, 可以從一個(gè)服務(wù)器請(qǐng)一個(gè)頁(yè)面,從服務(wù)器返回的一直是一個(gè)頁(yè)面币喧。

第一個(gè)注明的HTTP版本是 HTTP V0.9, Dave Raggett 創(chuàng)建HTTP工作小組(HTTP WG)柜裸,打算擴(kuò)大協(xié)議擴(kuò)展業(yè)務(wù),擴(kuò)大談判粱锐,豐富媒體元信息疙挺,嘗試使用一個(gè)安全協(xié)議,后來(lái)通過(guò)增加額外的方法和消息頭變得更加有效率怜浅。RFC 1945官方介紹和發(fā)布認(rèn)證HTTP V1.0 在1996铐然;

HTTP WG 打算在1995年12月發(fā)布一些新的標(biāo)準(zhǔn)和對(duì)基于開發(fā)中的RFC2068的預(yù)標(biāo)準(zhǔn)HTTP/1.1提供支持,并在1996早期就被大部分瀏覽器開發(fā)者適用認(rèn)可恶座。同年三月搀暑,預(yù)標(biāo)準(zhǔn) HTTP/1.1 被大部分瀏覽器支持。

發(fā)展歷程:

  • RFC 7230, HTTP/1.1: Message Syntax and Routing
  • RFC 7231, HTTP/1.1: Semantics and Content
  • RFC 7232, HTTP/1.1: Conditional Requests
  • RFC 7233, HTTP/1.1: Range Requests
  • RFC 7234, HTTP/1.1: Caching
  • RFC 7235, HTTP/1.1: Authentication

HTTP/2 作為 RFC 7540 在2015年五月發(fā)布跨琳。

年份 HTTP 版本
1991 0.9
1996 1.0
1997 1.1
2015 2.0
2018 3.0

3自点、HTTP session 會(huì)話

一個(gè)HTTP回話是一系列網(wǎng)絡(luò)請(qǐng)求-響應(yīng)失誤。一個(gè)HTTP客戶端通過(guò)一個(gè)特殊的服務(wù)器端口(一般是80脉让,偶爾是8080)建立一個(gè)TCP 連接 桂敛。一個(gè)HTTP server 監(jiān)聽這個(gè)端口等待客戶端發(fā)出請(qǐng)求信息。一旦是收到請(qǐng)求溅潜,服務(wù)器返回一個(gè)狀態(tài)碼:比如 “HTTP/1.1 200 OK”和它自己的消息术唬。此消息的正文一般是請(qǐng)求的資源,或者也許可能是一些錯(cuò)誤消息或者其他信息滚澜。

[外鏈圖片轉(zhuǎn)存失敗(img-vMsZD46g-1564190968740)(assets/1559027962666.png)]

3.1 持續(xù)連接

HTTP/0.91.0粗仓,每一次單獨(dú)請(qǐng)求/響應(yīng)后,連接會(huì)被關(guān)閉设捐。在 HTTP/1.1借浊,一個(gè) keep-alive-mechanism 保持存活機(jī)制被介紹,多次單個(gè)請(qǐng)求可以共用一個(gè)連接通道萝招。這樣的持續(xù)的連接明顯地減少請(qǐng)求延遲時(shí)間蚂斤,因?yàn)榭蛻舳嗽诘谝粋€(gè)請(qǐng)求發(fā)出去之后不需要重新談判和TCP進(jìn)行三次握手的連接。一般的即寒,連接因?yàn)?code>TCP的slow-start機(jī)制變得更加快速橡淆。

3.2 HTTP 會(huì)話狀態(tài)

HTTP是一個(gè)無(wú)狀態(tài)協(xié)議召噩。一個(gè)無(wú)狀態(tài)的協(xié)議不會(huì)要求HTTP 服務(wù)器在多個(gè)請(qǐng)求中去保存每一個(gè)用戶的信息或者狀態(tài)。但是逸爵,一些網(wǎng)頁(yè)應(yīng)用程序?qū)崿F(xiàn)狀態(tài)或者服務(wù)器端會(huì)話用做HTTP cookie 或者隱藏在網(wǎng)頁(yè)表單里的變量具滴。

4、HTTP authentication 認(rèn)證

HTTP 提供多種驗(yàn)證方案如:基本的 訪問驗(yàn)證消化訪問驗(yàn)證师倔,通過(guò)質(zhì)問-驗(yàn)證機(jī)制憑借服務(wù)器標(biāo)識(shí)符和在提供其請(qǐng)求內(nèi)容之前提出一個(gè)質(zhì)問權(quán)限的操作构韵。

Authentication realms 身份驗(yàn)證領(lǐng)域

HTTP身份驗(yàn)證規(guī)范提供了一個(gè)任意的,實(shí)現(xiàn)指定的構(gòu)造趋艘,用于劃分單獨(dú)的資源到一個(gè)公共的給定的Root URL; 這個(gè)realm值是一個(gè)字符串疲恢,如果存在,一定是和規(guī)范的root URL結(jié)合來(lái)保護(hù)空間抵抗挑戰(zhàn)瓷胧。在一個(gè)根目錄下显拳,可以單獨(dú)定義不同的認(rèn)證作用域。

5搓萧、Message format 消息格式

客戶端和服務(wù)器之間的通信靠發(fā)送純文本消息(ASCII)杂数。客戶端發(fā)送到服務(wù)器瘸洛,服務(wù)器發(fā)送響應(yīng)信息揍移;

5.1 request message 請(qǐng)求消息

請(qǐng)求的消息有以下組成部分:

  • 一個(gè) 請(qǐng)求命令行 ,比如 (GET /images/logo.png HTTP/1.1)
  • 請(qǐng)求頭 request header fields
  • 一個(gè)空行
  • 一個(gè)可選擇的消息正文
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末反肋,一起剝皮案震驚了整個(gè)濱河市那伐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌石蔗,老刑警劉巖罕邀,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抓督,居然都是意外死亡燃少,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門铃在,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人碍遍,你說(shuō)我怎么就攤上這事定铜。” “怎么了怕敬?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵揣炕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我东跪,道長(zhǎng)畸陡,這世上最難降的妖魔是什么鹰溜? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮丁恭,結(jié)果婚禮上曹动,老公的妹妹穿的比我還像新娘。我一直安慰自己牲览,他們只是感情好墓陈,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著第献,像睡著了一般贡必。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庸毫,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天仔拟,我揣著相機(jī)與錄音,去河邊找鬼飒赃。 笑死利花,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盒揉。 我是一名探鬼主播晋被,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刚盈!你這毒婦竟也來(lái)了羡洛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤藕漱,失蹤者是張志新(化名)和其女友劉穎欲侮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肋联,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡威蕉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了橄仍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韧涨。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侮繁,靈堂內(nèi)的尸體忽然破棺而出虑粥,到底是詐尸還是另有隱情,我是刑警寧澤宪哩,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布娩贷,位于F島的核電站,受9級(jí)特大地震影響锁孟,放射性物質(zhì)發(fā)生泄漏彬祖。R本人自食惡果不足惜茁瘦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望储笑。 院中可真熱鬧甜熔,春花似錦、人聲如沸南蓬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赘方。三九已至烧颖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窄陡,已是汗流浹背炕淮。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跳夭,地道東北人涂圆。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像币叹,于是被迫代替她去往敵國(guó)和親润歉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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