http的長連接和短連接(TCP連接)

HTTP1.0協(xié)議不支持長連接
從HTTP1.1協(xié)議以后,連接默認(rèn)都是長連接

網(wǎng)絡(luò)上說HTTP分為長連接和短連接,其實(shí)本質(zhì)上是說的TCP連接。TCP連接是一個(gè)雙向的通道襟齿,它是可以保持一段時(shí)間不關(guān)閉的,因此TCP連接才有真正的長連接和短連接這一說枕赵。
HTTP協(xié)議說到底是應(yīng)用層的協(xié)議猜欺,而TCP才是真正的傳輸層協(xié)議,只有負(fù)責(zé)傳輸?shù)倪@一層才需要建立連接拷窜。

這里要強(qiáng)調(diào)一下开皿,HTTP協(xié)議是基于請求/響應(yīng)模式的,因此只要服務(wù)端給了響應(yīng)篮昧,本次HTTP連接就結(jié)束了赋荆,或者更準(zhǔn)確的說,是本次HTTP請求就結(jié)束了懊昨,根本沒有長連接這一說窄潭。那么自然也就沒有短連接這一說了。

只要設(shè)置Connection為keep-alive就算是長連接酵颁?
是的嫉你,但要服務(wù)器和客戶端都設(shè)置。長連接意味著連接會被復(fù)用

我們平時(shí)用的是不是長連接躏惋?
現(xiàn)在用的基本上都是HTTP1.1協(xié)議均抽,你觀察一下就會發(fā)現(xiàn),基本上Connection都是keep-alive其掂。而且HTTP協(xié)議文檔上也提到了油挥,HTTP1.1默認(rèn)是長連接,也就是默認(rèn)Connection的值就是keep-alive

長連接好處是什么款熬?
長連接意味著連接會被復(fù)用
長連接情況下深寥,多個(gè)HTTP請求可以復(fù)用同一個(gè)TCP連接,這就節(jié)省了很多TCP連接建立和斷開的消耗贤牛。

比如你請求了博客園的一個(gè)網(wǎng)頁惋鹅,這個(gè)網(wǎng)頁里肯定還包含了CSS、JS等等一系列資源殉簸,如果你是短連接(也就是每次都要重新建立TCP連接)的話闰集,那你每打開一個(gè)網(wǎng)頁,基本要建立幾個(gè)甚至幾十個(gè)TCP連接般卑,這浪費(fèi)了資源武鲁。
但如果是長連接的話,那么這么多次HTTP請求(這些請求包括請求網(wǎng)頁內(nèi)容蝠检,CSS文件沐鼠,JS文件,圖片等等),其實(shí)使用的都是一個(gè)TCP連接饲梭,很顯然是可以節(jié)省很多消耗的乘盖。

長連接并不是永久連接的。如果一段時(shí)間內(nèi)(具體的時(shí)間長短憔涉,是可以在header當(dāng)中進(jìn)行設(shè)置的订框,也就是所謂的超時(shí)時(shí)間),這個(gè)連接沒有HTTP請求發(fā)出的話兜叨,那么這個(gè)長連接就會被斷掉

長輪詢和短輪詢

短輪詢
比如你現(xiàn)在要做一個(gè)電商中商品詳情的頁面布蔗,這個(gè)詳情界面中有一個(gè)字段是庫存量(相信這個(gè)大家都不陌生,隨便打開淘寶或者京東都能找到這種頁面)浪腐。而這個(gè)庫存量需要實(shí)時(shí)的變化纵揍,保持和服務(wù)器里實(shí)際的庫存一致。
這個(gè)時(shí)候议街,你會怎么做泽谨?
最簡單的一種方式,就是你用JS寫個(gè)死循環(huán)特漩,不停的去請求服務(wù)器中的庫存量是多少吧雹,然后刷新到這個(gè)頁面當(dāng)中,這其實(shí)就是所謂的短輪詢涂身。
這種方式有明顯的壞處雄卷,那就是你很浪費(fèi)服務(wù)器和客戶端的資源「蚴郏客戶端還好點(diǎn)丁鹉,現(xiàn)在PC機(jī)配置高了,你不停的請求還不至于把用戶的電腦整死悴能,但是服務(wù)器就很蛋疼了揣钦。如果有1000個(gè)人停留在某個(gè)商品詳情頁面,那就是說會有1000個(gè)客戶端不停的去請求服務(wù)器獲取庫存量漠酿,這顯然是不合理的冯凹。
長輪詢就出現(xiàn)了
長輪詢這個(gè)時(shí)候就出現(xiàn)了,其實(shí)長輪詢和短輪詢最大的區(qū)別是炒嘲,短輪詢?nèi)シ?wù)端查詢的時(shí)候宇姚,不管庫存量有沒有變化,服務(wù)器就立即返回結(jié)果了夫凸。而長輪詢則不是浑劳,在長輪詢中,服務(wù)器如果檢測到庫存量沒有變化的話寸痢,將會把當(dāng)前請求掛起一段時(shí)間(這個(gè)時(shí)間也叫作超時(shí)時(shí)間呀洲,一般是幾十秒)紊选。在這個(gè)時(shí)間里啼止,服務(wù)器會去檢測庫存量有沒有變化道逗,檢測到變化就立即返回,否則就一直等到超時(shí)為止献烦。
這樣一來滓窍,客戶端的請求次數(shù)將會大量減少(這也就意味著節(jié)省了網(wǎng)絡(luò)流量,畢竟每次發(fā)請求巩那,都會占用客戶端的上傳流量和服務(wù)端的下載流量)吏夯,而且也解決了服務(wù)端一直疲于接受請求的窘境。
但是長輪詢也是有壞處的即横,因?yàn)榘颜埱髵炱鹜瑯訒?dǎo)致資源的浪費(fèi)噪生,假設(shè)還是1000個(gè)人停留在某個(gè)商品詳情頁面,那就很有可能服務(wù)器這邊掛著1000個(gè)線程东囚,在不停檢測庫存量跺嗽,這依然是有問題的。
因此页藻,從這里可以看出桨嫁,不管是長輪詢還是短輪詢,都不太適用于客戶端數(shù)量太多的情況份帐,因?yàn)槊總€(gè)服務(wù)器所能承載的TCP連接數(shù)是有上限的璃吧,這種輪詢很容易把連接數(shù)頂滿。之所以舉這個(gè)例子废境,只是因?yàn)榇蠹铱隙ǘ紩W(wǎng)購畜挨,所以這個(gè)例子比較通俗一點(diǎn)。
哪怕輪詢解決不了獲取庫存這個(gè)問題噩凹,但只要大家明白了長短輪詢的區(qū)別朦促,這就足夠了。實(shí)際上栓始,據(jù)LZ自己平日里購物的觀察务冕,那個(gè)庫存量應(yīng)該是不會變的,這個(gè)例子純屬LZ個(gè)人的意淫幻赚,-_-禀忆。

