91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

KCP協(xié)議應(yīng)用詳解:為速度而生的可靠傳輸協(xié)議

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2025-09-02 14:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、概述

在當(dāng)今互聯(lián)網(wǎng)應(yīng)用中,實(shí)時(shí)性和流暢性至關(guān)重要,尤其是在網(wǎng)絡(luò)游戲、視頻會(huì)議和在線直播等場景中。傳統(tǒng)的TCP協(xié)議雖然提供可靠的數(shù)據(jù)傳輸,但其復(fù)雜的擁塞控制機(jī)制和重傳策略會(huì)導(dǎo)致較高的延遲,難以滿足實(shí)時(shí)應(yīng)用的需求。而UDP協(xié)議雖然速度快,但缺乏可靠性,數(shù)據(jù)包丟失和亂序問題會(huì)影響應(yīng)用體驗(yàn)。

?

二、為什么需要引入KCP

在介紹KCP前,我們先回顧下TCP和UDP的特性

TCP主要保障鏈接可靠性,但是對傳送效率不做保證。

UDP 傳送效率最大,但是對傳輸可靠性無法保證。

wKgZO2i2iBCAXxInAAhr6AvHaXw943.png

那么怎么才能做到既要保證可靠性又保證傳輸效率呢

三、KCP簡介

這個(gè)時(shí)候KCP協(xié)議應(yīng)運(yùn)而生,它旨在彌補(bǔ)TCP和UDP的不足,在保證可靠性的前提下,提供更低的延遲和更高的傳輸效率。

KCP協(xié)議簡介

KCP(KCP Protocol)是一種基于UDP的可靠傳輸協(xié)議,由國內(nèi)開發(fā)者skywind3000于2014年開源。它借鑒了TCP協(xié)議的可靠傳輸機(jī)制,例如確認(rèn)應(yīng)答、超時(shí)重傳、流量控制等,但對其進(jìn)行了精簡和優(yōu)化,使其更適合實(shí)時(shí)應(yīng)用場景。

KCP協(xié)議的特點(diǎn)

?低延遲: KCP協(xié)議采用更激進(jìn)的重傳策略,減少數(shù)據(jù)包重傳的等待時(shí)間,從而降低延遲。

?高吞吐量: KCP協(xié)議可以根據(jù)網(wǎng)絡(luò)狀況動(dòng)態(tài)調(diào)整發(fā)送速率,充分利用網(wǎng)絡(luò)帶寬,提高傳輸效率。

?可靠性: KCP協(xié)議提供可靠的傳輸機(jī)制,確保數(shù)據(jù)包按序到達(dá),并支持選擇性重傳,只重傳丟失的數(shù)據(jù)包。

?靈活性: KCP協(xié)議提供豐富的配置選項(xiàng),可以根據(jù)應(yīng)用場景調(diào)整參數(shù),例如延遲、吞吐量和可靠性之間的權(quán)衡。

KCP協(xié)議的工作原理

KCP協(xié)議在UDP的基礎(chǔ)上實(shí)現(xiàn)了類似TCP的可靠傳輸機(jī)制,主要包括以下幾個(gè)方面:

1.確認(rèn)應(yīng)答(ACK): 接收方收到數(shù)據(jù)包后,會(huì)發(fā)送ACK確認(rèn)包給發(fā)送方,告知已成功接收。

2.超時(shí)重傳: 發(fā)送方發(fā)送數(shù)據(jù)包后,會(huì)啟動(dòng)定時(shí)器,如果在規(guī)定時(shí)間內(nèi)沒有收到ACK確認(rèn)包,則會(huì)重傳該數(shù)據(jù)包。

3.流量控制: KCP協(xié)議使用滑動(dòng)窗口機(jī)制進(jìn)行流量控制,防止發(fā)送方發(fā)送過多數(shù)據(jù)導(dǎo)致接收方緩沖區(qū)溢出。

4.擁塞控制: KCP協(xié)議采用簡單的擁塞控制算法,根據(jù)網(wǎng)絡(luò)狀況調(diào)整發(fā)送速率,避免網(wǎng)絡(luò)擁塞。

KCP協(xié)議的應(yīng)用場景

KCP協(xié)議憑借其低延遲、高吞吐量和可靠性的特點(diǎn),廣泛應(yīng)用于各種實(shí)時(shí)性要求較高的場景,例如:

