How Domains Became Backwards

Internet URLs, file system paths and IP addresses usually get more specific as you move towards the right hand side. This is a clearly a byproduct of the left-to-right language of the designers of these systems. So why is it that this website is david.newgas.net and not net.newgas.david?

The familiar hierarchical naming is part of the “Domain Name System” created in the early 80′s by early internet engineers. They already had a internet naming system with cryptic, non hierarchical names like BBN-TENEXD and MIT-Multics. This was basically maintained in one giant text file managed by one organisation.

Faced with a network growing at ever increasing pace this system was becoming a nightmare to maintain. A naming system that followed administrative hierarchies seemed obvious, and was spelt out in RFC 822.

At this stage the right-to-left notation was already settled so to answer our question we must go further back to RFC 805, with the unhelpful title “Computer Mail Meeting Notes”. Here they discuss exactly how to add the extra hierarchical info.

One of their biggest concerns was email addresses.  These were already of the form user@host and they wanted something that extended this naturally. Here were some options they may have thought of:

Cerf@ISI Cerf@ARPA.ISI
ARPA.CERF@ISI
Cerf@ISI.ARPA

It’s fairly easy to see why they picked Cerf@ISI.ARPA – the information consistently gets less specific as you go along. The other options are more jumbled. Quoting the RFC makes me sound foolish for even thinking the addresses are backwards:

… the [email address] would read (left to right) from the most specific to the most general.

So there you have it – domains have the most specific part on the left hand side to make email addresses look good!

This entry was posted in Uncategorized. Bookmark the permalink.

25 Responses to How Domains Became Backwards

  1. foobar says:

    This is wrong.

    Addresses are written from the most specific to the most unspecific since time immemorial:
    Jack B. Ripper
    17b Something Rd
    AB17CD London
    Great Britain
    Earth.

    I think both directions have merit and there are valid precedents for both. None of both options is in any way “backwards”.

      • Foo says:

        Japanese addresses are only written this way in *Japanese*. In romanization or English hey’re written exactly like western addresses. Most specific to most general.

      • zhou says:

        Native Chinese here, all Chinese address’ are written in most general to most specific order. Country->province->city->district->street->number.

    • david says:

      That’s true, and it’s the basis of why emails were “user at location” in the first place. However in the context of other computerise hierarchies it is the odd one out:

      “http://subdomain.domain.tld/major/minor.minorest” – there is a order reversal between domain and path.

      Exactly the same occurs with scp parameters: “scp minor.ext subdomain.domain.tld:/major/minor.minorest”

      • Anonymous says:

        > it’s the basis of why emails were “user at location” in the first place

        That and to allow for the natural interpretation of ‘at’. If email addresses had used the same direction of URLs, they almost certainly wouldn’t have used ‘@’. For example, they might have used ‘!’; in fact, they did. :)

    • dm says:

      In English speaking countries. Not in some others.

    • Drew Goodwin says:

      Like URLs, I see addresses written from specific to in-specific as being backwards because of how they must be routed to reach their destination. Take your example. If I were to mail you a package, it would first be routed to Great Britain, then to London, Then to that specific zip code, to your street, and finally to your house. That’s exactly the opposite order of how it is read.

      The same often true for dates, but in terms of order of magnitude.

      The backwards nature of these things has implications beyond just how they are read. For example, such data often has to be reformatted for solving problems such as sorting. In my studies I have also found some cultural correlations as well. Consider Japanese society, which writes both addresses and dates in order of decreasing magnitude or specificity, and which also happens to have a collectivistic culture with smaller emphasis on the individual.

      • Chris says:

        Perhaps apropos of nothing, but pretty much every programmer I know also prefer dates in “least->most specific” notation: 04-04-2013 is ambiguous (if you think it’s not, your thinking just might be a product of your locale); 2013-04-04 is definitely favoured (I could find no locale that uses YYYY/-DD/-MM).

      • The Dread Pirate Roberts says:

        I think it is far more likely that this is due to the way that routing information works. Especially if you make the, quite reasonable, assumption that most information is likely to be local.

        Both the post and internet data goes to a local “exchange” first, and if it is possible to determine where to send it locally, that is done. If not, send it “up the chain” to a less specific exchange which can pass it back to the appropriate local environment.

        Why should mail first go to the continental mail exchange centre to be sorted by continent, then country, then state, etc when all you really wanted to do was send a nice letter to Mr Hill down Frenchman’s lane on the other side of your local village?

        That part of things has been so long-solved that most of us in the industry don’t have to worry about it. We are left with issues of sorting addresses.

        Similarly with dates…it’s a human thing. When talking to someone and they ask “When are you leaving for Antartica?” you may answer “On the 25th”. That’s enough information, a lot of the time. Not many of us are going to then ask “But what year? What month?”. Of course, it’s not enough for a context-less program so we complain about having to reverse the date, or add extra context.

        These are no longer big problems.

    • Guni Gugu says:

      “Addresses are written from the most specific to the most unspecific since time immemorial”

      Except for time itself:
      01.02.2013 – which should read 1st of February 2013,
      except in the US it reads January 2nd 2013, which is nuts…

    • Blecki says:

      They actually aren’t. Postal addresses in (most) English-speaking nations mix it up too. They go name, number, street, local, state or province, postal code. Except… that postal code is less general than the province, and it’s usually redundant.

  2. Internet User says:

    Thanks for sharing such a valuable information.

  3. Nitpicker says:

    This is a clearly a byproduct of the right-to-left language of the designers of these systems.
    You meant left-to-right.

  4. Han says:

    Your link to RFC 822 is broken (missing a colon ‘:’).

  5. Michael Madden says:

    As an illustration of how this choice was somewhat arbitrary, it’s worth noting that at around the same time, JANET in the UK was using the opposite convention: http://en.m.wikipedia.org/wiki/JANET_NRS

  6. Mike Leach says:

    Java Developers staring at com.domain.specific namespaces are somewhat preconditioned to examining this discrepancy.

  7. Colin says:

    Embarrassed to say as soon as RFC comes up I start to go a little cross-eyed…

  8. z says:

    No offense, but this is a stupid, uninformed article. DNS delegations are progressive, at no time were Cerf@ARPA.ISI or ARPA.CERF@ISI contemplated, and I think you know that, because of your “Here were some options they may have thought of:” caveat.

    • david says:

      From the RFC:

      These basically involved adding more hierarchical name information either to the right or the left of the @, with the “higher order” portion rightmost or leftmost.

  9. Sopol says:

    Who gives a flying f*ck

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>