web-dev-qa-db-ja.com

ブラウザはサーバーからデータを取得する場所をどのように認識しますか?

これは、この種のことを投稿するための正しいフォーラムではないかもしれませんが、何年もの間私を困惑させてきた質問です。

私はサーバー自体がどのように機能するかをよく知っており、ほとんどのコンピューターに精通しています。

Serverfault.comを例にとってみましょう。

ブラウザのアドレスバーに http://www.serverfault.com/ と入力します。その時点で、私のコンピューターは 逆行する IPアドレスを取得するためのDNSルックアップ。

DNS情報がDNSサーバーにあることは知っていますが、コンピューターはどのようにしてすぐにそれを探す場所を知るのでしょうか。コンピューターが自動的に検索する固定IPアドレスのDNSサーバーはありますか?

次に、コンピューターのIPアドレスがserverfault.comになると、(私の場合は)comcastに移動して、serverfaultsサーバーへのアクセスを開始します。そのプロセスはどのように機能しますか? serverfault.comへのトレースルートを実行すると、探しているものが正確に見つかるまで約16ホップになります。

明らかに、serverfault.comに直接接続することはできません。これは、サーバーへの直接の物理ルートを使用するためですが、ネットワークを介した要求を制御するものは何ですか?トレースルートに表示されるルートを使用する理由は何ですか?

私はこの質問がめちゃくちゃ開いていることを知っていますが、少なくとも外部ソースへのリンクを取得したり、グーグルで何を検索するかを知ることができれば、非常に役立ちます。

3
castis

(私はこのパーティーに遅れていますが、とにかくそれを使って何ができるか見てみましょう。)

DNSとIPルーティングを介した名前解決という2つの明確に異なることについて質問しています。個別に取り組みましょう。

DNSパート

DNS情報がDNSサーバーにあることは知っていますが、コンピューターはどのようにしてすぐにそれを探す場所を知るのでしょうか。コンピューターが自動的に検索する固定IPアドレスのDNSサーバーはありますか?

通常、クライアントコンピュータは、DHCPサーバー(クライアントに未使用のIPアドレスの「リース」を提供するサーバー)によって与えられた「オプション」のデータを介して、使用するDNSサーバーのIPアドレスを通知されます。使用する)。

一部のコンピューターは、DHCPを使用してIPアドレスを取得せず、IPアドレスを静的に割り当てます。コンピューターに静的に割り当てられたIPアドレスがある場合、DNSサーバーのIPアドレスもコンピューターの構成で静的に割り当てられます。

(DNSサーバー情報をクライアントに取得するためのより難解な方法がありますが、上記の2つはケースの90%以上をカバーしています。)

コンピューターがホームネットワーク上にあり、ホームネットワーク内のルーターまたはISP内のDHCPサーバーのいずれかで実行されているDHCPサーバーからIPアドレスが割り当てられているようです。

ホームルーターの場合、ISPのDHCPサーバーからIPアドレスを取得し、そのIPアドレスを取得する過程で、ISPが使用する予定のDNSサーバーのIPアドレスを学習します。 。一部のホームルーターは、ルーターのDHCPサーバーのクライアントにISPDNSサーバーアドレスを提供します。さらに他のホームルーターは、「ミニ」DNSサーバー自体を実行し、DHCPクライアントを独自の「ミニ」DNSサーバーに転送します。通常、この「ミニ」DNSサーバーは、ISPのDNSサーバーに要求を転送するだけです。

コンピューターがルーターなしでISPのネットワークに直接接続されている場合、おそらく、コンピューターにはISPのDHCPサーバーからISPのDNSサーバーのIPアドレスが提供されています。

IPデータグラムには、人間が読み取れる名前ではなく、宛先IPアドレスが含まれています。リモートサーバーと「通信」するには、コンピューターにそのリモートサーバーのIPアドレスが必要です。人間が読める名前をIPアドレスに「解決」するプロセス(宛先アドレスとしてIPデータグラムに含めるのに適しています)は、DNSフォワードルックアップと呼ばれます。

