This question probably highlights a lack of understanding of networking principals on my part, rather than a programming issue.
I'm doing a lookup on a hostname using
Dns.GetHostEntry
This returns an IPHostEntry to me, which has an AddressList property which is an array of IPAddress.
I always thought there is a 1 to 1 mapping between hostname and IP, but I'm finding that in some cases I get back several IPAddress(es) for the same host.
This is a surprise to me.
Which part of domain name resolution do I not understand?
The mappings between physical network interfaces, DNS names and IP addresses is practically arbitrary. However you should distinguish between network interfaces (typically Ethernet adapters, Wifi adapters, Bluetooth network devices etc.) and the DNS side of things, which only deals with names and IP addresses (not physical interfaces).
Here are some facts that you can mix and match:
Consider hosting providers: They will have many DNS names pointing to the same - shared - server. That server might for reasons of reliablilty be equipped with multiple network cards, each with several IP addresses.
For PCs you will usually get more than one IP address if you query by hostname, because nowadays you typically have at least two (wifi and ethernet) adapters with their individual (mostly single) IP address. In load-balancing scenarios however all sorts of clever mappings and redirections (virtual IP addresses and the like) can occur.
Both DNS and IP protocols are very flexible, however this of course does not necessarily make them easier to understand.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With