GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


archive:internet:domain

What is a USENET domain?


                          What is a Domain?
                            Mark R. Horton
                          Bell Laboratories
                         Columbus, Ohio 43213
                               ABSTRACT
               In the past, electronic mail has used
               many different kinds of syntax, naming a
               computer and a login name on that
               computer.  A new system, called
               ``domains'', is becoming widely used,
               based on a heirarchical naming scheme.
               This paper is intended as a quick
               introduction to domains.  For more
               details, you should read some of the
               documents referenced at the end.
     1.  Introduction
     What exactly are domains?  Basically, they are a way of
     looking at the world as a heirarchy (tree structure).
     You're already used to using two tree world models that work
     pretty well: the telephone system and the post office.
     Domains form a similar heirarchy for the electronic mail
     community.
     The post office divides the world up geographically, first
     into countries, then each country divides itself up, those
     units subdivide, and so on.  One such country, the USA,
     divides into states, which divide into counties (except for
     certain states, like Louisiana, which divide into things
     like parishes), the counties subdivide into cities, towns,
     and townships, which typically divide into streets, the
     streets divide into lots with addresses, possibly containing
     room and apartment numbers, the then individual people at
     that address.  So you have an address like
             Mark Horton
             Room 2C-249
             6200 E. Broad St.
             Columbus, Ohio, USA
     (I'm ignoring the name ``AT&T Bell Laboratories'' and the
     zip code, which are redundant information.)  Other countries
     may subdivide differently, for example many small countries
     do not have states.
     The telephone system is similar.  Your full phone number
     might look like 1-614-860-1234 x234 This contains, from left
     to right, your country code (Surprise!  The USA has country
  1. 2 -
     code ``1''!), area code 614 (Central Ohio), 860 (a prefix in
     the Reynoldsburg C.O.), 1234 (individual phone number), and
     extension 234.  Some phone numbers do not have extensions,
     but the phone system in the USA has standardized on a 3
     digit area code, 3 digit prefix, and 4 digit phone number.
     Other countries don't use this standard, for example, in the
     Netherlands a number might be +46 8 7821234 (country code
     46, city code 8, number 7821234), in Germany +49 231
     7551234, in Sweden +31 80 551234, in Britain +44 227 61234
     or +44 506 411234.  Note that the country and city codes and
     telephone numbers are not all the same length, and the
     punctuation is different from our North American notation.
     Within a country, the length of the telephone number might
     depend on the city code.  Even within the USA, the length of
     extensions is not standardized: some places use the last 4
     digits of the telephone number for the extension, some use 2
     or 3 or 4 digit extensions you must ask an operator for.
     Each country has established local conventions.  But the
     numbers are unambigous when dialed from left-to-right, so as
     long as there is a way to indicate when you are done
     dialing, there is no problem.
     A key difference in philosophy between the two systems is
     evident from the way addresses and telephone numbers are
     written.  With an address, the most specific information
     comes first, the least specific last.  (The ``root of the
     tree'' is at the right.)  With telephones, the least
     specific information (root) is at the left.  The telephone
     system was designed for machinery that looks at the first
     few digits, does something with it, and passes the remainder
     through to the next level.  Thus, in effect, you are routing
     your call through the telephone network.  Of course, the
     exact sequence you dial depends on where you are dialing
     from - sometimes you must dial 9 or 8 first, to get an
     international dialtone you must dial 011, if you are calling
     locally you can (and sometimes must) leave off the 1 and the
     area code.  (This makes life very interesting for people who
     must design a box to call their home office from any phone
     in the world.)  This type of address is called a ``relative
     address'', since the actual address used depends on the
     location of the sender.
     The postal system, on the other hand, allows you to write
     the same address no matter where the sender is.  The address
     above will get to me from anywhere in the world, even
     private company mail systems.  Yet, some optional
     abbreviations are possible - I can leave off the USA if I'm
     mailing within the USA; if I'm in the same city as the
     address, I can usually just say ``city'' in place of the
     last line.  This type of address is called an ``absolute
     address'', since the unabbreviated form does not depend on
  1. 3 -
     the location of the sender.
     The ARPANET has evolved with a system of absolute addresses:
     ``user@host'' works from any machine.  The UUCP network has
     evolved with a system of relative addresses: ``host!user''
     works from any machine with a direct link to ``host'', and
     you have to route your mail through the network to find such
     a machine.  In fact, the ``user@host'' syntax has become so
     popular that many sites run mail software that accepts this
     syntax, looks up ``host'' in a table, and sends it to the
     appropriate network for ``host''.  This is a very nice user
     interface, but it only works well in a small network.  Once
     the set of allowed hosts grows past about 1000 hosts, you
     run into all sorts of administrative problems.
     One problem is that it becomes nearly impossible to keep a
     table of host names up to date.  New machines are being
     added somewhere in the world every day, and nobody tells you
     about them.  When you try to send mail to a host that isn't
     in your table (replying to mail you just got from a new
     host), your mailing software might try to route it to a
     smarter machine, but without knowing which network to send
     it to, it can't guess which smarter machine to forward to.
     Another problem is name space collision - there is nothing
     to prevent a host on one network from choosing the same name
     as a host on another network.  For example, DEC's ENET has a
     ``vortex'' machine, there is also one on UUCP.  Both had
     their names long before the two networks could talk to each
     other, and neither had to ask the other network for
     permission to use the name.  The problem is compounded when
     you consider how many computer centers name their machines
     ``A'', ``B'', ``C'', and so on.
     In recognition of this problem, ARPA has established a new
     way to name computers based on domains.  The ARPANET is
     pioneering the domain convention, and many other computer
     networks are falling in line, since it is the first naming
     convention that looks like it really stands a chance of
     working.  The MILNET portion of ARPANET has a domain, CSNET
     has one, and it appears that Digital, AT&T, and UUCP will be
     using domains as well.  Domains look a lot like postal
     addresses, with a simple syntax that fits on one line, is
     easy to type, and is easy for computers to handle.  To
     illustrate, an old routed UUCP address might read
     ``sdcsvax!ucbvax!allegra!cbosgd!mark''.  The domain version
     of this might read ``mark@d.osg.cb.att.uucp''.  The machine
     is named d.osg.cb.att.uucp (UUCP domain, AT&T company,
     Columbus site, Operating System Group project, fourth
     machine.)  Of course, this example is somewhat verbose and
     contrived; it illustrates the heirarchy well, but most
     people would rather type something like ``cbosgd.att.uucp''
  1. 4 -
     or even ``cbosgd.uucp'', and actual domains are usually set
     up so that you don't have to type very much.
     You may wonder why the single @ sign is present, that is,
     why the above address does not read
     ``mark.d.osg.cb.att.uucp''.  In fact, it was originally
     proposed in this form, and some of the examples in RFC819 do
     not contain an @ sign.  The @ sign is present because some
     ARPANET sites felt the strong need for a divider between the
     domain, which names one or more computers, and the left hand
     side, which is subject to whatever interpretation the domain
     chooses.  For example, if the ATT domain chooses to address
     people by full name rather than by their login, an address
     like ``Mark.Horton@ATT.UUCP'' makes it clear that some
     machine in the ATT domain should interpret the string
     ``Mark.Horton'', but if the address were
     ``Mark.Horton.ATT.UUCP'', routing software might try to find
     a machine named ``Horton'' or ``Mark.Horton''.  (By the way,
     case is ignored in domains, so that ``ATT.UUCP'' is the same
     as ``att.uucp''.  To the left of the @ sign, however, a
     domain can interpret the text any way it wants; case can be
     ignored or it can be significant.)
     It is important to note that domains are not routes.  Some
     people look at the number of !'s in the first example and
     the number of .'s in the second, and assume the latter is
     being routed from a machine called ``uucp'' to another
     called ``att'' to another called ``cb'' and so on.  While it
     is possible to set up mail routing software to do this, and
     indeed in the worst case, even without a reasonable set of
     tables, this method will always work, the intent is that
     ``d.osg.cb.att.uucp'' is the name of a machine, not a path
     to get there.  In particular, domains are absolute
     addresses, while routes depend on the location of the
     sender.  Some subroutine is charged with figuring out, given
     a domain based machine name, what to do with it.  In a high
     quality environment like the ARPA Internet, it can query a
     table or a name server, come up with a 32 bit host number,
     and connect you directly to that machine.  In the UUCP
     environment, we don't have the concept of two processes on
     arbitrary machines talking directly, so we forward mail one
     hop at a time until it gets to the appropriate destination.
     In this case, the subroutine decides if the name represents
     the local machine, and if not, decides which of its
     neighbors to forward the message to.
  1. 5 -
     2.  What is a Domain?
     So, after all this background, we still haven't said what a
     domain is.  The answer (I hope it's been worth the wait) is
     that a domain is a subtree of the world tree.  For example,
     ``uucp'' is a top level domain (that is, a subtree of the
     ``root''.) and represents all names and machines beneath it
     in the tree.  ``att.uucp'' is a subdomain of ``uucp'',
     representing all names, machines, and subdomains beneath
     ``att'' in the tree.  Similarly for ``cb.att.uucp'',
     ``osg.cb.att.uucp'', and even ``d.osg.cb.att.uucp''
     (although ``d.osg.cb.att.uucp'' is a ``leaf'' domain,
     representing only the one machine).
     A domain has certain properties.  The key property is that
     it has a ``registry''.  That is, the domain has a list of
     the names of all immediate subdomains, plus information
     about how to get to each one.  There is also a contact
     person for the domain.  This person is responsible for the
     domain, keeping the registry up-to-date, serving as a point
     of contact for outside queries, and setting policy
     requirements for subdomains.  Each subdomain can decide who
     it will allow to have subdomains, and establish requirements
     that all subdomains must meet to be included in the
     registry.  For example, the ``cb'' domain might require all
     subdomains to be physically located in the AT&T building in
     Columbus.
     ARPA has established certain requirements for top level
     domains.  These requirements specify that there must be a
     list of all subdomains and contact persons for them, a
     responsible person who is an authority for the domain (so
     that if some site does something bad, it can be made to
     stop), a minimum size (to prevent small domains from being
     top level), and a pair of nameservers (for redundancy) to
     provide a directory-assistance facility.  Domains can be
     more lax about the requirements they place on their
     subdomains, making it harder to be a top level domain than
     somewhere lower in the tree.  Of course, if you are a
     subdomain, your parent is responsible for you.
     One requirement that is NOT present is for unique parents.
     That is, a machine (or an entire subdomain) need not appear
     in only one place in the tree.  Thus, ``cb'' might appear
     both in the ``att'' domain, and in the ``ohio'' domain.
     This allows domains to be structured more flexibly than just
     the simple geography used by the postal service and the
     telephone company; organizations or topography can be used
     in parallel.  (Actually, there are a few instances where
     this is done in the postal service [overseas military mail]
     and the telephone system [prefixes can appear in more than
  1. 6 -
     one area code, e.g. near Washington D.C., and Silicon
     Valley].)  It also allows domains to split or join up, while
     remaining upward compatible with their old addresses.
     Do all domains represent specific machines?  Not
     necessarily.  It's pretty obvious that a full path like
     ``d.cbosg.att.uucp'' refers to exactly one machine.  The OSG
     domain might decide that ``cbosg.att.uucp'' represents a
     particular gateway machine.  Or it might decide that it
     represents a set of machines, several of which might be
     gateways.  The ``att.uucp'' domain might decide that several
     machines, ``ihnp4.uucp'', ``whgwj.uucp'', and ``hogtw.uucp''
     are all entry points into ``att.uucp''.  Or it might decide
     that it just represents a spot in the name space, not a
     machine.  For example, there is no machine corresponding to
     ``arpa'' or ``uucp'', or to the root.  Each domain decides
     for itself.  The naming space and the algorithm for getting
     mail from one machine to another are not closely linked -
     routing is up to the mail system to figure out, with or
     without help from the structure of the names.
     The domain syntax does allow explicit routes, in case you
     want to exercise a particular route or some gateway is
     balking.  The syntax is
     ``@dom1,@dom2,...,@domn:user@domain'', for example,
     @ihnp4.UUCP,@ucbvax.UUCP,:joe@NIC.ARPA, forcing it to be
     routed through dom1, dom2, ..., domn, and from domn sent to
     the final address.  This behaves exactly like the UUCP !
     routing syntax, although it is somewhat more verbose.
     By the way, you've no doubt noticed that some forms of
     electronic addresses read from left-to-right (cbosgd!mark),
     others read from right-to-left (mark@Berkeley).  Which is
     better?  The real answer here is that it's a religious
     issue, and it doesn't make much difference.  left-to-right
     is probably a bit easier for a computer to deal with because
     it can understand something on the left and ignore the
     remainder of the address.  (While it's almost as easy for
     the program to read from right-to-left, the ease of going
     from left-to-right was probably in the backs of the minds of
     the designers who invented host:user and host!user.)
     On the other hand, I claim that user@host is easier for
     humans to read, since people tend to start reading from the
     left and quit as soon as they recognize the login name of
     the person.  Also, a mail program that prints a table of
     headers may have to truncate the sender's address to make it
     fit in a fixed number of columns, and it's probably more
     useful to read ``mark@d.osg.a'' than ``ucbvax!sdcsv''.
  1. 7 -
     These are pretty minor issues, after all, humans can adapt
     to skip to the end of an address, and programs can truncate
     on the left.  But the real problem is that if the world
     contains BOTH left-to-right and right-to-left syntax, you
     have ambiguous addresses like x!y@z to consider.  This
     single problem turns out to be a killer, and is the best
     single reason to try to stamp out one in favor of the other.
     3.  So why are we doing this, anyway?
     The current world is full of lots of interesting kinds of
     mail syntax.  The old ARPA ``user@host'' is still used on
     the ARPANET by many systems.  Explicit routing can sometimes
     by done with an address like ``user@host2@host1'' which
     sends the mail to host1 and lets host1 interpret
     ``user@host2''.  Addresses with more than one @ were made
     illegal a few years ago, but many ARPANET hosts depended on
     them, and the syntax is still being used.  UUCP uses
     ``h1!h2!h3!user'', requiring the user to route the mail.
     Berknets use ``host:user'' and do not allow explicit
     routing.
     To get mail from one host to another, it had to be routed
     through gateways.  Thus, the address ``csvax:mark@Berkeley''
     from the ARPANET would send the mail to Berkeley, which
     would forward it to the Berknet address csvax:mark.  To send
     mail to the ARPANET from UUCP, an address such as
     ``ihnp4!ucbvax!sam@foo-unix'' would route it through ihnp4
     to ucbvax, which would interpret ``sam@foo-unix'' as an
     ARPANET address and pass it along.  When the Berknet-UUCP
     gateway and Berknet-ARPANET gateway were on different
     machines, addresses such as
     ``csvax:ihnp4!ihnss!warren@Berkeley'' were common.
     As you can see, the combination of left-to-right UUCP syntax
     and right-to-left ARPANET syntax makes things pretty
     complex.  Berknets are gone now, but there are lots of
     gateways between UUCP and the ARPANET and ARPANET-like mail
     networks.  Sending mail to an address for which you only
     know a path from the ARPANET onto UUCP is even harder -
     suppose the address you have is ihnp4!ihnss!warren@Berkeley,
     and you are on host rlgvax which uses seismo as an ARPANET
     gateway.  You must send to
     seismo!ihnp4!ihnss!warren@Berkeley, which is not only pretty
     hard to read, but when the recipient tries to reply, it will
     have no idea where the break in the address between the two
     UUCP pieces occurs.  An ARPANET site routing across the UUCP
     world to somebody's Ethernet using domains locally will have
     to send an address something like ``xxx@Berkeley.ARPA'' to
     get it to UUCP, then ``ihnp4!decvax!island!yyy'' to get it
  1. 8 -
     to the other ethernet, then ``sam@csvax.ISLAND'' to get it
     across their ethernet.  The single address would therefore
     be ihnp4!decvax!island!sam@csvax.ISLAND@Berkeley.ARPA, which
     is too much to ask any person or mailer to understand.  It's
     even worse: gateways have to deal with ambiguous names like
     ihnp4!mark@Berkeley, which can be parsed either
     ``(ihnp4!mark)@Berkeley'' in accordance with the ARPANET
     conventions, or ``ihnp4!(mark@Berkeley)'' as the old UUCP
     would.
     Another very important reason for using domains is that your
     mailing address becomes absolute instead of relative.  It
     becomes possible to put your electronic address on your
     business card or in your signature file without worrying
     about writing six different forms and fifteen hosts that
     know how to get to yours.  It drastically simplifies the job
     of the reply command in your mail program, and automatic
     reply code in the netnews software.
     4.  Further Information
     For further information, some of the basic ARPANET reference
     documents are in order.  These can often be found posted to
     Usenet, or available nearby.  They are all available on the
     ARPANET on host NIC via FTP with login ANONYMOUS, if you
     have an ARPANET login.  They can also be ordered from the
     Network Information Center, SRI International, Menlo Park,
     California, 94025.
     RFC819  The Domain Naming Convention for Internet User Applications
     RFC821  Simple Mail Transfer Protocol
     RFC822  Standard for the Format of ARPANET Text Messages
     RFC881  The Domain Names Plan and Schedule
     #
     # @(#)domain.mm 2.1 smail 12/14/86
     #



/home/gen.uk/domains/wiki.gen.uk/public_html/data/pages/archive/internet/domain.txt · Last modified: 2000/11/18 16:51 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki