Saturday, November 1, 2008

DNS Intro

Paul V. Mockapetris, Kevin J. Dunlap, "Development of the Domain Name System"

Basic design assumptions
  • provide at least all the same information as hosts.txt
  • allow the database to be maintained in a distributed manner
  • no obvious size limits for names, name components, data associated with a name, etc.
  • interoperate across the DARPA Internet and in as many other environments as possible
  • tolerable performance
  • Lean service versus general distributed database
Design
  • Hierarchical organization (zones) and namespace
  • Caching, negative caching
  • Resource Record: Type, Class, TTL, data of variable types
  • servers and resolvers
  • root servers (with rates of 1 query/sec in 1988)
  • datagram (UDP) access
Things I was surprised about
  • Pre-DNS: hosts.txt was used for quiet a long time
  • it took time to convert more hosts from pre-DNS hosts.txt to DNS and delegate domains
  • the importance of Berkeley UNIX's bind
  • applications had to be modified to handle transient failures when using DNS instead of hosts.txt lookups
  • DNS was intended to be far more general to lookup up names of anything. Today it is used almost exclusively to map "hostname <-> IP (+MX)"
  • in the early days, people controling a domain didn't necessarily have the expertise to configure DNS correctly (and I thought in the good old days, only people who knew what they were doing had access to the Internet)
  • RR had Class field which would allow different namespaces for DARPA net, ISO directory service, ...

No comments: