What is a domain name?

Jul 4, 2019  - written by  in Domain names

There’s really no limit to what you can use your domain for.

The reason gets at a question we took up in our first Domain name guide entry: what is a domain name?

Hosts

You probably know at this point that in addition to computers and smart phones, there are now smart toilets, smart refrigerators, DVRs, and more. As the explosion of the Internet of Things demonstrates, potentially anything can be connected to the internet.

In order to be connected to the internet, each of these devices needs to be assigned an IP address. This is just a number that provides a precise, essentially numerical value to any thing (sometimes called a “resource”) that’s connected to the internet, and it forms the basis of networking those devices together. Just like with a phone number, you can’t call anyone, without an IP addresses, any two computers can’t communicate.

Once your computer or smart toilet or whatever is connected to the internet, then it becomes a host.

hosts.txt

When you want to make a phone call to someone, in the old days you had to look up their name in the phonebook and you would see their number listed next to their name. Your ability to call anybody who’s number you didn’t have written down someplace else or memorized was dependent on the phone company distributing a phonebook to your house.

This is basically how things used to work in the early days of the internet. If you wanted to connect to another device on the early internet, you’d have to know its address. These addresses were provided in a plaintext file that lists all the addresses and the hostnames on the network. That also meant the inverse was true: if you wanted to add another computer to the network, you’d have to contact the people in charge of distributing that file to get added. That file was named hosts.txt, and it contained all of the “hostnames” and all of the addresses of every device on the soon-to-be internet.

The problem, though, was that on the one hand, as more computers got on the network, that file got bigger and bigger, and it became harder and harder for the server it was hosted on to keep serving it to every computer on the network, and on the other hand, adding your device to the network meant calling up the Network Information Center (or NIC) to get added, and though it might not be typical for network administrators these days, the people who worked there went home at night and for holidays. As the early Internet grew, the size of the hosts.txt file and the frequency it was getting updated meant a new solution was necessary.

DNS

Enter the Domain Name System or DNS. DNS puts every resource on the network onto a tree. The first set of branches are the top-level domains, or TLDs. You know them as .edu, .gov, .net, .com, etc.

Off of any of these branches, anyone can register a name to use for whatever resource (that is, a device) they want. Off of that, they could add whatever branches they might want too. A domain name, then, was the names of all these branches separated by dots.

In the .net top-level domain, for example, we have registered the name “gandi“, and we’ve created the domain (or subdomain as it’s called) www and we’ve assigned that to a server that has our website on it.

Instead of having to know the IP address of that server, to get to our website, your computer just needs to ask a DNS server called a resolver (this is usually operated by your ISP, but public DNS resolvers also exist), to look up www.gandi.net. How does the resolver do that? First it asks the root zone where it can find .net. Then it asks .net’s DNS servers where it can find gandi.net, then it asks gandi.net’s DNS servers where it can find www.gandi.net.

And to make the system even more efficient, caching was built into it. Caching is when a computer saves a piece of information it received from another computer to use later. In this case, a DNS resolver might have already looked up www.gandi.net recently. Maybe you were just there a minute ago. Or maybe someone else who used that resolver did. Instead of having to ask the root zone, .net, and gandi.net, it can just tell your computer the answer it has cached.

The tree of DNS extends potentially into an infinite number of sub-branches of branches of sub-branches. But now it really does suffice to just have registered a domain name in a particular top-level domain (.com, .net, etc., of which there are now over a thousand).

When he made the original Domain Name System design, Paul Mockapetris, intended DNS to be consistent to ensure uniformity, decentralized to fix the scaling problems with the previous system, and open-ended in terms of what kinds of applications it could be used for.

By its very nature, a domain is meant to be flexible.

The last time we talked about what a domain is, we talked about how it’s like your online address. That’s true on a conceptual level. But because on a technical level, you can link your domain to web servers, to email servers, and just about any other device, a domain is a technically flexible thing. Thanks to DNS, a whole world of options is open to you. Mastering the configuration of your domain’s DNS records is the key to opening that world.

But it also means a world of flexibility for you. Your domain name can “point” to any IP address. If the server that has your website or email on it stops working, or if you want to try a different company’s service providing these to you, you can change your DNS and nobody will know the difference. Or better yet, you can use a particular type of DNS record called a CNAME record to point your domain name to another domain name, say a domain name run by your hosting provider, which can then update the ultimate IP address your domain points to depending on what servers it has available, for example.

The innovation of DNS has been part of providing the flexibility for the internet and the web to grow beyond what computer scientists sharing a hosts.txt file back and forth could have imagined.

A domain name is more than just an online address, but a flexible hub to group together all the different resources—whether websites, email, or others—that you want to group together under one name.