RakNet怎樣實現可靠傳輸的

來源:互聯網
上載者:User

在raknet中使用兩種資料發送機制,最新的使用UDT做為傳輸控制層

以下即為新的傳輸控制項機制

在raknet中可以用#define _USE_RAKNET_FLOW_CONTROL 來確定是是用舊的傳輸協議還是使用新的協議

 

控制包:

1 byte 標誌位

4 bytes 時間戳記, 用來去計算RTT,進行擁塞控制

 3 bytes 序號 ACK用它來查看資料包

 

 資料包:

 2 bytes 訊息長度

 3 bytes 當前訊息序號, 避免重複傳送

 1 byte 標誌位

 if (UNRELIABLE_SEQUENCED,RELIABLE_SEQUENCED,RELIABLE_ORDERED)

 3 bytes 重傳序號

 

1 byte 序列通道

if (訊息超過 MTU)

4 bytes 分塊數量, 不壓縮以提高工作效率

2 bytes 分塊標識

 4 bytes 塊中索引, 不壓縮以提高工作效率

 

 從遊戲中發送一段訊息,你發送到raknet的所有資料資訊都將會把一個控制資訊放在一起。因此你僅發送一個訊息,那麼它應該一個控制資訊和一個 資料資訊。如果你發送5個資訊,那麼它是一個控制資訊加5 個資料資訊。但是如果它比MTV大了10倍,那麼它發送10個報文,每個報文包含1個資料 (資料將被拆分)

 

以下即為舊的傳輸控制項機制:

 

 控制包:

1 byte 標誌位

8 bytes 時間戳記, 用來去計算RTT,進行擁塞控制

 

資料包:

4 bytes 訊息長度

4 bytes 當前訊息序號, 避免重複傳送

4 bits 標誌位

if (UNRELIABLE_SEQUENCED,RELIABLE_SEQUENCED,RELIABLE_ORDERED)

4 bytes 重傳序號

 

5 bits 序列通道

if (訊息超過 MTU)

4 bytes 分塊數量, 壓縮,平均是1-2個bytes

4 bytes 分塊標識

 4 bytes 塊中索引, 壓縮,平均是1-2個bytes

 

 

RakNet資料包的可靠性

 UNRELIABLE

Unreliable的資料包是直接被UDP寄出,它們可能按照順序到達,也可能不會。用這種方法寄出的資料最好是不重要的,或者發送很多次,這樣做的 好處就是,遺失的資料包可以得到補償。

 優點 — 這種類型的資料包不需要被網路告知是否到達目的地。

缺點 — 資料包沒有順序,也可能不會到達目的地,如果發送記憶體是滿的,首先拋棄的就是這種資料。

 

UNRELIABLE_SEQUENCED

 不可靠的連續資料包和不可靠的資料包大體相同。就只有一點不同,那就是老的資料包被忽視,只有最新的資料包可以被接受。

 優點 — 和不可靠的資料包差不多,因此你不用擔心老的資料包會改變你的資料。

缺點 — 大量的資料包在他們可能從未到達目的地的情況下丟失,也可能在到達目的地以後丟失。 當發送緩衝區滿了的時候,這些資料包首先被丟失。或是最近的資料包寄出後卻從未到達。

 

RELIABLE

可靠的資料包是UDP通過一個可靠的層打包後發送到目的地的。

 優點 — 資料包將完整無缺的到達目的地。

缺點 — 沒有包順序。

 

 RELIABLE_ORDERED

 

可靠性順序包是UDP通過一個可靠層打包後,按照順序發送到目的地的。

 優點 — 這種資料包將按照一定順序被寄出。這樣做的好處就是很容易編程,因為你不用擔心如何組織它們或者遺失的資料包。

缺點 — 可能會佔用額外的網路寬頻。如果網路很繁忙的時候,資料包可能到達的非常慢。如果一個資料包晚到,那麼將延遲許多資料包的到達。不 管怎樣,這個缺點可以使用順序流來緩解。

 

 RELIABLE_SEQUENCED

可靠性連續資料包是UDP使用可靠層打包的,它的目的就是確保這些資料包可以按照連續的順序到達目的地。

 優點 — 你可以得到UDP資料包的可靠性,順序資料包的順序,不用擔心老的資料包。

缺點 — 還是佔用了大量的網路寬頻。 如果收到的包中ACK確認,從包隊列中刪除該包如果沒有收到ACK確認,重新發送 如果要發送的包大於預設MTU大小 ,拆分包進行發送

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.