Since people voted this down without offering any concrete explanation, I am going to answer it according to my understanding of the system. I hope another noob finds it useful. It is long, but it also helps me understand the convention.
Let's say you registered the domain abc123.com
, the "com" is the top level domain, the "abc123" part is the second level domain.
When a web user wants to visit abc123.com
, he types in abc123.com
into his web browser. The browser then contact the DNS resolver (such as google DNS, level3, or opendns -- which is acting as a cache) to query if the DNS resolver has the IP address for abc123.com
previously saved. If some one had tried to reach abc123.com
previously through this resolver, the resolver should have the IP address for the abc123.com
domain name and return the IP to the browser. But if no has ever queried the DNS resolver for abc123.com
, the resolver does not have the IP cached. The resolver then need to contact the root DNS server for that information.
The root DNS server gets its info from the domain registrars. When you register the abc123.com
domain, abc123.com
is recorded by the root DNS server; along with the nameservers/IP (optional).
The guess is that the "abc123.com
" must exist in the root DNS server for it be able to logically say that ns1.abc123.com
to be valid. If abc123.com
does not exist in the record, then ns1.abc123.com
must not be valid.
Aside from the DNS principle, it is not possible for you to set nameserver names that contains a non registered domain because your registrar won't allow it. If you own abc123.com
and you log into your registrar to register nameserver names, the top (".com") and second ("abc123") level domains are locked and can't be changed. You can only enter values for the sub level domain. So what you could end up with is xxxx.abc123.com
as your nameserver name; abc123.com
is fixed. So it is not possible to create a public nameserver name that contains an unregistered second-level domain name.