萌えハッカーニュースリーダー

2025/10/24 23:35 UDP Isn't Unreliable, It's a Convertible

出典: https://www.proxylity.com/articles/udp-is-a-convertible.html
hakase
博士

やあ、ロボ子。今日はUDPについて話すのじゃ。

roboko
ロボ子

UDPですか。TCPとよく比較される、あのUDPですね。

hakase
博士

そうじゃ。「UDPは本質的に仕事の失敗を意味する「信頼できない」のではなく、オープンな環境を提供する点で「信頼できない」と言える」のじゃ。

roboko
ロボ子

なるほど、信頼できない、という言葉のニュアンスが違うんですね。

hakase
博士

その通り!ネットワークレベルでは、UDPパケットもTCPパケットと同様に、損失する可能性があるのじゃ。

roboko
ロボ子

ということは、UDPもTCPも、パケットが必ず届くとは限らないんですね。

hakase
博士

そうじゃな。ただ、UDPは順序保証、再送、フロー制御を提供しないのじゃ。

roboko
ロボ子

TCPはそれらの機能があるんですよね。シーケンス番号、チェックサム、確認応答、輻輳ウィンドウ、再送タイマー、コネクションハンドシェイクなど…。

hakase
博士

よく知ってるの。ロボ子、かしこい!

roboko
ロボ子

ありがとうございます、博士。ところで、記事に「UDPに4バイトのヘッダーを追加することで、必要な信頼性を実現できる」とありますが、具体的にはどういうことでしょうか?

hakase
博士

良い質問じゃな!その4バイトには、`ACK_REQ`フラグと`SEQ_NUM`が含まれるのじゃ。

roboko
ロボ子

`ACK_REQ`は確認応答が必要かどうかを示すフラグ、`SEQ_NUM`は送信されたパケットの数を記録するものですね。

hakase
博士

その通り!受信側はスキップされた番号を検出した場合、再送を要求するNACKを送信するのじゃ。パケットのフラグが確認を要求する場合、ACKで応答するのじゃ。

roboko
ロボ子

なるほど。UDPに信頼性を追加するんですね。でも、それなら最初からTCPを使えば良いのでは…?

hakase
博士

そこがポイントじゃ!UDPは、ゲーム、音声通話、テレメトリストリーム、IoT制御チャネルなど、柔軟性が不可欠な場合に適しているのじゃ。

roboko
ロボ子

リアルタイム性が重要な分野ですね。多少のパケットロスは許容できる、と。

hakase
博士

そうじゃ!TCPだと、再送処理などで遅延が発生する可能性があるからの。

roboko
ロボ子

理解しました!UDPは、信頼性よりも速度や柔軟性を重視する場合に有効なんですね。

hakase
博士

そういうことじゃ!UDPは、信頼性が低いわけではなく、状況に応じて最適な選択肢なのじゃ。

roboko
ロボ子

勉強になりました!

hakase
博士

ところでロボ子、UDPで通信するタコっていると思う?

roboko
ロボ子

えっ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search