I know about anycasting and I know about the UDP limitation. Now, I was reading this article and it says the following (emphasis mine):

Each IPv4 address requires 32 bytes. Accordingly, the designers of DNS chose 13 as the number of root servers for IPv4, taking 416 bytes of a packet and leaving up to 96 bytes for other supporting data and the flexibility to add a few more DNS root servers in the future if needed.​

My questions are:

  • Doesn't an IPv4 address only require 4 bytes?
  • Generally speaking, which formula did the people who created the DNS specification use to say that 13 is the amount of addresses we can get in a UDP packet? It seems to me we could get more than 13.
| improve this question | | | | |
  • Unfortunately, questions about protocols above OSI layer-4 are off-topic here. – Ron Maupin Oct 24 '17 at 12:57

"Each IPv4 address" meaning "each IPv4 DNS root server entry". The article is quite clear on this. 512 bytes of (minimum) UDP payload divided by 32 bytes equals 16. They left 96 bytes for future expansion and so (512-96)/32=13.

| improve this answer | | | | |
  • How about IPv6 DNS root server entry? – qin Mar 9 '18 at 3:28
  • 1
    @qin at that time IPv6 did not exist. Note that now this value is meaningless. First servers have been renamed so due to DNS compression we could fit far more names. Also almost all of them are anycasted anyway. Other DNS roots have more than 13, see the Yeti DNS project (yeti-dns.org), their root has 25 nameservers entry, see raw.githubusercontent.com/BII-Lab/Yeti-Project/master/domain/… – Patrick Mevzek Jun 28 '18 at 14:52

Not the answer you're looking for? Browse other questions tagged or ask your own question.