信頼性を処理するためのシーケンスID
-
09-09-2019 - |
質問
私は、UDPメッセージの信頼性を処理するための簡単な方法を把握しようとしています。私はちょうどシーケンスIDを持つ各1を送信し、以前の損失を検出することができ、受信した1つのIDを比較することで考えました。それだけで無限にインクリメント続けるだろうという考えは私と一緒に右に座っていませんでしたが、私は通常、整数だけを使用します。
私は、base64を使用することができ、それは、それが少し読みやすくなりますが、本当に何も解決しません。
私はまた、深夜に受信したメッセージを扱うとき種類のずさんされることが日付スタンプを接頭辞と見なさ。
私は、誰かがそれはちょうど、整数に固執する場合でも、提案することができるとよりよい解決策が必要のように感じます。
解決
この特定のジョブのための私の好みは、高分解能のタイムスタンプを播種インクリメント(少なくとも64ビット)の整数の配列を使用することです。このように、シーケンスは時間から再播種された送信側の状態の損失は、あったとしても、それはすべての可能性に単に前方にジャンプします。これは紹介かもしれない任意の年10Kのバグは、ラザロロングのための課題として残されています。 : - )
配列ギャップ検出は、基本的な最適化であることに留意してください。送信側は、ACKを受信するまで(ギャップまたは破損したデータグラムの場合)NACKは、単に以前の再送信を誘発すると、再送信する必要があります。 (ZMODEMは、動作のデフォルトモードは、ストリームの終わりに単一のACKの使用およびNACKによって支配他の全ての再送された状態で、この規則に稀例外で、ファイル転送プロトコルとして、しかし、それは本質的に1つの巨大なありますマルチパートデータグラム。)
他のヒント
を使用するTCP?
私は皮肉であることを意味するものではありませんが、TCPがある理由です。