opps - Typo
Beacuse 13 IP addresses is as many as you can fit into a single UDP packet - nothing sinister :-)
Main Topics
Browse All Topicswhy there is 13 root servers in DNS?
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
Hi,
They are Top Level Domain servers. They are located at the different geographical areas of the world. Since DNS resolution is recursive (i.e., beginning the query from Top Level Servers) 1f all of them stops it will not be possible to resolve any name using DNS. This is why they are so many and placed at different geographical areas.
Just assume that you ar rying to resolv a domain like www.ibm.com.
- The first thing your DNS server will access one of these 13 Top Level Domain servers.
- It will query the first one it contacs the top level server for .com
- Then it will query he serve responsible for .com for ibm.com
- Then it will get the ibm.com's DNS server from this query
- Then it will query the www.ibm.com and get an IP
- It will then return the IP address to the querying program (such as internet explorer)
This type of query is called a recursive query for obvious reasons. As you see the first queried server for any domain is one of these 13 servers. This is why they are hardcoded instead while all other servers are qureied from these top level servers.
You can get an updated list from Internic website:
ftp://ftp.internic/net/dom
http://rs.internic.net/dom
Here's the information from internic why there are this many :
At the heart of the DNS are 13 special computers, called root servers. They are coordinated by ICANN and are distributed around the world. All 13 contain the same vital information this is to spread the workload and back each other up.
It seems that Internic is as clueless as me in this UDP packet fitting thing
The Link to the fulldocument is below. Please check it it iis a non-technical explanation document:
http://www.intern
UDP is a method of transmitting data without acknowledgement iff you want the full lo-down see http://www.netfor2.com/dns
Since these servers are hardcoded in every DNS server the res1lts form a Top Level Server query never returned to a client. Hence there's no need to fit all these server information on a single UDP package. Besides if you get the file I've referenced above all the data would not fit into a single packet
The 13 root servers are normally provided as a convienice in a file distributed with all DNS servers bit they are NOT hardcoded. You can update this root server list from a variety of sources and such a query, for spped and convenience always results in a single UDP packet reply - and the most that single UDP packet can contain is 13 IP addresses
That is where the number 13 comes from - which was the orginal question.
I'm aware about UDP. But what I don't understand is how it is related with why do we have 13 Top Level Special servers? Internic and ICANN who operate these global top level servers simply say that this is for workload distribution and redundancy. They don't have any intention to return all the IP's in a single UDP packet. Besides this information with 13 Top Level Servers are always hard coded in DNS servers either in Microsoft or UNIX/Linux/BSD so there's no practical reason for fitting all addresses in a single UDP package.
WikiPedia - So it must be correct
The choice of 13 nameservers was made because of limitations in the original DNS specification, which specifies a maximum packet size of 512 bytes when using the User Datagram Protocol (UDP).[7] The addition of IPv6 addresses for the root nameservers requires more than 512 bytes, which is facilitated by the EDNS0 extension to the DNS standard.[8] While only 13 names are used for the root namesevers, there are many more physical servers; C, F, I, J, K, L and M servers now exist in multiple locations on different continents, using anycast address announcements to provide decentralized service. As a result most of the physical root servers are now outside the United States, allowing for high performance worldwide.
You can check the 512 (sometimes a bit less) reply using nslookup, here I ask GTLD (.com) servers for a co.uk address and they tell me to clear off and ask root instead:
> ghgh.co.uk.
Server: b.gtld-servers.net
Address: 192.33.14.30
------------
SendRequest(), len 28
HEADER:
opcode = QUERY, id = 6, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0
QUESTIONS:
ghgh.co.uk, type = A, class = IN
------------
------------
Got answer (507 bytes):
HEADER:
opcode = QUERY, id = 6, rcode = NOERROR
header flags: response, want recursion
questions = 1, answers = 0, authority records = 13, additional = 13
QUESTIONS:
ghgh.co.uk, type = A, class = IN
AUTHORITY RECORDS:
-> (root)
type = NS, class = IN, dlen = 20
nameserver = c.root-servers.net
ttl = 172800 (2 days)
-> (root)
type = NS, class = IN, dlen = 4
nameserver = j.root-servers.net
ttl = 172800 (2 days)
-> (root)
type = NS, class = IN, dlen = 4
nameserver = m.root-servers.net
ttl = 172800 (2 days)
-> (root)
type = NS, class = IN, dlen = 4
nameserver = l.root-servers.net
ttl = 172800 (2 days)
-> (root)
type = NS, class = IN, dlen = 4
nameserver = k.root-servers.net
ttl = 172800 (2 days)
-> (root)
type = NS, class = IN, dlen = 4
nameserver = d.root-servers.net
ttl = 172800 (2 days)
-> (root)
type = NS, class = IN, dlen = 4
<snip-snip>
Yup must be corect but as you know in the first days of named the servers had shorter names and todadays names and all IP , TTL etc values can not fit into single UDP packet. Furthermore todays root files also include IPv6 records too which make it further hard to fit all 13 servers into single 512 byte.
This 512 byte limitatin was removed decades ago from the BIND too.
> You can check the 512 (sometimes a bit less) reply using nslookup, here I ask GTLD (.com) servers for a > co.uk address and they tell me to clear off and ask root instead:
Since this is a decission made in the old times it is not possible to fit all the root servers in a single UDP package.
At these times servers were named such as :
C.PSI.NET
TERP.UMD.EDU
NS.NASA.GOV
NS.ISC.ORG
Today this convention has been changed and all servers have a name such as:
x.ROOT-SERVERS.NET
which is considerably longer than the archaic names. Even this alone would occupy more than half of the 512 bytes. This is why I told it is not possible to fit a query including all 13 servers in a 512 byte single UDP packet.
Nope When there was nothing but the Gurus were plaling something like DNS they have planned a data structure with some fileds such as Name, TTL, IP Adress etc. And noticed that a single UDP packed could accomodate at most 13 of this structures. So they wanted to keep the Root Name servers at 13.
But all the conditions they ave initially planned has changed over time. Today there's no meaning in having 13 or133 name servers.
Business Accounts
Answer for Membership
by: KCTSPosted on 2009-09-15 at 06:14:11ID: 25334495
Beacuse 13 IP addresses is as manu as you can fit into a single UDP packet - nothing sinister :-)