一起了解http漓滔、https、http2.0相關(guān)概念

HTTP

我們知道技術(shù)一般源于人們的需求與愿望乖篷,HTTP也是這樣產(chǎn)生的响驴。人們想在互聯(lián)網(wǎng)上分享信息,他們就得想出一個(gè)辦法來(lái)傳輸這些信息撕蔼。最后他們想出了一些交流信息的流程豁鲤,列出了在互聯(lián)網(wǎng)傳輸信息的規(guī)則,經(jīng)過(guò)不斷的修改罕邀、總結(jié)畅形,這些東西形成了一個(gè)協(xié)議,他們把它命名為 HyperText Transfer Protocol诉探,簡(jiǎn)稱HTTP,翻譯成中文是超文本傳輸協(xié)議。

HTTP規(guī)定了客戶端和服務(wù)端之間的傳輸規(guī)則棍厌。


explain the protocol

為了解釋得清楚些肾胯,我摘抄了維基百科中關(guān)于HTTP的描述:

超文本傳輸協(xié)議
超文本傳輸協(xié)議(英文:HyperText Transfer Protocol,縮寫:HTTP)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議耘纱。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法敬肚。通過(guò)HTTP或者HTTPS協(xié)議請(qǐng)求的資源由統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifiers,URI)來(lái)標(biāo)識(shí)束析。

HTTP的發(fā)展是萬(wàn)維網(wǎng)協(xié)會(huì)(World Wide Web Consortium艳馒,W3C)和互聯(lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)合作的結(jié)果,(他們)最終發(fā)布了一系列的RFC弄慰,其中最著名的是1999年6月公布的 RFC 2616第美,定義了HTTP協(xié)議中現(xiàn)今廣泛使用的一個(gè)版本——HTTP 1.1。

2014年12月互聯(lián)網(wǎng)工程任務(wù)組(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小組將HTTP/2標(biāo)準(zhǔn)提議遞交至IESG進(jìn)行討論[1]陆爽,于2015年2月17日被批準(zhǔn)什往。[2] HTTP/2標(biāo)準(zhǔn)于2015年5月以RFC 7540正式發(fā)表,替換HTTP 1.1成為HTTP的實(shí)現(xiàn)標(biāo)準(zhǔn)慌闭。
協(xié)議概述
HTTP是一個(gè)客戶端終端(用戶)和服務(wù)器端(網(wǎng)站)請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP)别威。通過(guò)使用Web瀏覽器、網(wǎng)絡(luò)爬蟲(chóng)或者其它的工具驴剔,客戶端發(fā)起一個(gè)HTTP請(qǐng)求到服務(wù)器上指定端口(默認(rèn)端口為80)省古。我們稱這個(gè)客戶端為用戶代理程序(user agent)。應(yīng)答的服務(wù)器上存儲(chǔ)著一些資源丧失,比如HTML文件和圖像衫樊。我們稱這個(gè)應(yīng)答服務(wù)器為源服務(wù)器(origin server)。在用戶代理和源服務(wù)器中間可能存在多個(gè)“中間層”利花,比如代理服務(wù)器科侈、網(wǎng)關(guān)或者隧道(tunnel)。

盡管TCP/IP協(xié)議是互聯(lián)網(wǎng)上最流行的應(yīng)用炒事,HTTP協(xié)議中臀栈,并沒(méi)有規(guī)定必須使用它或它支持的層。事實(shí)上挠乳,HTTP可以在任何互聯(lián)網(wǎng)協(xié)議上权薯,或其他網(wǎng)絡(luò)上實(shí)現(xiàn)。HTTP假定其下層協(xié)議提供可靠的傳輸睡扬。因此盟蚣,任何能夠提供這種保證的協(xié)議都可以被其使用。因此也就是其在TCP/IP協(xié)議族使用TCP作為其傳輸層卖怜。

通常屎开,由HTTP客戶端發(fā)起一個(gè)請(qǐng)求,創(chuàng)建一個(gè)到服務(wù)器指定端口(默認(rèn)是80端口)的TCP連接马靠。HTTP服務(wù)器則在那個(gè)端口監(jiān)聽(tīng)客戶端的請(qǐng)求奄抽。一旦收到請(qǐng)求,服務(wù)器會(huì)向客戶端返回一個(gè)狀態(tài)甩鳄,比如"HTTP/1.1 200 OK"逞度,以及返回的內(nèi)容,如請(qǐng)求的文件妙啃、錯(cuò)誤消息档泽、或者其它信息。

