偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺談KCP協(xié)議

移動(dòng)開(kāi)發(fā)
KCP是一種基于UDP的快速可靠協(xié)議,能以比TCP浪費(fèi)10%-20%的帶寬的代價(jià),換取平均延遲降低30%-40%,且最大延遲可以降低70%的傳輸效果,是一種純算法的二進(jìn)制協(xié)議。

Part 01

什么是KCP協(xié)議 

KCP是一個(gè)開(kāi)源的快速可靠ARQ協(xié)議,能以比TCP浪費(fèi)10%-20%的帶寬的代價(jià),換取平均延遲降低30%-40%,且最大延遲降低三倍的傳輸效果。KCP是一層純算法實(shí)現(xiàn),并不負(fù)責(zé)底層協(xié)議(如UDP)的收發(fā),用戶自己定義下層數(shù)據(jù)包的發(fā)送方式,以callback的方式提供給KCP。內(nèi)部不會(huì)有任何一次系統(tǒng)調(diào)用,包括時(shí)鐘也需要外部傳遞進(jìn)來(lái)。

KCP整個(gè)協(xié)議只有ikcp.h、ikcp.c兩個(gè)源文件,可以方便用戶根據(jù)自己的需要集成到用戶自己的協(xié)議棧中。

所以可以把KCP協(xié)議看做應(yīng)用層協(xié)議,底層采用UDP協(xié)議。但是在嚴(yán)格意義上講KCP并不是一種網(wǎng)絡(luò)傳輸協(xié)議,它是為UDP寫(xiě)的可靠傳輸算法,它是把TCP的主要可靠傳輸機(jī)制移植到了UDP身上,讓UDP變的可靠了起來(lái)。

Part 02

KCP的協(xié)議特性  

TCP是為流量(每秒內(nèi)可以傳輸多少KB的數(shù)據(jù))設(shè)計(jì)的,講究的是充分利用帶寬。而KCP是為流速(單個(gè)數(shù)據(jù)包從一端發(fā)送到一端需要多少時(shí)間)設(shè)計(jì)的,以10%-20%帶寬浪費(fèi)的代價(jià)換取了比TCP快30%-40%的傳輸速度。如果將TCP信道比喻為一條流速很慢,但每秒流量很大的大運(yùn)河,那么KCP就是水流湍急的小激流。KCP有正常模式和快速模式兩種,通過(guò)以下策略達(dá)到提高流速的結(jié)果。

1、RTO不翻倍

RTO(Retransmission TimeOut)重傳超時(shí)時(shí)間,TCP超時(shí)計(jì)算是RTOx2,這樣連續(xù)丟三次包就變成RTO×8了,而KCP啟動(dòng)快速模式后不x2,只是x1.5,提高了傳輸速度。

2、選擇重傳

TCP丟包時(shí)會(huì)全部重傳從丟包開(kāi)始以后的數(shù)據(jù),而KCP是選擇性重傳,只重傳真正丟失的數(shù)據(jù)包。

3、快速重傳

TCP重傳模式超時(shí)重傳:超過(guò)規(guī)定的時(shí)間RTO則重傳。

快速重傳:收到3個(gè)冗余ACK,不去等待RTO,直接重傳。比如發(fā)送端發(fā)送了1、2、3、4、5...幾個(gè)包后,然后收到遠(yuǎn)端的ACK:1、3、4,當(dāng)收到ACK3時(shí),KCP知道2被跳過(guò)1次,收到ACK4時(shí),知道2被跳過(guò)2次,收到Ack5時(shí),此時(shí)可以認(rèn)為2已丟失,不用等待RTO,直接進(jìn)行重傳2,大大改善了丟包時(shí)的傳輸速度。

4、延遲ACK vs 非延遲ACK

TCP在連續(xù)ARQ協(xié)議中,不會(huì)將一連串的每個(gè)數(shù)據(jù)都響應(yīng)一次,而是延遲發(fā)送ACK,目的是為充分利用帶寬,這樣延遲發(fā)送ACK導(dǎo)致RTT時(shí)間較大,延長(zhǎng)了丟包時(shí)的判斷過(guò)程;而KCP的ACK是否延遲發(fā)送可以調(diào)節(jié)

