Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does Dns.GetHostEntry Method(String) actually do?

I can't find any proper description in the documentation for what this actually does.

Does it check for the existence of A records or CNAME records or both?

My understanding is that in .NET 4, this throws a SocketException if the host does not exist, and this is confirmed by my testing.

like image 319
Greg Tarr Avatar asked Jun 06 '12 08:06

Greg Tarr


2 Answers

Dns.GetHostEntry is built on top of the Windows API and does not use the DNS protocol directly. If IPv6 is enabled it will call getaddrinfo. Otherwise it will call gethostbyaddr. These functions may use the local %SystemRoot%\System32\drivers\etc\hosts file, DNS or even NETBIOS to resolve a host name to an IP address. Resolving a host name to an IP address using DNS will use CNAME records to find the A record.

You can test this by resolving www.google.com that at least right now has a CNAME record that points to www.l.google.com. Using Dns.GetHostEntry will return the IP addresses from the A records for www.l.google.com.

like image 98
Martin Liversage Avatar answered Sep 27 '22 18:09

Martin Liversage


This is the list of addresses returned by

var ips = System.Net.Dns.GetHostEntry("microsoft.com").AddressList;
foreach (var ip in ips)
    Console.WriteLine(ip);

// output
64.4.11.37
65.55.58.201

And these are the A records pulled from network-tools.com, DNS query.

Answer records
microsoft.com       A   64.4.11.37  
microsoft.com       A   65.55.58.201

So I'd say it does pull A records.

like image 21
Despertar Avatar answered Sep 27 '22 19:09

Despertar