?移動(dòng)場景: KCP協(xié)議可以降低移動(dòng)場景延遲,提高移動(dòng)應(yīng)用流暢度,為玩家提供更好的移動(dòng)場景體驗(yàn)。(王者榮耀,機(jī)器人實(shí)時(shí)控制)

?視頻會(huì)議: KCP協(xié)議可以減少視頻卡頓和延遲,保證視頻會(huì)議的流暢進(jìn)行。

?在線直播: KCP協(xié)議可以降低直播延遲,提高直播的實(shí)時(shí)性和互動(dòng)性。

?物聯(lián)網(wǎng): KCP協(xié)議可以應(yīng)用于物聯(lián)網(wǎng)設(shè)備之間的數(shù)據(jù)傳輸,提高數(shù)據(jù)傳輸?shù)男屎涂煽啃浴?/p>

??

KCP協(xié)議的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

?低延遲

?高吞吐量

?可靠性高

?靈活可配置

缺點(diǎn):

?實(shí)現(xiàn)復(fù)雜度高于UDP

?需要額外的帶寬開銷

?對網(wǎng)絡(luò)抖動(dòng)敏感

??

四、如何使用

https://github.com/xtaci/kcptun

// 初始化 kcp對象,conv為一個(gè)表示會(huì)話編號的整數(shù),和tcp的 conv一樣,通信雙
// 方需保證 conv相同,相互的數(shù)據(jù)包才能夠被認(rèn)可,user是一個(gè)給回調(diào)函數(shù)的指針
ikcpcb *kcp = ikcp_create(conv, user);
   // KCP的下層協(xié)議輸出函數(shù),KCP需要發(fā)送數(shù)據(jù)時(shí)會(huì)調(diào)用它
// buf/len 表示緩存和長度
// user指針為 kcp對象創(chuàng)建時(shí)傳入的值,用于區(qū)別多個(gè) KCP對象
int udp_output(const char *buf, int len, ikcpcb *kcp, void *user)
{
  ....
}
// 設(shè)置回調(diào)函數(shù)
kcp->output = udp_output;
// 以一定頻率調(diào)用 ikcp_update來更新 kcp狀態(tài),并且傳入當(dāng)前時(shí)鐘(毫秒單位)
// 如 10ms調(diào)用一次,或用 ikcp_check確定下次調(diào)用 update的時(shí)間不必每次調(diào)用
ikcp_update(kcp, millisec);
// 收到一個(gè)下層數(shù)據(jù)包(比如UDP包)時(shí)需要調(diào)用:
ikcp_input(kcp, received_udp_packet, received_udp_size);

五、總結(jié)

針對移動(dòng)場景下,特別是到服務(wù)器的延遲無法穩(wěn)定在2ms內(nèi),消息收發(fā)RTT無法一直穩(wěn)定在3ms的情況下。

均可以引入KCP替換TCP,實(shí)現(xiàn)1RTT消息收發(fā)??s短用戶測app的響應(yīng)時(shí)間

目前已經(jīng)引入KCP優(yōu)化用戶體驗(yàn)的商業(yè)如下

?原神:米哈游的《原神》使用 KCP 降低游戲消息的傳輸耗時(shí),提升操作的體驗(yàn)。

?SpatialOS: 大型多人分布式游戲服務(wù)端引擎,BigWorld 的后繼者,使用 KCP 加速數(shù)據(jù)傳輸。

?西山居:使用 KCP 進(jìn)行游戲數(shù)據(jù)加速。

?CC:網(wǎng)易 CC 使用 kcp 加速視頻推流,有效提高流暢性

?BOBO:網(wǎng)易 BOBO 使用 kcp 加速主播推流

?UU:網(wǎng)易 UU 加速器使用 KCP/KCPTUN 經(jīng)行遠(yuǎn)程傳輸加速。

?阿里云:阿里云的視頻傳輸加速服務(wù) GRTN 使用 KCP 進(jìn)行音視頻數(shù)據(jù)傳輸優(yōu)化,動(dòng)態(tài)加速產(chǎn)品也使用 KCP。

通過犧牲單次傳輸3~8%的額外帶寬換取延遲穩(wěn)定性,優(yōu)化消息丟包。

