HTTP長(zhǎng)連接與短連接暴构,WebSocket協(xié)議,Socket

一赤拒、HTTP長(zhǎng)連接與短連接

1. HTTP協(xié)議與TCP/IP協(xié)議的關(guān)系

HTTP的長(zhǎng)連接和短連接本質(zhì)上是TCP長(zhǎng)連接和短連接架曹。HTTP屬于應(yīng)用層協(xié)議,在傳輸層使用TCP協(xié)議抵赢,在網(wǎng)絡(luò)層使用IP協(xié)議欺劳。IP協(xié)議主要解決網(wǎng)絡(luò)路由和尋址問(wèn)題,TCP協(xié)議主要解決如何在IP層之上可靠的傳遞數(shù)據(jù)包铅鲤,使在網(wǎng)絡(luò)上的另一端收到發(fā)端發(fā)出的所有包划提,并且順序與發(fā)出順序一致。TCP有可靠邢享,面向連接的特點(diǎn)鹏往。TCP三次握手連接,四次握手關(guān)閉骇塘。

2. 如何理解HTTP協(xié)議是無(wú)狀態(tài)的

HTTP協(xié)議是無(wú)狀態(tài)的伊履,指的是協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力,服務(wù)器不知道客戶端是什么狀態(tài)款违。也就是說(shuō)唐瀑,打開一個(gè)服務(wù)器上的網(wǎng)頁(yè)和你之前打開這個(gè)服務(wù)器上的網(wǎng)頁(yè)之間沒(méi)有任何聯(lián)系。HTTP是一個(gè)無(wú)狀態(tài)的面向連接的協(xié)議插爹,無(wú)狀態(tài)不代表HTTP不能保持TCP連接哄辣,更不能代表HTTP使用的是UDP協(xié)議(無(wú)連接)

3.什么是長(zhǎng)連接赠尾、短連接力穗?

在HTTP/1.0中,默認(rèn)使用的是短連接气嫁。也就是說(shuō)睛廊,瀏覽器和服務(wù)器每進(jìn)行一次HTTP操作,就建立一次連接杉编,但任務(wù)結(jié)束就中斷連接超全。如果客戶端瀏覽器訪問(wèn)的某個(gè)HTML或其他類型的 Web頁(yè)中包含有其他的Web資源,如JavaScript文件邓馒、圖像文件嘶朱、CSS文件等;當(dāng)瀏覽器每遇到這樣一個(gè)Web資源光酣,就會(huì)建立一個(gè)HTTP會(huì)話疏遏。

但從HTTP/1.1起,默認(rèn)使用長(zhǎng)連接,用以保持連接特性财异。使用長(zhǎng)連接的HTTP協(xié)議倘零,會(huì)在響應(yīng)頭有加入這行代碼:

Connection:keep-alive

在使用長(zhǎng)連接的情況下,當(dāng)一個(gè)網(wǎng)頁(yè)打開完成后戳寸,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的 TCP連接不會(huì)關(guān)閉呈驶,如果客戶端再次訪問(wèn)這個(gè)服務(wù)器上的網(wǎng)頁(yè),會(huì)繼續(xù)使用這一條已經(jīng)建立的連接疫鹊。Keep-Alive不會(huì)永久保持連接袖瞻,它有一個(gè)保持時(shí)間,可以在不同的服務(wù)器軟件(如Apache)中設(shè)定這個(gè)時(shí)間拆吆。實(shí)現(xiàn)長(zhǎng)連接要客戶端和服務(wù)端都支持長(zhǎng)連接聋迎。

HTTP協(xié)議的長(zhǎng)連接和短連接,實(shí)質(zhì)上是TCP協(xié)議的長(zhǎng)連接和短連接枣耀。

4. 什么時(shí)候用長(zhǎng)連接霉晕,短連接?

長(zhǎng)連接多用于操作頻繁捞奕,點(diǎn)對(duì)點(diǎn)的通訊娄昆,而且連接數(shù)不能太多情況,缝彬。每個(gè)TCP連接都需要三步握手,這需要時(shí)間哺眯,如果每個(gè)操作都是先連接谷浅,再操作的話那么處理速度會(huì)降低很多,所以每個(gè)操作完后都不斷開奶卓,次處理時(shí)直接發(fā)送數(shù)據(jù)包就OK了一疯,不用建立TCP連接。例如:數(shù)據(jù)庫(kù)的連接用長(zhǎng)連接夺姑, 如果用短連接頻繁的通信會(huì)造成socket錯(cuò)誤墩邀,而且頻繁的socket 創(chuàng)建也是對(duì)資源的浪費(fèi)。

而像WEB網(wǎng)站的http服務(wù)一般都用短鏈接盏浙,因?yàn)殚L(zhǎng)連接對(duì)于服務(wù)端來(lái)說(shuō)會(huì)耗費(fèi)一定的資源眉睹,而像WEB網(wǎng)站這么頻繁的成千上萬(wàn)甚至上億客戶端的連接用短連接會(huì)更省一些資源,如果用長(zhǎng)連接废膘,而且同時(shí)有成千上萬(wàn)的用戶竹海,如果每個(gè)用戶都占用一個(gè)連接的話,那可想而知吧丐黄。所以并發(fā)量大斋配,但每個(gè)用戶無(wú)需頻繁操作情況下需用短連好。

