3.1. Packet Loss (パケット損失)
3.1. Packet Loss (パケット損失)
DTLS は, パケット損失を処理するために単純な再送信タイマーを使用します。図 1 は, DTLS ハンドシェイクの最初のフェーズを使用して基本概念を示しています:
Client Server
------ ------
ClientHello ------>
X<-- HelloRetryRequest
(lost)
[Timer Expires]
ClientHello ------>
(retransmit)
図 1: DTLS 再送信の例
クライアントが ClientHello メッセージを送信すると, サーバーからの HelloRetryRequest または ServerHello を期待します。しかし, タイマーが期限切れになった場合, クライアントは ClientHello またはサーバーからの応答が失われたことを認識し, これによりクライアントは ClientHello を再送信します。サーバーが再送信を受信すると, その HelloRetryRequest または ServerHello を再送信することを認識します。
サーバーは, 送信するメッセージ (HelloRetryRequest を除く) に対して再送信タイマーを維持し, そのタイマーが期限切れになったときに再送信します。HelloRetryRequest に再送信を適用しないことで, サーバー上で状態を作成する必要を回避できます。HelloRetryRequest は, それ自体が断片化されないように十分に小さく設計されており, これにより複数の HelloRetryRequest のインターリーブに関する懸念を回避します。
タイムアウトと再送信の詳細については, 第 5.8 節を参照してください。