2016-04-16 15 views
0

これは、StackOverflowに関する私の最初の質問です。だから間違いがあれば、無視してください。あなたが私の質問を理解するために問題に直面している場合は、私に教えてください、私は私の問題を説明するために最高の私を試してみましょう:)。C#:1つのホストに2つ以上のIPがある場合、IPをホスト名に解決する

現在、私はpcap.netを使用してC#でパケットスニファを作成しようとしています。私はホスト名にIPアドレスを解決している間に問題に直面しています。ここで

は私の問題です: ウェブサイトは、私は次の出力を得た

nslookup yahoo.com 

コマンドプロンプトでコマンドを入力する例えば1つの以上のIPアドレスを有する場合

DNS request timed out. 
    timeout was 2 seconds. 
*** Can't find server name for address 192.168.0.1: Timed out 
Server: google-public-dns-a.google.com 
Address: 8.8.8.8 

Non-authorative answer: 
Name: yahoo.com 
Addresses: 206.190.36.45, 98.139.183.24, 98.138.253.109 

yahoo.comには1つ以上のIPアドレスがあることは明らかです。

ここでは、1 ipアドレス(など)を持つホストでうまく動作している次のコードを使用しています。たとえば、ip source/destinationを8.8.8.8とすると、結果がGoogleに送られます-public-dns-a.google.com

private void PacketHandler(Packet packet) 
{ 
     IpV4Datagram ip = packet.Ethernet.IpV4; 

     string sourceHost = ip.Source.ToString(); 
     string destinationHost = ip.Destination.ToString(); 

     #region Code to get the host name of the source ip and the destination ip 

     string tempSourceIP = sourceHost; 
     string tempDestinationIP = destinationHost; 
     IPHostEntry source_ipHostEntry, destination_ipHostEntry; 
     try 
     { 
      source_ipHostEntry = Dns.GetHostEntry(sourceHost); 
      destination_ipHostEntry = Dns.GetHostEntry(destinationHost); 
      sourceHost = tempSourceIP + " :: (" + source_ipHostEntry.HostName + ")"; 
      destinationHost = tempDestinationIP + " :: (" + destination_ipHostEntry.HostName + ")"; 

     } 
     catch (Exception) 
     { 
      sourceHost = tempSourceIP; 
      destinationHost = tempDestinationIP; 
     } 
     #endregion 
} 

私は結果を表示するために(それは正確にはDataGridの)GUIに結果sourceHostと宛先ホストを追加しています。

私の質問は - ソースIPまたは宛先IPが不明なホストのリストに属しているかどうかを調べる方法がありますか(、たとえば、送信元IPまたは宛先IPが206.190.36.45の場合IPがyahoo.comに属していることを知るにはどうすればよいですか?)

更新日:私はインターネットをサーフィンして私の質問に対する解決策を見つけました。このリンクはHow to retrieve a list of websites from an IP address?です。これは、私の問題を部分的に解決します。なぜなら、この方法にしてもホスト名に解決できないIPアドレスがまだ残っているからです。私はパケットスニッファを作っているので、この方法はベストではないかもしれません。私は、IPアドレスのホスト名をリアルタイムで表示したいので、値がGUIにロードされている(私のデータグリッドを意味する)。リンクに提供された解決方法が私の問題を解決する唯一の方法であることを知ってうれしく思います。

答えて

1

rDNSを試すことができます。

https://en.wikipedia.org/wiki/Reverse_DNS_lookup

しかし、そこに述べたように:

は、すべてのIPアドレスが逆エントリを持っていません。

+0

あなたのリンクは非常に役に立ちます。ありがとう。 "すべてのIPアドレスに逆のエントリがあるわけではありません" - 実際は、これが私のコードに制限がある理由です。 nslookupについても同様です。しかし、私は疑問を抱いています - domaintoolsのようなウェブサイトはどのようにipsを解決しますか?彼らが何らかのファイルを使用している場合、そのファイルはどこで入手できますか?実際には、私が考え始めたこの理由は、この質問を思い付いた。 –

+0

私はあなたの答えをupvoteしようとしましたが、私の評判のために働いていません。どうか気にしないでください。 –

+0

私はこのサイトが何らかの逆のテーブルを保持していると思います。 " リバースIPルックアップツールの制限: 結果には、すべての.com、.net、.org、.biz、.us、および.infoドメインに加えて、上にリストされているその他のgTLDまたはccTLDドメインが含まれます。 IPアドレスに追加されたドメインは毎日更新されます 特定のIPアドレスからドメインが削除されても、最大2週間は反映されないことがあります。 " – brickner

関連する問題