介于篇幅限制,將會(huì)在下篇內(nèi)容中。通過循環(huán)發(fā)送500條消息隊(duì)列的情況下。分別測試tcp,kcp在不同網(wǎng)絡(luò)狀況下的性能表現(xiàn)。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳輸協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    11964
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    工業(yè)級4G路由器:TCP/IP與UDP協(xié)議,解鎖工業(yè)物聯(lián)網(wǎng)高效傳輸新范式

    /以太網(wǎng)能力,正重新定義工業(yè)數(shù)據(jù)傳輸的邊界。其核心優(yōu)勢,在于對TCP/IP與UDP協(xié)議的深度適配,不同場景提供精準(zhǔn)的通信解決方案。 ?? ?TCP/IP協(xié)議
    的頭像 發(fā)表于 01-19 18:25 ?231次閱讀
    工業(yè)級4G路由器:TCP/IP與UDP<b class='flag-5'>協(xié)議</b>,解鎖工業(yè)物聯(lián)網(wǎng)高效<b class='flag-5'>傳輸</b>新范式

    SWD調(diào)試通信協(xié)議

    調(diào)試器和目標(biāo)芯片的 DAP 調(diào)試模塊通過 SWD 包傳輸協(xié)議進(jìn)行通信,包傳輸協(xié)議 2 線同步串行協(xié)議
    發(fā)表于 12-22 14:46

    協(xié)議“老將”,連接工業(yè)智能的橋梁——一文讀懂ModBus通信協(xié)議

    | 智能樓宇 | 能源監(jiān)控 | 環(huán)境監(jiān)測 ModBus以其穩(wěn)定、開放、易集成的特性,持續(xù)各類物聯(lián)網(wǎng)與工業(yè)系統(tǒng)提供可靠的通信支撐。 五、結(jié)語 從PLC到物聯(lián)網(wǎng),ModBus以其簡潔、開放、可靠
    發(fā)表于 12-15 10:08

    電能質(zhì)量在線監(jiān)測裝置支持的通信協(xié)議中,哪些協(xié)議傳輸速度比較快?

    電能質(zhì)量在線監(jiān)測裝置支持的通信協(xié)議中, 傳輸速度的核心衡量指標(biāo)是 “延遲(實(shí)時(shí)性)” 和 “帶寬(數(shù)據(jù)吞吐量)” —— 電力場景中,“低延遲” 往往比單純 “高帶寬” 更關(guān)鍵(如故障信號、實(shí)時(shí)采樣值
    的頭像 發(fā)表于 12-12 16:28 ?1429次閱讀
    電能質(zhì)量在線監(jiān)測裝置支持的通信<b class='flag-5'>協(xié)議</b>中,哪些<b class='flag-5'>協(xié)議</b>的<b class='flag-5'>傳輸</b><b class='flag-5'>速度</b>比較快?

    MQTT協(xié)議為什么成為物聯(lián)網(wǎng)協(xié)議

    不穩(wěn)定環(huán)境下的通信需求。以下是具體分析: 1. 輕量級設(shè)計(jì),適配資源受限設(shè)備 極簡協(xié)議頭 :MQTT協(xié)議頭最小僅2字節(jié),遠(yuǎn)低于HTTP(通常數(shù)百字節(jié))或CoAP(雖輕量但基于UDP,可靠性較弱)。例如,
    的頭像 發(fā)表于 12-10 09:15 ?487次閱讀

    電能質(zhì)量在線監(jiān)測裝置支持?jǐn)帱c(diǎn)續(xù)傳的文件傳輸協(xié)議有哪些?

    電能質(zhì)量在線監(jiān)測裝置針對 文件級斷點(diǎn)續(xù)傳 (如故障錄波文件、歷史數(shù)據(jù)報(bào)表、諧波頻譜文件等),主要支持以下專用文件傳輸協(xié)議,不同協(xié)議在安全性、傳輸效率與適用場景上各有側(cè)重: 一、核心支持
    的頭像 發(fā)表于 12-05 17:46 ?3096次閱讀
    電能質(zhì)量在線監(jiān)測裝置支持?jǐn)帱c(diǎn)續(xù)傳的文件<b class='flag-5'>傳輸</b><b class='flag-5'>協(xié)議</b>有哪些?

    為什么會(huì)有TCP/IP協(xié)議

    見了面,完全不能交流信息。因而他們需要定義一些共通的東西來進(jìn)行交流,TCP/IP就是為此而生。TCP/IP不是一個(gè)協(xié)議,而是一個(gè)協(xié)議族的統(tǒng)稱。 里面包括了IP協(xié)議,IMCP
    發(fā)表于 12-03 06:28

    分享SD卡協(xié)議、分類及IP設(shè)計(jì)詳解

    響應(yīng)獲取該寄存器值。 Card-Specific Data (CSD) 寄存器提供了關(guān)于如何訪問卡片內(nèi)容的信息。CSD定義了數(shù)據(jù)格式、錯(cuò)誤校正類型、最大數(shù)據(jù)訪問時(shí)間、數(shù)據(jù)傳輸速度以及是否可以使用DSR
    發(fā)表于 10-30 17:14

    適合無線數(shù)據(jù)傳輸的有哪些協(xié)議

    適合無線數(shù)據(jù)傳輸協(xié)議種類繁多,根據(jù)應(yīng)用場景、傳輸距離、數(shù)據(jù)速率、功耗等需求,可劃分為 短距離低功耗協(xié)議 、 廣域低功耗協(xié)議 、 高速率短距
    的頭像 發(fā)表于 10-24 15:17 ?1306次閱讀

    OV5640傳輸協(xié)議介紹

    構(gòu)成(0:寫,1:讀),OV5640的器件地址7’h3c,所以在寫傳輸協(xié)議中,ID Address(W)= 8’h78(器件地址左移 1 位,低位補(bǔ) 0);Sub-address(H)
    發(fā)表于 10-21 12:11

    什么是ANT+協(xié)議? 用途

    傳輸數(shù)據(jù)以避免沖突,同時(shí)也支持頻率跳變來對抗干擾。 應(yīng)用場景thisisant.com:ANT + 協(xié)議在運(yùn)動(dòng)健康監(jiān)測領(lǐng)域應(yīng)用廣泛,可實(shí)時(shí)傳輸心率帶、步頻傳感器、功率計(jì)等數(shù)據(jù)至運(yùn)動(dòng)手表或碼表;也可用
    發(fā)表于 09-29 15:42

    大文件高效傳輸不求人!Ymodem協(xié)議實(shí)戰(zhàn)示例與核心技巧揭秘

    無需復(fù)雜網(wǎng)絡(luò)環(huán)境,Ymodem協(xié)議即可實(shí)現(xiàn)可靠的大文件傳輸!通過其簡潔的通信機(jī)制(如SOH幀頭、數(shù)據(jù)分塊、ACK/NACK反饋),無論是單片機(jī)通信還是跨平臺(tái)傳輸,本文示例將演示如何快速
    的頭像 發(fā)表于 07-28 17:38 ?1202次閱讀
    大文件高效<b class='flag-5'>傳輸</b>不求人!Ymodem<b class='flag-5'>協(xié)議</b>實(shí)戰(zhàn)示例與核心技巧揭秘

    詳解 EtherCAT 網(wǎng)關(guān)模塊總線協(xié)議:架構(gòu)與數(shù)據(jù)傳輸機(jī)制

    EtherCAT總線協(xié)議轉(zhuǎn)換網(wǎng)關(guān)介紹 捷米特EtherCAT總線協(xié)議網(wǎng)關(guān)介紹 ? EtherCAT協(xié)議概述 EtherCAT協(xié)議是一種基于以太網(wǎng)的工業(yè)實(shí)時(shí)通信
    的頭像 發(fā)表于 07-16 14:46 ?1843次閱讀
    <b class='flag-5'>詳解</b> EtherCAT 網(wǎng)關(guān)模塊總線<b class='flag-5'>協(xié)議</b>:架構(gòu)與數(shù)據(jù)<b class='flag-5'>傳輸</b>機(jī)制

    NVMe協(xié)議研究掃盲

    ,使得其響應(yīng)速度較慢,無法充分發(fā)揮NVMe SSD的速度優(yōu)勢。若想要在嵌入式系統(tǒng)中充分發(fā)揮NVMe協(xié)議的高速讀寫性能,一方面可以通過優(yōu)化軟件執(zhí)行流程,來提高傳輸性能,但嵌入式處理器的性
    發(fā)表于 06-02 23:28

    MQTT為何成為物聯(lián)網(wǎng)協(xié)議

    MQTT(Message Queuing Telemetry Transport)即消息隊(duì)列遙測傳輸協(xié)議,已成為物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的協(xié)議,這主要得益于其在資源占用、通信效率、可靠性、擴(kuò)
    的頭像 發(fā)表于 05-20 09:54 ?873次閱讀