Understanding DNS: The First Layer of System Design