そこでDNSでは,通信の信頼性はありませんが,通信開始までのオーバヘッドのないUDPを用います.UDPでは通信の信頼性を確保するために,アプリケーションのレベルでその機能を実装する必要があります.
DNSでは,図5のようにタイマを用いて通信の信頼性を確保します.DNSクライアントは,DNSサーバに対してドメイン名変換の要求を送信すると同時に,タイマをスタートさせます.もし,タイマがタイムアウトする前にサーバから回答が返ってくれば,通信が成功したと見なします.
しかし,サーバから応答がなく,タイマがタイムアウトすると,通信に失敗したと見なしサーバに再度要求を送ります.もし,サーバが機能ダウンしていたり,サーバまでのIP的な通信ができなかったとすると,何度要求を送ったとしても回答は返ってきません.
再送を無限に繰り返さないようにするために,再送した回数をカウンタで覚えておきます.もし,カウンタがある値を超えた場合は,サーバと通信ができないものと判断してドメイン名変換をあきらめ,変換を要求したソフトウェアに対して変換失敗を通知します.
|
〔図5〕DNSにおける通信の信頼性確保のしくみ
|