ここでは、再帰的なフォワードDNS解決の詳細については説明しませんが、基本的に、クライアントコンピューターはDNSサーバー(DHCPから学習したサーバー、または静的に構成されたサーバー)に「www.serverfault」という名前の要求を送信します。 .com」。その要求は、最終的にはISPのDNSサーバーに送られます。 ISPのDNSサーバーは、よく知られている「ルートDNSサーバー」のリストの1つに要求を出します。ルートDNSサーバーが返す回答は、ISPのDNSサーバーからの要求を「.com」DNSサーバーに導き、次に「serverfault.com」DNSサーバーに導きます。最終的に、回答はISPのDNSサーバーからコンピューターに返されます(前述のように、ホームルーターのDNSサーバーを介して)。

詳細に興味がある場合は、DNSプロトコルがどのように機能するかについての技術的な説明を調べることをお勧めします。

それはあなたの質問のDNS関連の部分を通して私たちを導きます。それでは、質問のIPルーティングの部分に移りましょう。

IPルーティング部分

トレースルートに表示されるルートを使用する理由は何ですか?

これらすべてのDNSクエリの結果は、IPアドレス(または技術的には複数のIPアドレス)になります。ブラウザは、DNSクエリによって返されたアドレスの1つへのTCP接続を開始します。これにより、コンピュータはIPデータグラム(以前のDNSクエリによって返されたIPアドレス宛て)を送信します。コンピュータが認識している「デフォルトゲートウェイ」へ。その「デフォルトゲートウェイ」は、コンピュータがインターネットに配信するためにパケットを「渡す」別のコンピュータ(通常はルーター)のIPアドレスにすぎません。イーサネットを使用すると、コンピュータがIPデータグラムを「ハンドオフ」する方法の詳細には、ARPプロトコルと、おそらくこの回答には少し深すぎる詳細が含まれます。

あなたは尋ねるかもしれません:あなたのコンピュータはどのようにしてデフォルトゲートウェイのIPアドレスが何であるかを知っていますか?

コンピューターがDHCPコンピューターからDNSサーバーアドレスを受信する方法と同様に、IPアドレスがDHCPからコンピューターに「リース」されたときに受信される「オプション」によって「デフォルトゲートウェイ」が提供されます。コンピュータに静的に割り当てられたIPアドレスがある場合、通常、その「デフォルトゲートウェイ」も静的に割り当てられます。

基本的に、IPルーティングは、パケットが宛先に到達するまで(または、パケットが何度も転送されると「試行が終了」するまで)、あるコンピューター(ルーター)から別のコンピューターにパケットを「渡す」ゲームです。各ルーターには、他のルーターに接続する多数のネットワークインターフェイスがあります。ルーターは、パケットを受信すると、そのパケットが通過するのに「最適」なネットワークインターフェイスを「決定」し、その「ルーティング決定」を行った後、選択したネットワークインターフェイスを介してパケットを別のルーターに渡します。このプロセスは、パケットが宛先に到達するまで繰り返されます。

私の 壮大なサブネット化の答え 静的IPルーティングの基本について説明します。静的IPルーティングでは、各ルーターには静的に割り当てられた宛先ネットワークのリストがあり、ルーターのネットワークインターフェイスへのネットワークの「隣接関係」を理解します。実生活ではTM 静的IPルーティングは、保守が面倒であり、輻輳やリンクの障害に関するルーティングが考慮されていないため、大規模なネットワークでは使用されません。

実行する「traceroute」は、パケットのパスの各「ホップ」に沿ってルーターが行ったルーティング決定の結果を示します。これらのルーターは、ボーダーゲートウェイプロトコル(BGP)やOpen Shortest Path First(OSPF)などの動的ルーティングプロトコルを使用して、パケットを別のルーターにルーティングする方法を決定します。これらの動的ルーティングプロトコルは、リンクの輻輳や可用性、パケットが各予想パスに沿って移動する相対的な「距離」などの要因、および場合によっては他の要因(ピアリング契約などの「政治的」要因を含む)を考慮して、パケットの行き先を決定できます。 。

個々の動的ルーティングプロトコルがどのように機能するかの詳細は、この答えをはるかに超えています。幸いなことに、インターネットのアーキテクチャは、エンドポイント(コンピューターやServerfault.comのサーバーなど)が「クラウド」内のパケットのルーティングについて何も知る必要がないようになっています。ネットワーク内のすべてのルーターが適切なルールに従って動作している限り、パケットは配信されます(ただし、IPはパケットの順序が狂った配信と損失を許容しますが、高レベルのプロトコルがこれらの発生の処理を処理します)。さらに良いことに、新しい動的ルーティングプロトコルを考案して「クラウド」内に実装することができ、改善されたルーティングを利用するためにすべてのエンドポイントを変更する必要はありません。

