websocket協(xié)議簡(jiǎn)單理解

與http協(xié)議區(qū)別:

  • http是需要客戶(hù)端發(fā)送一個(gè)請(qǐng)求之后趣倾,服務(wù)器才回一個(gè)response給客戶(hù)端,即“一個(gè)request對(duì)應(yīng)一個(gè)response”,雖然http是基于全雙工的tcp協(xié)議而定制的,但是http協(xié)議確實(shí)沒(méi)做到真正的全雙工挂谍!假設(shè)在客戶(hù)端沒(méi)發(fā)送一個(gè)http的request給服務(wù)器而服務(wù)器卻首先發(fā)送一個(gè)response給客戶(hù)端的話(huà)琢岩,那么客戶(hù)端是沒(méi)法接受這個(gè)response的!網(wǎng)上很多人覺(jué)得這個(gè)很不好迷帜,其實(shí)嘛,我倒是覺(jué)得這是一種保護(hù)客戶(hù)端的舉措色洞,試想戏锹,如果客戶(hù)端在沒(méi)發(fā)起請(qǐng)求的時(shí)候反而隨便接受來(lái)自服務(wù)器可以的東西,那么火诸,這是很容易造成不法分子的攻擊的=跽搿(至于怎么攻擊,你可以想象淘寶店知道了你的地址之后給你整天寄‘有害’的快遞的話(huà)置蜀,你會(huì)舒服么奈搜?)
    但是,有些場(chǎng)景非常需要服務(wù)器自己發(fā)送數(shù)據(jù)給客戶(hù)的盯荤!但是鑒于上面的攻擊問(wèn)題馋吗,我們有沒(méi)有一種好的解決方式呢?有的秋秤,那就是通過(guò)websocket協(xié)議來(lái)實(shí)現(xiàn)宏粤,那么websocket協(xié)議到底是怎么實(shí)現(xiàn)的呢?

  • 我們都知道灼卢,http中一個(gè)request對(duì)應(yīng)一個(gè)response绍哎,但是如果我們這樣:一個(gè)http對(duì)應(yīng)多個(gè)response,比如:股票網(wǎng)站需要實(shí)時(shí)刷新網(wǎng)站上面的數(shù)據(jù)鞋真,刷新的時(shí)間基本是基于毫秒的崇堰!此時(shí)的http的一個(gè)request對(duì)應(yīng)一個(gè)response就不適用了,試想,有哪個(gè)客戶(hù)為了刷新股票數(shù)據(jù)然后就去不停的手動(dòng)點(diǎn)擊發(fā)起request來(lái)接受服務(wù)端的response海诲,所以我們此時(shí)希望服務(wù)端智能一點(diǎn)繁莹,我們希望我們只需要點(diǎn)擊一次網(wǎng)頁(yè)就能夠不停的給我刷新網(wǎng)頁(yè),當(dāng)然服務(wù)器也不是閑著蛋疼不停的給你發(fā)送response饿肺,畢竟這樣消耗的資源太大了蒋困,我們?yōu)榱斯?jié)省資源同時(shí)也是合乎邏輯的決定:當(dāng)且僅你請(qǐng)求的數(shù)據(jù)在服務(wù)器有更新的時(shí)候,服務(wù)器才會(huì)給你發(fā)送更新后的數(shù)據(jù)敬辣,而不是不停的給客戶(hù)端發(fā)送沒(méi)更新的數(shù)據(jù)雪标。這個(gè)跟上面的攻擊就有很明顯的不同了,首先溉跃,客戶(hù)端事先需要發(fā)起一次http協(xié)議村刨,然后服務(wù)端在有數(shù)據(jù)更新的時(shí)候才返回更新的數(shù)據(jù)給客戶(hù)端,此時(shí)客戶(hù)端接受到更新數(shù)據(jù)渲染在頁(yè)面中去撰茎,然后繼續(xù)等待服務(wù)器再一次新的數(shù)據(jù)(此時(shí)不用再發(fā)送http的request請(qǐng)求了)嵌牺,從這里可以看出,其實(shí)websocket協(xié)議更像是基于tcp/ip的http的變種而已龄糊,而已還基于一次的http請(qǐng)求逆粹。離開(kāi)了http請(qǐng)求的話(huà),websocket協(xié)議也是不能運(yùn)作的炫惩!但是他不是基于http協(xié)議僻弹,因?yàn)楦鷋ttp協(xié)議有著本值的區(qū)別,他只是順便利用了一次http協(xié)議而已他嚷!之后的多次response都會(huì)由服務(wù)器自動(dòng)返回給客戶(hù)端蹋绽。

  • websocket完美的解決了上面的攻擊問(wèn)題和http協(xié)議的不足!

