Thanks for the links Jack. I think if people looked into DNS protocalls they could build a very robust network without servers, or it'd be a good start anyway. This document was particularly informative:
Keeping track of names and information: the domain system. If you could figure out to organize clients into different domains then a domain service could operate in the background to tell each node how to contact every other node.