9
Evan Anderson

その時点で、私のコンピューターは逆引きDNSルックアップを実行してIPアドレスを取得します。

実際には、前方参照を行います。 DNSの逆引き参照は、IPアドレスをドメインにマップする場合です。

私のコンピュータはどうやってすぐにそれを探す場所を知るのですか?

すべてのドメインにはネームサーバーレコードがあります。これらのネームサーバーレコードは、ドメインの権限のあるDNSサーバーを指します。 PCは、事前に構成された独自のDNSサーバーにアクセスすることでこれを検出します。これはWindowsで確認できます。

C:\ Users\mark.henderson> nslookup 
デフォルトサーバー:enetsdc1.enets.local 
アドレス:192.168.161.2 
 
> set q = ns 
> serverfault.com 
サーバー:enetsdc1.enets.local 
アドレス:192.168.161.2 
 
権限のない回答:
serverfault.comネームサーバー= ns1.serverfault.com 
 serverfault.comネームサーバー= ns2.serverfault.com 
 serverfault.comネームサーバー= ns3.serverfault.com
 
 ns1.serverfault.comインターネットアドレス= 64.34.119.33 
 ns2.serverfault.comインターネットアドレス= 64.34.119.34 
 ns3.serverfault.comインターネットアドレス= 69.59.196.217

コンピューターが自動的に検索する固定IPアドレスのDNSサーバーはありますか?

はい。ある種。 ルートサーバー がありますが、ローカルマシンがそれらを使用する可能性は低いです。企業ネットワークを使用している場合は、ルートサーバーを使用する可能性が高く、そうでない場合はISPがルートサーバーを使用する可能性があります。

それは(私の場合)comcastに行き、serverfaultsサーバーへの道を歩み始めます。そのプロセスはどのように機能しますか?

お使いのコンピューターはデフォルトゲートウェイ(IPConfigで表示)で構成されています

C:\ Users\mark.henderson> ipconfig 
 
 Windows IP構成
イーサネットアダプターローカルエリア接続:
 
接続固有のDNSサフィックス。 :enets.local 
リンクローカルIPv6アドレス。 。 。 。 。 :fe80 :: a9e4:733:8949:f70a%11 
 IPv4アドレス。 。 。 。 。 。 。 。 。 。 。 :192.168.161.103 
 デフォルトゲートウェイ 。 。 。 。 。 。 。 。 。 :192.168.161.17

このデフォルトゲートウェイは、世界への窓です。このデフォルトゲートウェイには独自のデフォルトゲートウェイ(ISP)があり、そのゲートウェイは通常、BGPと呼ばれるプロトコルを介してインターネットの他の部分に接続されています。このBGPプロトコルは、特定の宛先(ServerFault IPアドレス)へのすべての個別のホップとルートを通知する方法です。次のルーターにホップします。次のルーターは、最後に到達するまで、そこに到達するための最良の方法、ホップなどを再計算します。このため、2つの連続したパケットが順不同で宛先に到達する可能性があるため、TCPにはこのためのコントロールが組み込まれています。

トレースルートに表示されるルートを使用する理由は何ですか?

BGPプロトコルは、後続の各リンクの状態を維持し、そのリンクの状態が変化すると(ビジー状態になるか、ダウンするなど)、別のホップを選択して移動します。

