日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

tcp协议中的长连接和短连接服务器,谈谈HTTP协议中的短轮询、长轮询、长连接和短链接...

發(fā)布時(shí)間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tcp协议中的长连接和短连接服务器,谈谈HTTP协议中的短轮询、长轮询、长连接和短链接... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

undefined

在之前總結(jié) WebSocket 的時(shí)候就已經(jīng)提到過(guò)短長(zhǎng)輪詢了~~今天看公眾號(hào)文章,又把長(zhǎng)短連接引進(jìn)來(lái)一起分析。感覺這種總結(jié)很棒,那么我們一起看看唄

長(zhǎng)短連接

聽說(shuō)長(zhǎng)短連接的話,應(yīng)該都是這一句吧:HTTP1.0 協(xié)議不支持連接,從 HTTP1.1 協(xié)議以后,連接默認(rèn)是長(zhǎng)連接。

HTTP 協(xié)議是基于請(qǐng)求/響應(yīng)模式的,因此只要服務(wù)端給了響應(yīng),本次 HTTP 連接就結(jié)束了,或者更準(zhǔn)確的說(shuō),是本次 HTTP 請(qǐng)求就結(jié)束了,根本沒有長(zhǎng)連接這一說(shuō)。那么自然也就沒有短連接這一說(shuō)了。

之所以網(wǎng)絡(luò)上說(shuō) HTTP 分為長(zhǎng)連接和短連接,其實(shí)本質(zhì)上是說(shuō)的 TCP 連接。TCP 連接是一個(gè)雙向的通道,它是可以保持一段時(shí)間不關(guān)閉的,因此 TCP 連接才有真正的長(zhǎng)連接和短連接這一說(shuō)。

其實(shí)知道了以后,會(huì)覺得這很好理解。HTTP 協(xié)議說(shuō)到底是應(yīng)用層的協(xié)議,而 TCP 才是真正的傳輸層協(xié)議,只有負(fù)責(zé)傳輸?shù)倪@一層才需要建立連接。

于是,我們就知道了,長(zhǎng)連接指的是 TCP 連接,不是 HTTP 連接。理解了這一點(diǎn)之后,我們?cè)賮?lái)看,把所有的請(qǐng)求都默認(rèn)為長(zhǎng)連接有什么作用。

因?yàn)殚L(zhǎng)連接意味著連接被復(fù)用,那么這里復(fù)用的是 TCP 通道。于是,一個(gè)網(wǎng)站上的多個(gè) HTTP 請(qǐng)求可以復(fù)用同一個(gè) TCP 連接,這也就是節(jié)省了很多 TCP 連接建立和斷開的消耗。于是,我們就懂了,為啥 HTTP1.1 要默認(rèn)長(zhǎng)連接,因?yàn)槎踢B接幾乎沒有好處啊~

那么第二個(gè)問(wèn)題:怎么設(shè)置長(zhǎng)連接呢?

很簡(jiǎn)單,只要設(shè)置 Connection 為 keep-alive。當(dāng)然是的,但要服務(wù)器和客戶端(HTTP1.1 默認(rèn))都設(shè)置。

另外,最后關(guān)于長(zhǎng)連接還要多提一句,那就是,長(zhǎng)連接并不是永久連接的。如果一段時(shí)間內(nèi)(具體的時(shí)間長(zhǎng)短,是可以在 header 當(dāng)中進(jìn)行設(shè)置的,也就是所謂的超時(shí)時(shí)間),這個(gè)連接沒有 HTTP 請(qǐng)求發(fā)出的話,那么這個(gè)長(zhǎng)連接就會(huì)被斷掉。

這一點(diǎn)其實(shí)很容易理解,否則的話,TCP 連接將會(huì)越來(lái)越多,直到把服務(wù)器的 TCP 連接數(shù)量撐爆到上限為止。現(xiàn)在想想,對(duì)于服務(wù)器來(lái)說(shuō),服務(wù)器里的這些個(gè)長(zhǎng)連接其實(shí)很有數(shù)據(jù)庫(kù)連接池的味道,大家都是為了節(jié)省連接重復(fù)利用嘛,對(duì)不對(duì)?

長(zhǎng)輪詢短輪詢

這里在我學(xué)習(xí) websocket 的時(shí)候已經(jīng)詳細(xì)說(shuō)過(guò)了~~這里稍微再補(bǔ)充一下自己的理解吧。

輪詢:輪-> 循環(huán); 詢: 查詢;

也就是長(zhǎng)短輪詢,就是周期短或者周期長(zhǎng)的循環(huán)查詢服務(wù)器信息。那么周期怎么算呢?客戶端發(fā)起的信息那一刻到服務(wù)器應(yīng)答,就算一個(gè)周期。

于是長(zhǎng)短輪詢就能很快區(qū)別開來(lái)了,長(zhǎng)輪詢,不停地問(wèn)服務(wù)器拿信息,但是服務(wù)器很久才回答你(信息有更新再回答)。短輪詢,不停地問(wèn)服務(wù)器拿信息,服務(wù)器會(huì)馬上告訴你情況。

長(zhǎng)短輪詢和長(zhǎng)短連接的區(qū)別決定的方式;一個(gè) TCP 連接是否為長(zhǎng)連接,通過(guò)設(shè)置 HTTPde Connection Header 來(lái)決定的,而且是要客戶端和服務(wù)器都設(shè)置;輪詢的決定權(quán)是在于服務(wù)器的處理方式,客戶端沒辦法解決

實(shí)現(xiàn)方式,連接的長(zhǎng)短由協(xié)議來(lái)規(guī)定和實(shí)現(xiàn)。而輪詢是依賴編程方式手動(dòng)掛起請(qǐng)求實(shí)現(xiàn)的。

這里是來(lái)自別人的思路分享文章,因?yàn)闆]有別人的思路歷程直接 copy 也是不太好。哪里看不明白,建議直接跳轉(zhuǎn)。

總結(jié)

以上是生活随笔為你收集整理的tcp协议中的长连接和短连接服务器,谈谈HTTP协议中的短轮询、长轮询、长连接和短链接...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。