1. A method performed by a computing device comprising a peer to search for other peers comprising computing devices on a network that have data or provide resources, comprised of a hierarchy of locality domains through which the peers connect to the network, each locality domain, peer, and data/resource having a respective unique identifier, and the peers cooperatively storing data or providing resources such that the organization of the peer structure is at the level of locality domains and which form a hierarchy based on network proximity, wherein the search for data and resources happens at the level of locality domains according to the method, which comprises: searching the peer's local locality domain for a data or resource based on the data or resource's identifier, wherein the data or resource is not found in the local locality domain, and in response to the searching, receiving from other peers in the locality domain a plurality of target locality domain identifiers of respective different target locality domains in a lowest cluster in which the peer's locality domain is a member, wherein the peers of a locality domain perform maintenance functions to enable the locality domain to participate in the hierarchy of clusters and the peers of the locality domain cooperate to implement a distributed hash table (DHT) on the locality domain, wherein each locality domain implements its own DHT that is separate from the DHTs of the other locality domains; searching the target locality domains by using the target locality domain identifiers in a lowest ring to identify respective target peer devices and sending search requests comprising the identifier of the data or resource to the identified peer devices to the identified target peer devices, wherein the requests are sent sequentially in an order according to network proximity to the peer such that the target locality domains are searched in order of decreasing network proximity to the peer; when one of the target locality domains in the lowest cluster has a peer with indicia of a target locality domain where the data or resource is available, receiving an identifier of the target locality domain from one of the peers of such locality domain; and transmitting a request to a peer on the target locality domain of the received locality domain identifier, the request comprising the identifier of the data or resource and retrieving the data or resource from the peer device corresponding to the received identifier.