IPによる地理的検索はどのように機能しますか?
-
07-07-2019 - |
質問
どのIPがどのISPの公開情報に割り当てられていますか? geo IPサービスはどのようにしてこの情報を取得し、この情報を維持しますか?
これらのサービスのいずれかを使用せずに、特定のIPがどこに属しているかを個人的に把握するにはどうすればよいですか?
解決
価値のあることのために、私はISP業界の上級レベルで10年以上働いていたので、かなりの経験があります。
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を買収し、Google Analyticsのサービスを使用できるようにした理由です。Urchinは、IPから地理的地域までの正確な情報を非常に提供します。
MaxMind などのサービスを使用したくない場合(個人使用は無料、データベースはある程度開いています)または Googleアナリティクス(個人使用は無料)、無料の(そして常にわずかに時代遅れの)データベースが、時々フラットファイルとして浮かんでいます。
注意してください、データの更新はしばしば遅くなり、複製するのはさらに遅くなります。私の職場は何年も前にISPを変更し、以前のカナダのIPアドレス(米国に拠点を置いています)のブロックを割り当てられました。自宅のIPアドレスが私の町からのものである場合の約1/2の時間、他の1/2は別の州の町からのものです。
Jasonはプロセスが同じであることは正しいのですが、更新がさらに遅くなり、データの精度が低下します。
Alnitakの答えは、ほぼ間違いなく重要です。
補足として、.dllを使用してユーザーの場所を特定する場合は、この CodePlex にあるIPAddressExtension 。 ISPの場所の内部データベースがあります。上記のAlnitakで述べたように、各ISPにはIPブロックがあります..したがって、この情報はすべて.dllに埋め込まれます:)
使い方は本当に簡単です。 .dllを参照して、システムのインスタンスを作成するだけです。 Net.IpAddress オブジェクト!拡張機能がリストされています。
また、そのcodeplexプロジェクト/製品の作成者であることを宣言する必要があります。
チェックしてください:)
編集:私がその製品の作者であるという情報を追加しました。