4
Mark Henderson
  1. コンピュータは、ネットワーク構成内の1つ(またはできれば複数)のDNSサーバーのアドレスを通知されるため、DNSサーバーを見つけることができます。その情報は動的に取得されるか( [〜#〜] dhcp [〜#〜] と呼ばれる別のプロトコルから)、または特定のネットワークインターフェイス用に静的に構成されます。

  2. 「物理」LAN上にない特定のIPアドレスへのトラフィックは、インターネットを形成するすべてのネットワークの相互接続を説明する部分的および完全なテーブルを持つ(ご想像のとおり)IPルーターを介してルーティングされます。

  3. Tracerouteを実行する場合、ユーザーと目的のホスト間のすべてのホップは、そのホストへの(潜在的に)多くの可能なルートの1つを表します。

3
Clint Miller

コンピューターが自動的に検索する固定IPアドレスのDNSサーバーはありますか?

コンピューターのIP構成を見ると、DNSサーバーのリストがあります。これがリンクです。使用するルーターと同様に、DNSは、通常DHCPを介して送信される構成済みの値です。これはIP構成の一部です。

プロバイダーのDNSサーバーは、通常、インターネット全体を管理する既知のDNSサーバー(ルートサーバーと呼ばれる)のリストに移動します。基本的には、トップレベルのゾーンである「ゾーン」「。」の既知の権限です。技術的には、「。com」は「。」のサブドメインです。私がいつも言ったように、ルートサーバーのリストは「既知」です。

詳細については http://www.root-servers.org/

トレースルートに表示されるルートを使用する理由は何ですか?

プロバイダーが割り当てられているすべてのAS(自律システム)間で構成された接続。これは、BGPプロトコルを介してプロバイダー間で交換されます。基本的に、プロバイダーはASの中央レジストリからアドレスを取得し、ASのエッジにある既知の他のシステムを他のASに公開します。彼らはvviaBGPを他のネットワークにルーティングする方法を交換します。

詳細については、 http://en.wikipedia.org/wiki/Border_Gateway_Protocol

3
TomTom

ドメインネームシステム(DNS)

まず、www.serverfault.comからww.xx.yy.zzに移動するために使用されるプロセスは、forward DNSルックアップと呼ばれます。逆引き参照は、IPアドレスからDNS名を取得するために使用されるプロセスです。

とは言うものの、コンピュータはネットワーク設定で設定されたDNSサーバーに移動します(ISP /職場によって操作され、「リカーサー」と呼ばれます)。コンピューターがDHCPを介してIPアドレスを自動的に取得する場合(つまり手動で設定しなかった場合)、DNSサーバーアドレスは通常DHCPを介して取得されます。

キャッシングが含まれますが、リカーサーは最初にDNS「ルートサーバー」の13個のIPアドレスの1つから開始してクエリを処理しますが、実際には13個を超えるルートDNSサーバーが存在し、「エニーキャスト」と呼ばれるメカニズムを使用してIPアドレスを共有します。

もちろん、ルートサーバーはallドメイン名のDNSエントリを保持していません。代わりに、.comドメイン名に対するすべての要求を.comDNSサーバーの1つに参照するだけです。 serverfault.comのレコードを含む.comDNSサーバーは、探しているレコード(www.serverfault.comのIPアドレス(Aレコードと呼ばれる))を含むDNSサーバーへの要求を参照します。これはすべてISPのリカーサー(成功したルックアップの結果を後で使用するために保存できる)内で行われ、プロセスを効率的かつスムーズに実行し続けます。最終的な答えを返すだけです。

IPルーティング

また、コンピューターのネットワーク設定には、LAN上のファイアウォールまたはルーターのアドレスである「デフォルトゲートウェイ」のIPアドレスがあります。コンピュータから送信されるすべてのパケットは、設定されたサブネットマスクによって決定されるように、LANに直接接続されているコンピュータに送信されない場合、そのゲートウェイに送信されます。

ルーターは、IPアドレス範囲のリストとそれら宛てのパケットの送信先を含む「ルーティングテーブル」を保持しています。多くの場合、ルーティングテーブルは自動的に構成されます。 ISPのネットワーク内では、ルーティング情報プロトコル(RIP)など、いくつかのプロトコルのいずれかを使用してこれを行うことができます。パケットが独自のISPのネットワークを離れると(ISPのISPであるアップストリームプロバイダーを介してオープンインターネットに送信されます)、ボーダーゲートウェイプロトコル(BGP)と呼ばれるプロトコルが使用されます。パケットは、最終的な宛先に到達するまでルーター間で転送され続けます。パケットは同じ方法でコンピュータに戻ります。

Tracerouteはどのように機能しますか?これは、「Time to Live」と呼ばれるパケット内のフィールドを操作します。これは、通常の使用では、ルーター構成にエラーが発生した場合にパケットが無限にループするのを防ぐことを目的としています。これは、パケットが通過できるルーターの数として定義されます。 Tracerouteは、TTLを毎回1ずつ増やし、その制限を超えたときに生成されるエラーメッセージを(ICMPパケットの形式で)リッスンします。エラーを生成したルーターのIPアドレスを記録します。オプションで、DNS逆ルックアップを実行して、DNS名を取得します。これは、成功する場合と失敗する場合があります。

3
PleaseStand