簡(jiǎn)單總結(jié)一下上面的解釋,

  • HTTP是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,設(shè)計(jì)最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法馆匿,萬(wàn)維網(wǎng)協(xié)會(huì)(World Wide Web Consortium抑胎,W3C)和互聯(lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)合作不斷發(fā)展改進(jìn)了HTTP,之后HTTP有了好幾個(gè)版本甜熔。
  • HTTP是基于TCP的圆恤,由HTTP客戶端發(fā)起一個(gè)請(qǐng)求,會(huì)創(chuàng)建一個(gè)到服務(wù)器指定端口(默認(rèn)80端口)的TCP連接腔稀,HTTP服務(wù)器會(huì)在那個(gè)端口監(jiān)聽(tīng)客戶端的請(qǐng)求盆昙。一旦收到請(qǐng)求,服務(wù)器會(huì)向客戶端返回一個(gè)狀態(tài)(如"HTTP/1.1 200 OK")以及返回的內(nèi)容(如請(qǐng)求的文件焊虏、錯(cuò)誤消息淡喜、或者其它信息)。

如果想對(duì)HTTP有詳細(xì)一點(diǎn)的了解诵闭,推薦這里的一篇博客炼团。

HTTP的版本

HTTP作為互聯(lián)網(wǎng)中使用最廣泛的網(wǎng)絡(luò)協(xié)議,肯定是不斷改進(jìn)的結(jié)果疏尿。而改進(jìn)的動(dòng)力簡(jiǎn)單來(lái)說(shuō)就是對(duì)傳輸速度的追求瘟芝。

在不斷的改進(jìn)中,HTTP存在有以下幾個(gè)版本:HTTP/0.9褥琐、HTTP/1.0锌俱、HTTP/1.1、HTTP/2敌呈。

同樣我們看看維基百科的介紹:

0.9
已過(guò)時(shí)贸宏。只接受GET一種請(qǐng)求方法,沒(méi)有在通訊中指定版本號(hào)磕洪,且不支持請(qǐng)求頭吭练。由于該版本不支持POST方法,因此客戶端無(wú)法向服務(wù)器傳遞太多信息析显。

HTTP/1.0
這是第一個(gè)在通訊中指定版本號(hào)的HTTP協(xié)議版本鲫咽,至今仍被廣泛采用,特別是在代理服務(wù)器中叫榕。

HTTP/1.1
持久連接被默認(rèn)采用浑侥,并能很好地配合代理服務(wù)器工作。還支持以管道方式在同時(shí)發(fā)送多個(gè)請(qǐng)求晰绎,以便降低線路負(fù)載,提高傳輸速度括丁。

HTTP/1.1相較于HTTP/1.0協(xié)議的區(qū)別主要體現(xiàn)在:

緩存處理
帶寬優(yōu)化及網(wǎng)絡(luò)連接的使用
錯(cuò)誤通知的管理
消息在網(wǎng)絡(luò)中的發(fā)送
互聯(lián)網(wǎng)地址的維護(hù)
安全性及完整性

HTTP/2
當(dāng)前版本荞下,于2015年5月作為互聯(lián)網(wǎng)標(biāo)準(zhǔn)正式發(fā)布。

HTTP/0.9是HTTP的第一個(gè)版本,現(xiàn)在已經(jīng)過(guò)時(shí)尖昏,為了改進(jìn)協(xié)議仰税,之后相繼有了HTTP/1.0、HTTP/1.1抽诉。1.0和1.1并存了很長(zhǎng)時(shí)間陨簇,HTTP/1.1是目前主流版本。2015年發(fā)布了HTTP/2.0,這個(gè)也是這兩年討論比較多的技術(shù)了迹淌,因?yàn)樗鄬?duì)于HTTP/1.x來(lái)說(shuō)有非常大的進(jìn)步河绽,優(yōu)化了HTTP/1.x很多問(wèn)題,不過(guò)作為下一代的HTTP協(xié)議唉窃,需要很長(zhǎng)一段的時(shí)間才會(huì)普及耙饰。

在HTTP/2.0出現(xiàn)之前,為了優(yōu)化HTTP/1.x的各種問(wèn)題纹份,還出現(xiàn)了一種HTTP兼容協(xié)議苟跪,叫SPDY,由Google發(fā)起的,Chrome蔓涧、Opera件已、Firefox以及Amazon Silk等瀏覽器都提供了支持。其實(shí)元暴,http2.0也是以SPDY為原型進(jìn)行討論和標(biāo)準(zhǔn)化的篷扩。為了給http2.0讓路,google已決定在2016年不再繼續(xù)支持SPDY開(kāi)發(fā)昨寞,但在http2.0出生之前瞻惋,SPDY已經(jīng)有了相當(dāng)規(guī)模的應(yīng)用,作為一個(gè)過(guò)渡方案恐怕在還將一段時(shí)間內(nèi)繼續(xù)存在援岩。 關(guān)于http2.0以及SPDY更多的了解歼狼,可以參考這篇文章

