这是我在StackOverflow上的第一个问题。所以,如果有任何错误,请忽略它们。如果您遇到问题需要了解我的问题,请告诉我,我会尽力解释我的问题:)。
目前我正在尝试使用c#中的 pcap.net创建数据包嗅探器。在将ip地址解析为主机名时,我遇到了问题。
这是我的问题: 当一个网站有超过1个IP地址时,例如当我在命令提示符下键入命令时
nslookup yahoo.com
我得到了以下输出
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
因此,显然我有超过1个yahoo.com的IP地址。
现在,我正在使用以下代码,这对于具有1个ip地址的主机(,例如,当我的ip源/目标为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
}
我将结果sourceHost和destinationHost添加到GUI(这是一个精确的数据网格)以显示结果。
我的问题是 - 有没有办法找出源IP或目标IP是否属于未知主机的IP列表(,例如,如果我的源IP或目标IP是206.190。 36.45,我怎么知道IP属于yahoo.com )?
更新:我正在网上冲浪找到问题的解决方案,我找到了这个链接How to retrieve a list of websites from an IP address?。这部分解决了我的问题,因为即使遵循此方法,仍有一些IP地址无法解析为其主机名。由于我正在制作数据包嗅探器,因此这种方法可能不是最好的方法。因为我想在GUI中加载值时(我的意思是我的datagrid),实时显示用户,ip地址的主机名。我很高兴知道 - 如果链接中提供的解决方案是解决我问题的唯一方法。
答案 0 :(得分:1)