與tcp的區(qū)別:

  • 說(shuō)實(shí)話(huà)我想不到跟tcp有什么特別的相像之處,他們完全是不同層面的東西,tcp在七層模型的網(wǎng)絡(luò)層,http和websocket都在七層模型的會(huì)話(huà)層,websockt確實(shí)只需要一次request,但是他確實(shí)不是一次"握手"就可以了,但是在這里使用握手真的合適么?我們都知道tcp才有握手之說(shuō),但是某些博文硬生生說(shuō)出了握手這個(gè)詞,我的天!!
    注意這里他們所說(shuō)的握手跟tcp的三次握手四次揮手完全不是一個(gè)東西,我之前看其他博文看到只需要一次握手的websocket,剛開(kāi)始時(shí)候我以為網(wǎng)絡(luò)要逆天了?結(jié)果卻是這么一個(gè)東西,不過(guò)這個(gè)協(xié)議確實(shí)在某些場(chǎng)合還是很有用的!我看到招聘網(wǎng)上寫(xiě)了Django+Daphne,然后順著Daphne才找到了這個(gè)websocket協(xié)議,看了下博文,發(fā)現(xiàn)很多誤解,于是就發(fā)了這篇博文做解釋!

  • 接下來(lái)放上幾張七層網(wǎng)絡(luò)和五層(或者四層)網(wǎng)絡(luò)的圖,當(dāng)然我一般不喜歡分為5層,一般都是分為4層,也就是合并最下面的2層:


    image.png

    image.png

    image.png

    image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末筋蓖,一起剝皮案震驚了整個(gè)濱河市卸耘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粘咖,老刑警劉巖蚣抗,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瓮下,居然都是意外死亡忠聚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)唱捣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人网梢,你說(shuō)我怎么就攤上這事震缭。” “怎么了战虏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵拣宰,是天一觀的道長(zhǎng)党涕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)巡社,這世上最難降的妖魔是什么膛堤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮晌该,結(jié)果婚禮上肥荔,老公的妹妹穿的比我還像新娘。我一直安慰自己朝群,他們只是感情好燕耿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著姜胖,像睡著了一般誉帅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上右莱,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天蚜锨,我揣著相機(jī)與錄音,去河邊找鬼慢蜓。 笑死亚再,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的胀瞪。 我是一名探鬼主播针余,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凄诞!你這毒婦竟也來(lái)了圆雁?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤帆谍,失蹤者是張志新(化名)和其女友劉穎伪朽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體汛蝙,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烈涮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窖剑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坚洽。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖西土,靈堂內(nèi)的尸體忽然破棺而出讶舰,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布跳昼,位于F島的核電站般甲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鹅颊。R本人自食惡果不足惜敷存,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堪伍。 院中可真熱鬧锚烦,春花似錦、人聲如沸杠娱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)摊求。三九已至禽拔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間室叉,已是汗流浹背睹栖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茧痕,地道東北人野来。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像踪旷,于是被迫代替她去往敵國(guó)和親曼氛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-WebSo...
    敢夢(mèng)敢當(dāng)閱讀 8,911評(píng)論 0 50
  • 什么是WebSocket呢令野? WebSocket是HTML5新增的一種通信協(xié)議舀患,目標(biāo)主流的瀏覽器都支持這個(gè)協(xié)議,比...
    JunChow520閱讀 7,376評(píng)論 1 5
  • WebSocket簡(jiǎn)介 談到Web實(shí)時(shí)推送气破,就不得不說(shuō)WebSocket聊浅。在WebSocket出現(xiàn)之前,很多網(wǎng)站為...
    吧啦啦小湯圓閱讀 8,145評(píng)論 15 75
  • 上篇介紹了HTTP1.1協(xié)議的基本內(nèi)容现使,這篇文章將繼續(xù)分析WebSocket協(xié)議低匙,然后對(duì)這兩個(gè)進(jìn)行簡(jiǎn)單的比較。 W...
    TheAlchemist閱讀 36,523評(píng)論 15 113
  • 最近身邊很多朋友叨嘮一個(gè)新的協(xié)議叫做WebSocket碳锈,乍聽(tīng)起來(lái)顽冶,第一時(shí)間是困擾的,像socket這么底層的技術(shù)(...
    斯科太閱讀 627評(píng)論 0 1