HTTPS

超文本傳輸安全協(xié)議(英語(yǔ):Hyper Text Transfer Protocol over Secure Socket Layer享怀,縮寫HTTPS羽峰。也被稱為HTTP over TLS,HTTP over SSL或HTTP Secure)添瓷。

簡(jiǎn)單來(lái)說(shuō)HTTPS就是安全增強(qiáng)版的HTTP,是HTTP協(xié)議與加密協(xié)議的結(jié)合梅屉,使HTTP的協(xié)議數(shù)據(jù)在傳輸過(guò)程中更加安全。因?yàn)樵然ヂ?lián)網(wǎng)上使用的 HTTP(這里說(shuō)的是HTTP/1.x鳞贷,HTTP/2.0不會(huì)再用明文) 協(xié)議是明文的坯汤,存在很多缺點(diǎn)——比如傳輸內(nèi)容會(huì)被偷窺(嗅探)和篡改。 所以網(wǎng)景公司Netscape)在1994年創(chuàng)建了HTTPS搀愧。

上面說(shuō)到的加密協(xié)議叫SSL惰聂,是英文Secure Sockets Layer的縮寫疆偿,中文叫“安全套接層”,也是由網(wǎng)景公司設(shè)計(jì)的搓幌,所以上面說(shuō)HTTPS也被稱為HTTP over SSL杆故。

到了1999年,SSL 因?yàn)閼?yīng)用廣泛溉愁,已經(jīng)成為互聯(lián)網(wǎng)上的事實(shí)標(biāo)準(zhǔn)处铛。IETF 就把 SSL 標(biāo)準(zhǔn)化了。標(biāo)準(zhǔn)化之后的名稱改為 TLS(是“Transport Layer Security”的縮寫)拐揭,中文叫做“傳輸層安全協(xié)議”撤蟆。很多相關(guān)的文章都把這兩者并列稱呼(SSL/TLS),因?yàn)檫@兩者可以視作同一個(gè)東西的不同階段投队。

HTTPS將HTTP協(xié)議數(shù)據(jù)包放到SSL/TSL層加密后枫疆,在TCP/IP層組成IP數(shù)據(jù)報(bào)去傳輸,以此保證傳輸數(shù)據(jù)的安全敷鸦;而對(duì)于接收端息楔,在SSL/TSL將接收的數(shù)據(jù)包解密之后,將數(shù)據(jù)傳給HTTP協(xié)議層扒披,就是普通的HTTP數(shù)據(jù)值依。

imgr.png

接下來(lái)了解下SSL/TLS協(xié)議。首先了解下對(duì)稱加密和非對(duì)稱加密碟案,對(duì)稱加密就是將你要傳輸?shù)膬?nèi)容用一個(gè)密鑰加密起來(lái)愿险,發(fā)送方和都要知道這個(gè)密鑰,用它來(lái)加密解密价说。但使用對(duì)稱加密需要給對(duì)方傳這個(gè)密鑰辆亏,在互聯(lián)網(wǎng)上傳輸這個(gè)密鑰很容易被截取。所以就有了非對(duì)稱加密鳖目,這種加密指的是可以生成一對(duì)密鑰 (k1, k2)扮叨。凡是 k1 加密的數(shù)據(jù),k1 自身不能解密领迈,而需要 k2 才能解密彻磁;凡是 k2 加密的數(shù)據(jù),k2 不能解密狸捅,需要 k1 才能解密衷蜓。

SSL/TLS協(xié)議的做法是把這兩者結(jié)合:

  1. 假如A與B要傳輸信息,那么A可以使用非對(duì)稱加密生成一對(duì)密鑰 (k1, k2)尘喝,然后將k1發(fā)給B, k2自己保留;
  2. B收到k1后先自己使用對(duì)稱加密生成一個(gè)key, 然后使用k1將這個(gè)key加密傳給A磁浇;
  3. A收到密文后使用k2將其解密,至此朽褪,A和B已經(jīng)完成了key的傳輸扯夭,之后他們就可以使用這個(gè)key按對(duì)稱加密的方式傳輸信息鳍贾。

