this post was submitted on 06 Jul 2026
42 points (90.4% liked)
Explain Like I'm Five
21651 readers
152 users here now
Simplifying Complexity, One Answer at a Time!
Rules
- Be respectful and inclusive.
- No harassment, hate speech, or trolling.
- Engage in constructive discussions.
- Share relevant content.
- Follow guidelines and moderators' instructions.
- Use appropriate language and tone.
- Report violations.
- Foster a continuous learning environment.
founded 3 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
DNS is like a phone book for the internet.
Computers on the internet have IP addresses which are numbers like 104.26.9.209. Nobody really wants to remember dozens or even hundreds of those so we also give them names like lemmy.world which are a lot easier to remember. DNS is a service that you can ask "Hey, what's the IP address for lemmy.world?" and you get a reply like "You can reach lemmy.world under 104.26.9.209, 104.26.8.209 and 172.67.71.35. You may remember those for 256 seconds. After that, better ask me again in case they have moved."
In reality, it's a tiny bit more complex. For example, you can ask for different kinds of information, not just IP addresses and DNS servers talk to each other to efficiently distribute changes across the internet.
Understatement of the year !
It's the reason every outage is always DNS.
isitdns.com
Who splits a haiku into 4 lines
DNS itself isn't that complex. We can ask for multiple things (A, AAAA, MX, NS, TXT, ...) and servers form a hierarchy so not everyone has to directly talk to the server that has authority over a domain. Maybe add DNSSEC if you feel fancy. That's about it.
The complexity comes from actually running these things at an enterprise or even global scale. Giving out different replies depending on who asks so everyone can contact a server that's geographically close to them. Load balancing between multiple nameservers. Aggressive caching. Failovers. Rights management. The reasons why DNS is the culprit for so many outages are a) the complexity we have layered on top of a relatively simple protocol and b) a lot of other stuff relies on DNS so problems spread super fast.
Oh yeah I'm well aware of DNS,. But I remember an article raising the alarm about the ever increasing complexity of the code behind it, and the progressive loss of knowledge due to it being a very old protocol.
I'm with you on the increasing complexity of code. That goes along with what I said about enterprise and global scale.
But loss of knowledge? Really? DNS is not some arcane knowledge limited to an inner circle who was there when it was invented. You can literally read RFC 1034 and RFC 1035 and know everything you need to build a basic working DNS server or client. The concepts are literally taught in every university course about networking because they are that important.
It also allows the numbers to change at any time, since it updates a lot faster than a phone book.
Yes. That's why DNS has a TTL (time to live) in seconds in every response which specifies how long you should remember it before you ask again. The 256 seconds in my example are the real TTL that I got when asking for lemmy.world.
A five year old has never heard of a phone book, let alone seen one. You've just expanded the problem without solving it.
That's why I didn't end it with the first sentence and instead dedicated a whole paragraph to what you do with it: you know a name and want to know the corresponding phone number / IP address.
It may also be worth adding, this is done because computers work in numbers, and do not inderstand what a "lemmy.world" is at all, but they understand "104.26.9.209" just fine.
That's not true though. Your computer understands "lemmy.world" just as much or as little as "104.26.9.209". If it couldn't handle a string of letters, it couldn't ask a nameserver for the corresponding IP address either.
Explaining why we need IP addresses would include the ISO/OSI layer model, fixed size DEST fields in IP packet headers, subnets, routing techniques, BGP and a lot more.
I could explain all that but it would take hours even when talking to someone who has a rough understanding of network technology and probably days when talking to a (virtual) 5-year-old. In the end it boils down to "Using numbers is more efficient" not to "Using names is impossible" and that must suffice for an ELI5.
104.26.9.209 is a bunch of 8 bit numbers. Lemmy.world is a bunch of translation from ascii to numbers to something meaningful. It directly understand 01101000000110100000100111010001 as on off electrical signals.
And your point is? Yes, everything on a PC is a list of numbers. That alone doesn't make an IP address (four 8-bit numbers / one 32-bit number) inherently more meaningful than the ASCII representation of a domain name (eleven 8-bit numbers in the case of "lemmy.world"). The mapping between a letter and its ASCII code is literally one of the most basic things a computer does.
The advantage comes from IP addresses having a fixed length, from IPv4 addresses being relatively short overall (IPv6 is 16 bytes which is about the same as many domains) and from prefixes being used for routing so you don't need a directory of every single IP address at every router (roughly analogous to country and area codes in phone numbers). None of that is relevant for understanding DNS and none of it means that computers don't "understand" text.
Edit to fully illustrate my point: IP addresses could just as well be strings like "de/hetzner/falkenstein12/rack42/server23". That would work. It would take up a lot of memory and be much slower than what we have but it would absolutely be possible to build a version of the internet that uses that instead of opaque numbers. And it would still need DNS on top because nobody wants to remember (or even know) where a website's server is physically located.
To be fair, I don't think most of us understand what a lemmy.world is...