二、WebSocket和HTTP協(xié)議的區(qū)別

HTTP:

1艰争,無(wú)狀態(tài)協(xié)議坏瞄。

2,短連接甩卓。(Ajax輪詢方式或Long? poll方式實(shí)現(xiàn)“持久連接”狀態(tài))

3鸠匀,被動(dòng)型。? 客戶端請(qǐng)求->服務(wù)器端響應(yīng)猛频。服務(wù)端不能主動(dòng)聯(lián)系客戶端狮崩,只能有客戶端發(fā)起

WebSocket:

它解決了HTTP的這幾個(gè)難題鹿寻。

如被動(dòng)性睦柴,當(dāng)服務(wù)器完成協(xié)議升級(jí)后(HTTP->Websocket),服務(wù)端就可以主動(dòng)推送信息給客戶端啦毡熏。

1.WebSocket與HTTP的關(guān)系

相同點(diǎn):

都是一樣基于TCP的坦敌,都是可靠性傳輸協(xié)議。

都是應(yīng)用層協(xié)議痢法。

不同點(diǎn):

WebSocket是雙向通信協(xié)議狱窘,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息财搁。HTTP是單向的蘸炸。

WebSocket是需要握手進(jìn)行建立連接的

聯(lián)系:

WebSocket在建立握手時(shí)尖奔,數(shù)據(jù)是通過(guò)HTTP傳輸?shù)?/b>搭儒。但是建立之后,在真正傳輸時(shí)候是不需要HTTP協(xié)議的提茁。

2.WebSocket與Socket的關(guān)系

WebSocket是雙向通信協(xié)議淹禾,模擬Socket協(xié)議可以雙向發(fā)送或接受信息茴扁,HTTP是單向的铃岔。(即Socket協(xié)議是雙向的)

Socket其實(shí)并不是一個(gè)協(xié)議,而是為了方便使用TCP或UDP而抽象出來(lái)的一層峭火,是位于應(yīng)用層和傳輸控制層之間的一組接口毁习。

Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口卖丸。在設(shè)計(jì)模式中蜓洪,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面坯苹,對(duì)用戶來(lái)說(shuō)隆檀,一組簡(jiǎn)單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議恐仑。當(dāng)兩臺(tái)主機(jī)通信時(shí)泉坐,必須通過(guò)Socket連接,Socket則利用TCP/IP協(xié)議建立TCP連接裳仆。

TCP連接則更依靠于底層的IP協(xié)議腕让,IP協(xié)議的連接則依賴于鏈路層等更低層次。WebSocket則是一個(gè)典型的應(yīng)用層協(xié)議歧斟。Socket是傳輸控制層協(xié)議纯丸,WebSocket是應(yīng)用層協(xié)議

三静袖、其他

Swoole 使 PHP 開發(fā)人員可以編寫高性能高并發(fā)的 TCP觉鼻、UDP、Unix Socket队橙、HTTP坠陈、 WebSocket 等服務(wù),讓 PHP 不再局限于 Web 領(lǐng)域捐康。

HTTP/2 協(xié)議-服務(wù)端主動(dòng)推送消息(推送資源JS仇矾、CSS)。

基于HTTP協(xié)議之WEB消息實(shí)時(shí)推送技術(shù)原理及實(shí)現(xiàn)(借助http長(zhǎng)連接 + socket server)解总。

一個(gè) TCP 連接可以發(fā)多少個(gè) HTTP 請(qǐng)求贮匕?

websocket原理

WS服務(wù)端遍歷群發(fā)

WS遍歷后只對(duì)同房間名廣播(也是遍歷找出當(dāng)前房間名的url連接,然后進(jìn)行廣播)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載花枫,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者刻盐。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乌昔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌壤追,老刑警劉巖磕道,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異行冰,居然都是意外死亡溺蕉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門悼做,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)疯特,“玉大人,你說(shuō)我怎么就攤上這事肛走±煅牛” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)邻吞。 經(jīng)常有香客問(wèn)我组题,道長(zhǎng),這世上最難降的妖魔是什么抱冷? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任崔列,我火速辦了婚禮,結(jié)果婚禮上旺遮,老公的妹妹穿的比我還像新娘赵讯。我一直安慰自己,他們只是感情好耿眉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布边翼。 她就那樣靜靜地躺著,像睡著了一般跷敬。 火紅的嫁衣襯著肌膚如雪讯私。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天西傀,我揣著相機(jī)與錄音斤寇,去河邊找鬼。 笑死拥褂,一個(gè)胖子當(dāng)著我的面吹牛娘锁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饺鹃,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼莫秆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了悔详?” 一聲冷哼從身側(cè)響起镊屎,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茄螃,沒(méi)想到半個(gè)月后缝驳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡归苍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年用狱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拼弃。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夏伊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吻氧,到底是詐尸還是另有隱情溺忧,我是刑警寧澤咏连,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站砸狞,受9級(jí)特大地震影響捻勉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刀森,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一踱启、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧研底,春花似錦埠偿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至乾胶,卻和暖如春抖剿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背识窿。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工斩郎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喻频。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓缩宜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親甥温。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锻煌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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