web-dev-qa-db-ja.com

DNSリゾルバータイムアウトメカニズム

DNSリゾルバー(ISPまたはOpend DNSまたはGoogleにあるもの)には、サーバーが応答するのを待つ特定のタイムアウト期間がありますか?もしそうなら、それはRFCにありますか、それとも各リゾルバにカスタムされていますか?

2秒という噂を聞きましたが、どこにも見たことがありません。

ps。 1つのウィンドウのようにローカルマシンリゾルバではありません。 http://technet.Microsoft.com/en-us/library/cc961411.aspx

2
GeorgeU

RFC 1034( http://www.faqs.org/rfcs/rfc1034.html )セクション5

RFC 1035( http://www.faqs.org/rfcs/rfc1035.html )セクション7

RFC 1536( http://www.faqs.org/rfcs/rfc1536.html

一般に、スタブリゾルバーと反復リゾルバーの2種類のリゾルバーがあることに注意することが重要です。

スタブはあなたがあなたの個人的なシステムに持っている可能性が高い種類です。反復は、OpenDNSや他のISPが実行する種類です。それらは「重労働」ルックアップを実行し、結果をキャッシュする可能性が高くなります(ただし、多くのスタブリゾルバーもキャッシュするようになりました)。

リゾルバのタイムアウト/再試行/再送信アルゴリズムは、各実装に固有です。

3
delimiter69

それがRFCなのか、それとも各リゾルバーに独自のデフォルトがあるのか​​はわかりません。

通常、リゾルバーは、最初はタイムアウトの少ない順にすべてのネームサーバーにクエリを実行します。次に、DNSシステムからエラーを受信しない限り、タイムアウトを増やして再度クエリを実行します。

しかし、DNSとBINDによると、ここでの第5版は、BINDでのタイムアウトのしくみです。 BINDは、DNSのリファレンス実装になる傾向があります。以下は、バインド8.2.1以降の動作です。

ネームサーバーが1つだけ構成されている場合は、5秒のタイムアウトでクエリを実行し、そのタイムアウトの場合は、10秒のタイムアウトで2番目のクエリが試行されます。その後、それが失敗した場合、ハード障害が返されます。

複数のネームサーバーが構成されている場合は、5秒のタイムアウトでそれぞれに順番にクエリを実行します。次に、最初のネームサーバーの場合は10秒、2番目のネームサーバーの場合は10/2、3番目のネームサーバーの場合は10/3のタイムアウトで、ネームサーバーをループバックします。これらすべてがタイムアウトした場合、ハードエラーが返されます。ネームサーバーが3つある場合、ルックアップが実際に失敗するまでに最大33秒かかる可能性があります。もちろん、ほとんどの場合、DNSシステムは、これが発生する前にIPアドレスまたはルックアップエラーを提供します。だから私はあなたのインターネット接続がダウンしている場合にのみこれが起こると思います。

1
3dinfluence