どのIPがどのISPの公開情報に割り当てられていますか?geo IPサービスはどのようにしてこの情報を取得し、この情報を維持しますか?
これらのサービスのいずれかを使用せずに、特定のIPがどこに属するかを個人的に把握するにはどうすればよいですか?
どのIPがどのISPの公開情報に割り当てられていますか?geo IPサービスはどのようにしてこの情報を取得し、この情報を維持しますか?
これらのサービスのいずれかを使用せずに、特定のIPがどこに属するかを個人的に把握するにはどうすればよいですか?
価値のあることとして、私はISP業界の上級レベルで10年以上働いていたので、これについてはかなりの経験があります。
大きなIP範囲は、必要に応じてIANAによって各地域インターネットレジストリに割り当てられます。
地域は一般的に大陸規模であり、IPアドレスは 国ごとに割り当てられていません。
次に、RIRはIPアドレスをISPに割り当て、ISPはそれらをエンドユーザーに割り当てます。
各RIRはサーバーを維持しており、このwhois
サーバーを照会して、どのISPにネットブロックが割り当てられているかだけでなく、ある程度、どのエンドユーザーとそのエンドユーザーのアドレスを見つけることができます。
多くのISPは、すべての顧客についてこの情報を入力するわけではないことに注意してください。したがって、DSLサービスの住宅加入者である場合、Geoレコードは、自分のアドレスではなく、ISPのアドレスを提供する可能性があります。
さまざまなGeoLocationプロバイダーは、主にこれらのwhois
レコードをマイニングすることで機能します。そうすることの合法性は灰色の領域のようなものであることに注意してください-RIPEのデータベース著作権声明はここにあります。
IANAはDNSのルートゾーンも維持しますが、これはIP割り当て機能とは完全に独立しています。ドメイン名の操作とIPアドレスの区別を維持することは非常に重要です。
マッピングテーブルと、コードに組み込むことができるサービスを備えたさまざまなライブラリがあります。
理解しておくべき最も重要なことは、IPアドレスと世界のどの部分とも直接的な関係はないということです。アドレスは、大まかに地理的な組織に大きなブロックで割り当てられ、組織は小さなブロックを割り当てます。これは、特定のIPアドレスに対していくつかのレベルで発生する可能性があります(Alnitakはプロセスをうまく説明しています)。
事実は次のとおりです。WHOISデータは正確である必要はありません。私が住所ブロックを持っているなら、それは火星にあると言うことができます。また、最終的な組織(たとえば、アラスカの非常に小さなISP)の場所を絞り込んだとしても、ユーザーがハワイのダイヤルアップを使用しているか、サーバーがグアムの会社をホストしている可能性があります。
したがって、IPアドレス(またはドメイン名)を物理的な場所にマッピングする際には、常にリスク/見積もりの要素があります。これは、絶対にやるべきではないということではありません。大まかな情報や不完全な情報が非常に役立つアプリケーションはたくさんあります。
「それがどのように機能するか」についての特定の質問に答えるために:多くの手作業が必要であり、データベースは大部分が手作業で維持されています。他の回答が指摘しているように、IP範囲と国の間には実際の相関関係はなく、特定の地域ははるかに少ないです。最近、IPアドレス空間分散のシステムはさらに分散化されています。つまり、小規模な民間ベンダーは、地理的な地域に関係なくIPv4アドレス範囲を取得できます。これが、GoogleがUrchinを買収して、非常に正確なIPから地理的地域への情報を提供するGoogleAnalyticsのサービスを利用できるようにした理由です。
MaxMind(個人使用は無料で、データベースはある程度開いています)やGoogle Analytics (個人使用は無料)などのサービスを使用したくない場合は、無料の(したがって常に少し古い)データベースが浮かんでいます。時にはフラットファイルとして。
多くの場合、データの更新が遅く、複製がさらに遅いことに注意してください。私の職場は何年も前に ISP を変更し、以前のカナダの IP アドレスのブロックが割り当てられました (私たちは米国に拠点を置いています)。何ヶ月もの間、Google はデフォルトの検索エンジンとして google.ca を提供し続けました。私のホームIPアドレスが私の町からのものであると表示される時間の約1/2、別の州の町からの残りの1/2.
ジェイソンの言う通り、プロセスは同じですが、更新はさらに遅くなり、データの精度も低下します。
Alnitakの答えはほぼ的を射ています。
ちなみに、.dllを使用してユーザーの場所を特定する場合は、CodePlexにあるこのIPAddressExtensionを試すことができます。それは場所へのISPの内部データベースを持っています。Alnitakが前述したように、各ISPにはIPブロックがあります。したがって、この情報はすべて.dll内に埋め込まれています:)
本当に使いやすいです。.dllを参照してから、System.Net.IpAddressオブジェクトのインスタンスを作成するだけです。拡張機能がリストされています。
また、私がそのcodeplexプロジェクト/製品の作成者であることを宣言する必要があります。
チェックアウトしてください :)
編集:私がその製品の作者であるという情報を追加しました。