5、UNA vs ACK+UNA

ARQ模型響應(yīng)有兩種,UNA(此編號(hào)前所有包已收到,如TCP)和ACK(該編號(hào)包已收到),光用UNA將導(dǎo)致全部重傳,光用ACK則丟失成本太高,以往協(xié)議都是二選其一,TCP使用UNA模式,有丟包全部重傳問(wèn)題;KCP有單獨(dú)ACK,且數(shù)據(jù)包和ACK包都帶UNA信息,有效降低ACK丟失成本。

6、非退讓流控

KCP正常模式同TCP一樣使用公平退讓法則,即發(fā)送窗口大小由發(fā)送緩存大小、接收端剩余接收緩存大小、丟包退讓及慢啟動(dòng)這四要素決定。但傳送及時(shí)性要求很高的小數(shù)據(jù)時(shí),可選擇通過(guò)配置跳過(guò)后兩步,僅用前兩項(xiàng)來(lái)控制發(fā)送頻率。以犧牲部分公平性及帶寬利用率為代價(jià),換取流暢傳輸?shù)男Ч?/span>

Part 03

KCP應(yīng)用案例 

?KCP協(xié)議的商業(yè)案例:

  • 明日帝國(guó):Game K17的《明日帝國(guó)》(Google Play),使用KCP加速游戲消息,讓全球玩家流暢聯(lián)網(wǎng)。
  • 仙靈大作戰(zhàn):4399的MOBA游戲,使用KCP優(yōu)化游戲同步。
  • CC:網(wǎng)易CC使用kcp加速視頻推流,有效提高流暢性。
  • BOBO:網(wǎng)易BOBO使用kcp加速主播推流。
  • 云帆加速:使用KCP加速文件傳輸和視頻推流,優(yōu)化了臺(tái)灣主播推流的流暢度。
  • SpatialOS:大型多人分布式游戲服務(wù)端引擎,BigWorld的后繼者,使用KCP加速數(shù)據(jù)傳輸。

KCP的優(yōu)勢(shì)在丟包率高的網(wǎng)絡(luò)環(huán)境下才會(huì)顯示出來(lái)。如果無(wú)丟包,TCP和KCP的效率差別打不,可能只是少了建立/關(guān)閉連接。一般來(lái)講,在公網(wǎng)上傳輸?shù)膽?yīng)用均可使用,特別是對(duì)實(shí)時(shí)性要求較高的程序,如客戶端與服務(wù)端交互很頻繁的游戲。

責(zé)任編輯:龐桂玉 來(lái)源: 移動(dòng)Labs
相關(guān)推薦

2010-09-10 14:15:19

daytime協(xié)議時(shí)間協(xié)議

2010-09-17 14:49:18

Ethereal網(wǎng)絡(luò)協(xié)

2010-09-08 15:06:26

藍(lán)牙協(xié)議棧

2010-07-12 17:13:12

SNMP協(xié)議管理

2010-07-01 16:33:08

UDP協(xié)議

2010-07-09 10:28:48

距離向量路由協(xié)議

2023-12-29 20:25:51

2010-07-07 17:56:21

2014-09-03 09:52:45

開(kāi)源

2010-06-12 17:28:35

協(xié)議封裝

2010-09-09 15:25:35

網(wǎng)絡(luò)協(xié)議

2010-09-17 15:12:28

2010-06-10 14:10:58

安全電子郵件協(xié)議

2011-08-03 15:51:48

Objective-C 協(xié)議 委托

2010-07-12 16:27:23

鏈路狀態(tài)路由選擇協(xié)議

2010-06-28 09:50:42

AMF協(xié)議

2019-04-03 10:28:04

2010-07-08 13:09:49

路由信息協(xié)議

2019-12-05 10:54:34

集群RedisGossip

2010-06-25 15:22:16

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)