淺談KCP

什麼是KCP?爲什麼要使用KCP?
KCP是一個快速可靠協議。它主要的設計目的是爲了解決在網絡擁堵的情況下TCP協議網絡速度慢的問題,增大網絡傳輸速率,但相當於TCP而言,會相應的犧牲一部分帶寬。
kcp沒有規定下層傳輸協議,一般用UDP作爲下層傳輸協議。kcp層協議的數據包在UDP數據報文的基礎上增加控制頭。當用戶數據很大,大於一個UDP包能承擔的範圍時(大於MSS),kcp會將用戶數據分片存儲在多個kcp包中。因此每個kcp包稱爲一個分片。

我們先看一下網絡協議的一些基本的概念,這對我們理解KCP有很大的幫助。

超時與重傳
超時重傳指的是,發送數據包在一定的時間內沒有收到相應的ACK,等待一定的時間,超時之後就認爲這個數據包丟失,就會重新發送。這個等待時間被稱爲RTO,即重傳超時時間。

滑動窗口
TCP通過確認機制來保證數據傳輸的可靠性。在早期的時候,發送數據方在發送數據之後會啓動定時器,在一定時間內,如果沒有收到發送數據包的ACK報文,就會重新發送數據,直到發送成功爲止。但是這種停等的重傳機制必須等待確認之後才能發送下一個包,傳輸速度比較慢。
爲了提高傳輸速度,發送方不必在每發送一個包之後就進行等待確認,而是可以發送多個包出去,然後等待接收方一 一確認。但是接收方不可能同時處理無限多的數據,因此需要限制發送方往網絡中發送的數據數量。接收方在未收到確認之前,發送方在只能發送wnd大小的數據,這個機制叫做滑動窗口機制。TCP的每一端都可以收發數據。每個TCP活連接的兩端都維護一個發送窗口和接收窗口結構。

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章