因?yàn)樵趥鬏斶^(guò)程中只暴露了k1,要解密需要知道k2,所以就算有人竊取到傳輸?shù)男畔柏遥矡o(wú)法解密交洗。

但SSL/TLS協(xié)議不僅僅是做了這些,因?yàn)槿绻@樣的方式還是有方法可以破解的橡淑,有一種方法是“中間人攻擊”构拳,它分別欺騙A和B,讓對(duì)方誤以為它是A(或者B),這樣它就可以自己定義一個(gè)key,然后欺騙A和B,讓他們誤以為已經(jīng)完成了key的傳輸,然后使用這個(gè)key來(lái)傳輸信息梁棠。為了防止這種攻擊置森,又引入了一個(gè)叫 CA的東西。CA(Certificate Authority) 是一些非常權(quán)威的專門用于認(rèn)證一個(gè)網(wǎng)站合法性的組織符糊。這樣A和B在傳輸密鑰的時(shí)候就可以通過(guò)CA來(lái)判斷對(duì)方是否合法凫海,這樣“中間人攻擊”也就無(wú)法實(shí)施。

HTTPS把對(duì)稱加密男娄、非對(duì)稱加密和CA結(jié)合起來(lái)以保證數(shù)據(jù)安全行贪。如果想對(duì)對(duì)稱加密和非對(duì)稱加密以及SSL/TLS要更多了解可以參考下面兩篇文章:

  1. HTTPS 是如何保證安全的?
  2. SSL/TLS協(xié)議運(yùn)行機(jī)制的概述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市模闲,隨后出現(xiàn)的幾起案子建瘫,更是在濱河造成了極大的恐慌,老刑警劉巖尸折,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啰脚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡实夹,警方通過(guò)查閱死者的電腦和手機(jī)橄浓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)亮航,“玉大人荸实,你說(shuō)我怎么就攤上這事∪福” “怎么了泪勒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宴猾。 經(jīng)常有香客問(wèn)我圆存,道長(zhǎng),這世上最難降的妖魔是什么仇哆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任沦辙,我火速辦了婚禮,結(jié)果婚禮上讹剔,老公的妹妹穿的比我還像新娘油讯。我一直安慰自己详民,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布陌兑。 她就那樣靜靜地躺著沈跨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兔综。 梳的紋絲不亂的頭發(fā)上饿凛,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音软驰,去河邊找鬼涧窒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛锭亏,可吹牛的內(nèi)容都是我干的纠吴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼慧瘤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼戴已!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起碑隆,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恭陡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后上煤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體休玩,經(jīng)...
    沈念sama閱讀 44,104評(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,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡独泞,死狀恐怖呐矾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情懦砂,我是刑警寧澤蜒犯,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站荞膘,受9級(jí)特大地震影響罚随,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜羽资,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一淘菩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屠升,春花似錦潮改、人聲如沸狭郑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翰萨。三九已至,卻和暖如春趾疚,著一層夾襖步出監(jiān)牢的瞬間缨历,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工糙麦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丛肮。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓赡磅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宝与。 傳聞我的和親對(duì)象是個(gè)殘疾皇子焚廊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • 需求 “人們最初設(shè)計(jì)互聯(lián)網(wǎng)時(shí),很少考慮到安全习劫。這樣的結(jié)果是咆瘟,核心通信協(xié)議本質(zhì)上是不安全的,只能依靠所有參與方的誠(chéng)信...
    thinkq閱讀 1,001評(píng)論 0 3
  • 1.OkHttp源碼解析(一):OKHttp初階2 OkHttp源碼解析(二):OkHttp連接的"前戲"——HT...
    隔壁老李頭閱讀 20,821評(píng)論 24 176
  • 一诽里、作用 不使用SSL/TLS的HTTP通信袒餐,就是不加密的通信。所有信息明文傳播谤狡,帶來(lái)了三大風(fēng)險(xiǎn)灸眼。 (1)竊聽(tīng)風(fēng)險(xiǎn)...
    XLsn0w閱讀 10,494評(píng)論 2 44
  • 目錄 準(zhǔn)備 分析2.1. 三次握手2.2. 創(chuàng)建 HTTP 代理(非必要)2.3. TLS/SSL 握手2.4. ...
    RunAlgorithm閱讀 37,982評(píng)論 12 117
  • pop詳細(xì)介紹原文地址--轉(zhuǎn)載 官方地址 官方介紹(翻譯版)POP是一個(gè)在iOS與OS X上通用的極具擴(kuò)展性的動(dòng)畫...
    風(fēng)___________閱讀 1,087評(píng)論 5 1