2017-02-10 16 views
0

InetAddress.getByName(String)について1つ確認したいと思います。名前でIPアドレスを取得することについて

例えば、www.coolapp.comという名前のサーバーにリクエストを送信するアプリがあり、私がすることで、このサーバーのIPアドレスを取得することができます。

String serverIp = InetAddress.getByName("www.coolapp.com"); 

しかし、アプリをするように設計されている場合地理的に別のサーバーに接続すると、ホスト名は同じ "www.coolapp.com"ですが、この関数はアプリケーションが接続しているサーバーの対応するIPを返しますか?

たとえば、ヨーロッパのアプリを使用しています。ドイツのサーバーに接続しています。サーバーのホスト名は "www.coolapp.com"です。IPは182.12.12.12です。それから私が日本に旅行すると、アプリは "www.coolapp.com"に接続しています。IPは123.13.13.13です。APIは地理的位置に基づいて対応するIPを返しますか?

答えて

1

InetAddress.getByName()はDNSクエリを実行するため、DNS規則が適用されます。

DNSでは、地理的に異なる場所で異なるIPを取得できます。ただし、DNSはより多くのIPをDNS名link)ごとに定義することもできます。このような場合、ほとんどのDNSリゾルバがアドレスを交互に切り替えるため、ある1つの場所でも、連続する2つのクエリで異なるIPが得られる可能性があります。それによって、接続したIPと同じIPを取得できなくなる可能性があります。

これは、途中またはコンピュータ上のキャッシュの対象になる可能性があることに注意してください。

関連する問題