コンテンツにスキップ

RUDP: Reliable User Datagram Protocol

特徴

  • 到達保証, 順番保証
  • 暗号化

利点

パケロス対策

  • 通信速度に対してパケットの大きさの影響度は低い為、複数回分のパケットを結合して送信

IP変化対策

  • Wi-Fi, モバイル回線の切り替え時等
  • 要本人保証(ex. 暗号化)

サーバ処理負荷

システムコールによるパケット受信処理を大量に呼び出す必要あり

function
TCP/IP recv()
UDP recvmmsg() 早い

実装例

struct HeaderRUDP {
    uint16_t session_id;
    uint8_t flg;
    uint8_t channel_no;
    uint16_t sequence_no;
    uint16_t ack_no;
    uint64_t hash;
    byte data[0];
};
uint16_t session_id 接続管理用番号
uint8_t flg パケット種類番号
uint8_t channel_no 仮想接続番号
uint16_t sequence_no パケット送信番号
uint16_t ack_no 受信完了パケット番号
uint64_t hash
byte data[0]
  • session_idを利用することで送信元IPに依らず通信可能
  • 仮想的に複数接続を持たせることで、チャット機能, ゲーム機能のパケットが干渉することを回避する

暗号化

暗号鍵, channel_no, sequence_noにて暗号化

Question

- 暗号鍵の交換

reference

c/c++

python


最終更新日: August 14, 2023
作成日: August 14, 2023