I thought it would be cool to have my own TLD, but apparently it's all managed by the ICANN, so you can't just name your website with any TLD you want. There are different prices. But at least you can customize your second level domain. Why aren't TLDs like this?
Mostly because you need to be able to resolve the TLD. The root DNS servers need to know about every TLD and it would quickly be a nightmare if they had to store hundreds of thousands records vs the handful of TLDs we have now. The root servers are hardcoded, they can't easily be scaled or moved or anything. Their job is solely to tell you where .com is, .net is, etc. You're supposed to query those once and then you hold to your cached reply for like 2+ days. Those servers have to serve the entire world, so you want as few queries to those as possible.
Hosting a TLD is a huge commitment and so requires a lot of capital and a proper legal company to contractually commit to its maintenance and compliance with regulations. Those get a ton of traffic, and users getting their own TLDs would shift the sum of all gTLD traffic to the root servers which would be way too much.
With the gTLDs and ccTLDs we have at least there's a decent amount of decentralization going, so .ca is managed by Canada for example, and only Canada has jurisdiction on that domain, just like only China can take away your .cn. If everyone got TLDs the namespace would be full already, all the good names would be squatted and waiting to sell it for as much as possible like already happens with the .com and .net TLDs.
There's been attempts at a replacement but so far they've all been crypto scams and the dotcom bubble all over again speculating on the cool names to sell to the highest bidder.
That said if you run your own DNS server and configure your devices to use it, you can use any domain as you want. The problem is gonna get the public Internet at large to recognize it as real.
In case you didn't know, domain names form a tree. You have the root ., you have TLDs com., and then usually the customer's domain google.com., then subdomains www.google.com.. Each level of dots typically hands over the rest of the lookup to another server. So in this example, the root servers tell you go ask .com at this IP, you go ask .com where Google is, and it tells you the IP of Google's DNS server, then you query Google's DNS server directly. Any subdomain under Google only involves Google, the public DNS infrastructure isn't involved at that point, significantly reducing load. Your ISP only needs to resolve Google once, then it knows how to get *.google.com directly from Google.
You're not just buying a name that by convention ends with a TLD. You're buying a spot in that chain of names, the tree that is used to eventually go query your server and everything under it. The fee to get the domain contributes to the cost of running the TLD.
I've seen the crypto scams, unfortunately, which is basically what brought me to ask this question.
Is there a reason why they decided that domain names should be owned? Cause it kinda sounds like the metaverse, but older (like buying digital land and stuff). And idk, it just leaves a bad taste for me at least.
Because if they're not owned, then how do you know who is who? How do we independently conclude that yup, microsoft.com goes to Microsoft, without some central authority managing who's who?
It's first come first served which is a bit biased towards early adopters, but I can't think of a better system where you go to google.com and reliably end up at Google. If everyone had a different idea of where that should send you it would be a nightmare, we'd be back to passing IP addresses on post-it notes to your friends to make sure we end up on the same youtube.com. When you type an address you expect to end up on the site you asked, and nothing else. You don't want to end up on Comcast YouTube because your ISP decided that's where youtube.com goes, you expect and demand the real one, the same as everyone else.
And there's still the massive server costs to run a dictionary for literally the entire Internet for all of that to work.
A lot of the times, when asking those kinds of questions, it's useful to think about how would you implement it such that it would work. It usually answers the question.
You can use whatever top level domain you want, you just have to convince everyone in the world to use your Root servers instead of ICANN, which ain't gonna happen. Tor has the .onion TLD, etc. There are no restrictions here. They're more like...agreements.
But why did everyone agree to that? Couldn't domains be determined by user, or at least a bit more decentralized? (ex: google.com leads to IP address 1.1.1.1)
DNS isn't just an address book, it determines ownership. So in a decentralized system I could just spin up some servers that direct anyone in my area trying to reach PayPal to my IP instead.
My guess would be to force a hierarchy as to distribute load. DNS is distributed in a sens. There are the root name servers that know about all TLD and then each TLD has its own server (in practice there is multiple TLD a single entity controls and it allocates as many server as needed to answer all DNS request for those). And those "TLD servers" know about the second level. And either they also know about the lower levels or those are further delegated.
So fewer TLD means that the "root" DNS servers do not have to keep a huge "phonebook" (TLD to IP address of the DNS responsible for them) and can therefore be efficient, which means that fewer of them are required. And fewer root server means its easier to update them and keep them consistent. And if nearly everyone can only register second level domains, then the root name servers do not need to be updated nearly as often.
In short, because of how DNS servers work.
Each TLD has to be resolvable in the root servers and as far as I know ICANN doesn't manage root DNS servers and ICANN would have to become a registrar and coordinate all those TLDs with all the root servers all over the world.