1

From https://www.cloudflare.com/en-au/learning/dns/dns-server-types/

The 13 DNS root nameservers are known to every recursive resolver, and they are the first stop in a recursive resolver’s quest for DNS records. A root server accepts a recursive resolver’s query which includes a domain name, and the root nameserver responds by directing the recursive resolver to a TLD nameserver, based on the extension of that domain (.com, .net, .org, etc.).

But why can't the recursive resolvers directly query the TLD servers? From my understanding, there's only approximately 1500 TLD servers, which could easily be distributed to all resolver servers.

Something like a root server would be needed to distribute all the TLD servers to resolvers. But they should only be polled once to initialise the TLD list. From my understanding, every DNS request will ask the root server e.g "where is the TLD server for .com?" That seems rather inefficient?

0

2 Answers 2

1

But why can't the recursive resolvers directly query the TLD servers? From my understanding, there's only approximately 1500 TLD servers, which could easily be distributed to all resolver servers.

Because when you have a list of 1500 servers, you need to distribute updates considerably more often – and avoiding the need to distribute such a list to all users (even if it's just those running a resolver) is kind of the reason DNS was built in the first place.

It would be possible to do this, yes (and in some situations it's actually done) but you'd still need to have those X root servers for distributing the list anyway, so it's easier to just use the existing mechanisms – most likely they are more efficient than retrieving the entire list on every startup.

Something like a root server would be needed to distribute all the TLD servers to resolvers. But they should only be polled once to initialise the TLD list. From my understanding, every DNS request will ask the root server e.g "where is the TLD server for .com?" That seems rather inefficient?

Yes, every DNS request will need such a query, but most of the time it will be fulfilled directly from the resolver's cache, for as long as its TTL allows. There's nothing special about root queries in that regard – they're cached like all other queries in the chain (as well as the final query, of course).

As each TLD is cached individually, this is likely to be more efficient than retrieving the entire list – for a resolver whose users mainly need 10 TLDs, it only has to make 10 queries to the root servers approximately once a day. With a large list of 1500 servers, refreshing the entire list at the same frequency would consume a lot of resources on the root servers, and even if you used incremental transfer you'd still be receiving many changes that you don't need.

0

As @gantendo points out, caching exists.

From https://en.m.wikipedia.org/wiki/Domain_Name_System

This mechanism would place a large traffic burden on the root servers, if every resolution on the Internet required starting at the root. In practice caching is used in DNS servers to off-load the root servers, and as a result, root name servers actually are involved in only a relatively small fraction of all requests.

In other words, root servers are only polled occasionly to initialise the TLD list

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .