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 plurality 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; when the data or resource is not found in the local locality domain, searching one or more locality domains in a lowest cluster in the hierarchy in which the peer's locality domains is a member by using locality domain identifiers in the lowest ring to identify respective peer devices and sending search request comprising the identifier of the data or resource to the identified peer devices; when one of the 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.