ブラウザが複数のIPを処理する方法[終了]


11

ブラウザーが特定のホスト名(たとえば、ip1とip2)の複数のAレコードを取得し、そのうちの1つがアクセスできない場合、正確なブラウザーの動作に関する情報を誰かに教えてもらえますか。

次のような(ただしこれらに限定されない)EXACTの詳細に興味があります。

  1. ブラウザはOSから2つのIPを取得しますか、それとも1つのみを取得しますか?
  2. ブラウザが最初に試行するIP(ランダムまたは常に最初のIP)さて、ブラウザが失敗したip1で起動したとしましょう
  3. ブラウザはどのくらいの間ip1を試行しますか?
  4. ユーザーがip1の待機中に「停止」をクリックしてから、「更新」をクリックした場合
    • ブラウザはどのIPを試行しますか?
  5. タイムアウトするとどうなりますか?ip2の試行を開始しますか、それともエラーを出しますか?(そして、エラーの場合、ユーザーが更新をクリックしたときにどのIPがブラウザーで試行されるか)。
  6. ユーザーが更新をクリックすると、ブラウザは新しいDNSルックアップを試行しますか?

ここで、ブラウザが最初にip2を動作させたと仮定しましょう。

  1. 次のページリクエストでは、ブラウザは引き続きip2を使用しますか、それともランダムにipsを切り替えますか?
  2. ブラウザがキャッシュにIPを保持する期間
  3. ブラウザが新しいDNSリクエストを送信し、同じIPを取得した場合、同じ既知の動作しているIPを使用し続けるか、プロセスが最初から開始され、2つのうちのいずれかを試行しますか?

もちろん、それはすべてブラウザに依存している可能性があり、バージョンやプラットフォーム間でも異なる可能性があります。詳細を最大限にお知らせいただければ幸いです。

この目的-ラウンドロビンDNSベースが使用され、ホストの1つが失敗した場合にユーザーが実際に経験することを正確に理解しようとしています。

DNS負荷分散がいかに悪いかについては尋ねません。「やらない」、「悪い考え」、「heartbeat / proxy / BGP / whateverが必要」などと答えないようにしてください。


1
Firefoxには、IPアドレスと現在使用されているIPアドレスを表示するブラウザー拡張機能があります(addons.mozilla.org/en-US/firefox/addon/showip/?src=search)。Firebugの[Net]タブを使用して、IPリクエストが処理されたことを表示することもできます。明らかにこれはFirefoxにのみ関連しますが、Chrome開発者コンソールはIPリクエストが処理されたことを示していると思います。
10:07に汚れ

彼らはこれを行う理由もいくつかのISPのDNSサーバーのみ、これまでのIPアドレスが返されることに注意してください、私は考えていません
スマッジ

ありがとう、サム。はい、ChromeコンソールにはDNSルックアップ、キャッシュが表示され、要求されたIPが表示されます。
サンドマン

正確な振る舞いについて話したい場合、Webブラウザーがレコードを処理する方法について最初に注意することは、レコードを処理しないことです。名前解決は、ネットワークスタックによって処理されます。それで、あなたが気づいた特定のブラウザの奇妙さについて尋ねようとしていますか、それとも名前解決について尋ねていますか?
ロブモアー

ブラウザは、ホスト名のAレコードにリストされている複数のIPを(ネットワークスタックから)受信します。Google Chromeで、chrome:// net-internals /#dnsを試してみてください。
サンドマン4

回答:


5

結局のところ、私は自分で「研究」をしなければなりませんでした。Chromium(バージョン12.0.742.112)の動作(ubuntu 11.04で実行)は次のとおりです。

一般的には、次のように機能します。1回目のIPを試行し、タイムアウトしたら(189秒後に)2回目のIPを試行します。すべてのIPが試行されるまで、エラーメッセージは表示されません。次の接続は最初のIPから再び開始されます(2つ前に失敗して2つ目のIPが機能した場合でも-ブラウザは気にしません)

興味深いことに、ユーザーがキャンセルを押してもTCP接続の試行はドロップされません。つまり、キャンセルを押して60秒後に再試行をクリックすると、130秒(最初の試行から189)でページが表示されます。190秒後に更新すると、プロセスは最初から開始されます。

元の質問の項目について:

  1. ブラウザはOSから両方のIPを取得しますが、OSはIPの順序を変更しません。
  2. ブラウザは常に最初に表示されるIPに接続しようとします
  3. 189秒間試行します
  4. 2回目の試行では、最初のIPを再試行します。
  5. 最初のIPがタイムアウトすると、ブラウザーは2番目のIPを静かに続行します。動作する場合-ページが表示され、動作しない場合-待機が続行されます。
  6. 未検証。このブログでは、chrome:// net-internals /#dnsを見ると、ChromeがDNSを最大1分間キャッシュすることを示しています。

    容量:100成功エントリの生存時間(ミリ秒):60000失敗エントリの生存時間(ミリ秒):0

最初のIPが機能する場合、プロセスは同じになり、最初の試行で常に成功します。


4

あなたが望んでいないことを人々に伝えるのではなく、あなたが達成しようとしていることを説明してみませんか?

必要なのが既知のデータだけである場合は、自分で調べてみるか、話しているブラウザ(数百種類)のドキュメントを読んでください。

ただし、これはDNSとは関係がないことを知るのに役立ちます。

ブラウザがリクエストを受け取ると、ブラウザはまずさまざまなキャッシュを調べて、URLが存在するかどうか、またはURLが存在しない場合はホスト名が既に存在するかどうかを確認します。
そうでない場合、システムリゾルバにヒットしてホスト名を解決します。

返されたIPが応答しない場合、否定的な検索結果としてこれを内部的にキャッシュするので、別のAレコードにヒットすることを期待して同じURLを再度直接リクエストすると、おそらく役に立たないでしょう。ホスト名の結果と負のIPの結果が保存されています。

または、より多くの情報を提供できます。

編集:私はあなたがすべての要求の厳しいsmartasseryの間にいくつかの情報を提供したと思います。

結構:

  1. ブラウザーがシステムリゾルバーにホスト名を要求すると、そのホスト名に関する情報がすべて返されます。それが2つのIPを意味する場合、2つのIPを返します。
  2. それはブラウザに依存します。
  3. それはブラウザに依存しますが、私がこれまで使用したすべてのブラウザは単一のリクエストを行い、標準のTCP CONNECT()タイムアウト後にタイムアウトします。私はそれについてどこかにRFCがあることをかなり確信しています...
  4. それはブラウザに依存します。DNSやネットワークとは関係ありません。
  5. 番号。
  6. 番号。

また、DNSレコードがどこでも、特にクライアントでキャッシュされることを知らないようです。これらのレコードは、ドメイン所有者が意図したもの、またはあなたと彼の間にあるキャッシュの設定に応じて期限切れになります。1時間から1日が一般的であるため、狂人のようにリフレッシュを押した場合、リゾルバが別のDNSクエリを実行することを期待しないでください。


2
私が達成しようとしていることの説明を追加しました。私は既知のデータを探していますが、関連情報を見つけるのに数日かかる可能性があるため、誰かが知っていることを願っています。厳しい?私は必要な情報を求めている、私は要求することはできません-誰もが自由に答えるかどうか。Smartassery?私はあなたの投稿を傷つけました。私はそれに値するとは思いません。
サンドマン4

1
議論がDNSロードバランシングに反する炎に変わることを望んでいませんでした。とにかく、TCP CONNECT()を指定してくれてありがとう。
サンドマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.