長短輪詢和長短連接的區(qū)別

第一個(gè)區(qū)別是決定的方式,一個(gè)TCP連接是否為長連接落恼,是通過設(shè)置HTTP的Connection Header來決定的箩退,而且是需要兩邊都設(shè)置才有效。而一種輪詢方式是否為長輪詢佳谦,是根據(jù)服務(wù)端的處理方式來決定的戴涝,與客戶端沒有關(guān)系。
第二個(gè)區(qū)別就是實(shí)現(xiàn)的方式,連接的長短是通過協(xié)議來規(guī)定和實(shí)現(xiàn)的啥刻。而輪詢的長短奸鸯,是服務(wù)器通過編程的方式手動掛起請求來實(shí)現(xiàn)的.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市可帽,隨后出現(xiàn)的幾起案子娄涩,更是在濱河造成了極大的恐慌,老刑警劉巖映跟,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓄拣,死亡現(xiàn)場離奇詭異,居然都是意外死亡努隙,警方通過查閱死者的電腦和手機(jī)球恤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荸镊,“玉大人碎捺,你說我怎么就攤上這事〈蓿” “怎么了收厨?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長优构。 經(jīng)常有香客問我诵叁,道長,這世上最難降的妖魔是什么钦椭? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任拧额,我火速辦了婚禮,結(jié)果婚禮上彪腔,老公的妹妹穿的比我還像新娘侥锦。我一直安慰自己,他們只是感情好德挣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布恭垦。 她就那樣靜靜地躺著,像睡著了一般格嗅。 火紅的嫁衣襯著肌膚如雪番挺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天屯掖,我揣著相機(jī)與錄音玄柏,去河邊找鬼。 笑死贴铜,一個(gè)胖子當(dāng)著我的面吹牛粪摘,可吹牛的內(nèi)容都是我干的瀑晒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼徘意,長吁一口氣:“原來是場噩夢啊……” “哼苔悦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起映砖,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤间坐,失蹤者是張志新(化名)和其女友劉穎灾挨,沒想到半個(gè)月后邑退,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡劳澄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年地技,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秒拔。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莫矗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砂缩,到底是詐尸還是另有隱情作谚,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布庵芭,位于F島的核電站妹懒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏双吆。R本人自食惡果不足惜眨唬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望好乐。 院中可真熱鬧匾竿,春花似錦、人聲如沸蔚万。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽反璃。三九已至区转,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間版扩,已是汗流浹背废离。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留礁芦,地道東北人蜻韭。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓悼尾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肖方。 傳聞我的和親對象是個(gè)殘疾皇子闺魏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

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

  • 1.以前的誤解 很久之前就聽說過長連接的說法析桥,而且還知道HTTP1.0協(xié)議不支持長連接,從HTTP1.1協(xié)議以后艰垂,...
    熊師傅閱讀 123,977評論 78 318
  • *轉(zhuǎn)載猜憎,本人學(xué)習(xí)用娩怎,侵刪 1.以前的誤解 很久之前就聽說過長連接的說法,而且還知道HTTP1.0協(xié)議不支持長連接胰柑,...
    siriuseasy閱讀 973評論 0 51
  • 1截亦、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)柬讨、lso...
    北辰青閱讀 9,423評論 0 11
  • 曾經(jīng)是長發(fā)及腰 曾經(jīng)是長發(fā)及腰 如柳窈窕 也曾經(jīng)蛾眉如黛 心意飄渺 以偶這媚眼如絲 沒遇著癡人兒一個(gè) 只教這婉轉(zhuǎn)柔...
    菩提花事閱讀 1,014評論 7 6
  • 領(lǐng)導(dǎo)力的兩大要素崩瓤,一是形象,二是距離踩官,通過講故事讓大家發(fā)現(xiàn)其中的道理却桶,可以同時(shí)打動情感和理智 通常和員工都是講道理...
    雨過天晴1閱讀 778評論 0 0