RFC6455 Websocketサーバー開発 (C言語版) 進捗

RFC6455 (The Websocket Protocol) に準拠したWebsocketサーバー (C言語版)の開発進捗
RFC6455 Websocketサーバー開発 (C言語版) 進捗

ハンドシェイク

  • HTTPリクエスト解析
    • [ ] HTTPリクエストラインのパーサー関数作成
    • [x] HTTPヘッダーのパーサー関数作成
    • [ ] HTTPリクエストボディのパーサー関数作成
    • [ ] WebSocket関連ヘッダーの検証
      • [ ] Upgrade: websocket
      • [ ] Connection: Upgrade
      • [ ] Sec-WebSocket-Key の取得と検証
      • [ ] Sec-WebSocket-Version: 13 の検証
  • HTTPレスポンス作成
    • [ ] Sec-WebSocket-Accept の生成
      • [x] Sec-WebSocket-Key にSHA-1適用(外部依存)
      • [ ] Sec-WebSocket-Key にSHA-1適用(非依存)
      • [x] Sec-WebSocket-Key にBase64エンコードを適用
    • [x] HTTP 101 Switching Protocolsレスポンスの構築と送信

データ転送

WebSocketフレームの処理

  • フレーム解析
    • [x] fin ビットの取り出しと解釈
    • [x] rsv1, rsv2, rsv3 の取り出しと検証
    • [ ] opcode の取り出しと処理
      • [ ] 0x0: 継続フレーム
      • [ ] 0x1: テキストフレーム
      • [ ] 0x2: バイナリフレーム
      • [ ] 0x8: 接続終了
      • [ ] 0x9: Ping
      • [ ] 0xA: Pong
    • [x] mask フラグの取得と検証
    • [x] payload_len の取り出しと解析
    • [x] 拡張されたペイロード長(extended payload len)の取り出し
    • [x] masking key の取得とデコード
    • [x] payload データの取り出し
    • [ ] fin に基づく分割パケット対応
  • デコード
    • [x] masking key を使用したペイロードデコード
  • opcode別処理
    • [ ] テキストフレーム(0x1)のUTF-8デコードと処理
    • [ ] バイナリフレーム(0x2)のデータ処理
    • [ ] Ping(0x9)フレームへのPong応答
    • [ ] 接続終了(0x8)の処理
    • [ ] 不正なopcodeに対するエラー応答

フレーム生成

  • フレーム構築
    • [ ] fin フラグ設定
    • [ ] opcode の設定
    • [ ] ペイロードのマスキング処理(クライアント向けのみ)
    • [ ] ペイロード長の設定(拡張ペイロード長を含む)
    • [ ] フレーム全体のバイトストリーム化

接続管理

  • [x] クライアント接続の確立
  • [x] 2クライアント以上の接続の確立
  • [ ] 接続中のクライアントのリスト管理
  • [ ] 接続のタイムアウト処理
  • [ ] 不正なクライアントからの接続拒否
  • [ ] 接続終了時のクリーンアップ処理
  • [ ] ハートビート機能(Ping/Pong)による接続維持

セキュリティ

  • [ ] WebSocket Originヘッダーの検証(許可されたオリジンのみ受け入れる)
  • [ ] メッセージサイズの上限設定(大規模メッセージ攻撃の防御)
  • [ ] 不正なフレーム/データに対するエラーハンドリング
  • [ ] SSL/TLSサポート(wssプロトコル用)

拡張機能とプロトコルアップグレード

  • [ ] サブプロトコル(Sec-WebSocket-Protocol)の処理
  • [ ] 拡張(Sec-WebSocket-Extensions)のサポート
    • 圧縮データのデコード (例: permessage-deflate)

テストとデバッグ

  • [ ] 単体テスト
    • [ ] ハンドシェイクのテスト
    • [ ] フレーム解析と生成のテスト
    • [ ] 各opcode処理のテスト
  • [ ] 負荷テスト(高負荷時の動作確認)
  • [ ] プロトコルコンフォーマンステスト
    • [ ] RFC 6455に準拠しているかの確認
  • [ ] ロギングとデバッグツールの実装

ドキュメント

  • [ ] コードベースのコメントとドキュメント化
  • [ ] WebSocketサーバーの設定と使用法についてのユーザーガイド作成

タグ

#RFC6455


Write a comment
No comments yet.