直播app開(kāi)發(fā),害怕?lián)砣刂朴蛛x不開(kāi)擁塞控制
對(duì)直播app開(kāi)發(fā)來(lái)說(shuō),擁塞控制是面對(duì)的難點(diǎn)之一,隨著用戶(hù)們對(duì)實(shí)時(shí)性的要求越來(lái)越高,自然直播平臺(tái)對(duì)網(wǎng)絡(luò)質(zhì)量和實(shí)時(shí)性的依賴(lài)性也就更強(qiáng),然而就在這種實(shí)時(shí)性要求下,直播app開(kāi)發(fā)仍然使用著擁有擁塞控制的TCP協(xié)議,這是為什么呢?
?

一、TCP擁塞控制
與UDP協(xié)議不同。TCP協(xié)議可以說(shuō)是自帶擁塞控制,需要保障數(shù)據(jù)可靠傳輸,這主要是因?yàn)門(mén)CP協(xié)議具備重傳機(jī)制,當(dāng)直播app開(kāi)發(fā)數(shù)據(jù)傳輸出錯(cuò)時(shí),重傳數(shù)據(jù)會(huì)延長(zhǎng)數(shù)據(jù)到達(dá)的時(shí)間,同時(shí)因?yàn)楦哳l率的重傳,導(dǎo)致網(wǎng)絡(luò)的擁塞得不到緩解,而且會(huì)導(dǎo)致?lián)砣絹?lái)越嚴(yán)重。
但為什么說(shuō)直播app開(kāi)發(fā)又離不開(kāi)這個(gè)擁塞控制呢?TCP擁塞控制是讓每個(gè)源口都能確定網(wǎng)絡(luò)中有多少可用容量,這樣能確定它可以接受多少數(shù)據(jù),防止鏈路的過(guò)載??梢钥闯鍪菭奚司W(wǎng)絡(luò)來(lái)保證鏈路的正常傳輸,畢竟網(wǎng)絡(luò)是可變的,鏈路只有固定的幾條,如果協(xié)調(diào)不好會(huì)出現(xiàn)更多的錯(cuò)誤。
?

二、TCP擁塞控制算法
一般擁塞控制有兩種實(shí)現(xiàn)方式:
1、端到端的擁塞控制,這種方式下,需要端口自己判斷是否傳輸鏈路存在擁塞,然后自行調(diào)整速率
2、網(wǎng)絡(luò)輔助的擁塞控制,由網(wǎng)絡(luò)中的路由器來(lái)告訴發(fā)送方傳輸中是否存在用三個(gè)
基于復(fù)雜程度,直播app開(kāi)發(fā)會(huì)用端到端的擁塞控制,因?yàn)楹笳咝枰W(wǎng)絡(luò)設(shè)備的支持,所以平臺(tái)投入比較多
?

三、TCP擁塞控制的幾種不同實(shí)現(xiàn)形式
1、基于丟包的擁塞控制,將直播app開(kāi)發(fā)的丟包現(xiàn)象視為出現(xiàn)擁塞,采取緩慢探測(cè)的方式,逐漸增大擁塞的窗口,當(dāng)出現(xiàn)丟包時(shí),將擁塞的窗口減少
2、基于延遲的控制,這種方法不是很推薦直播app開(kāi)發(fā)使用,因?yàn)檠舆t狀況出現(xiàn)頻率比較高,延遲增長(zhǎng)會(huì)增大擁塞窗口,延遲減少時(shí)會(huì)減少擁塞窗口
3、基于鏈路容量的控制,實(shí)時(shí)測(cè)量網(wǎng)絡(luò)帶寬和時(shí)延,不過(guò)效果如何就不好說(shuō)了,要基于直播app開(kāi)發(fā)自用的網(wǎng)絡(luò)來(lái)判斷
4、基于學(xué)習(xí)的控制,沒(méi)有特定的擁塞信號(hào),實(shí)現(xiàn)比較復(fù)雜
對(duì)于直播app開(kāi)發(fā)來(lái)說(shuō),擁塞控制是無(wú)法避免的,倒不如選一個(gè)能自由控制,有自己方案的協(xié)議要好。
聲明:以上內(nèi)容為云豹科技作者本人原創(chuàng),未經(jīng)作者本人同意,禁止轉(zhuǎn)載,否則將追究相關(guān)法律責(zé)任