DHTs form an infrastructure that can be used to build more complex services, such as distributed file systems, peer-to-peer file sharing and content distribution systems, cooperative web caching, multicast, anycast, domain name services, and instant messaging. Applications that use DHTs include BitTorrent and eMule.
The research to use DHTs began and was spurred on by the creation of P2P networks such as Napster, Gnutella and Freenet. These services used resources distributed across the Internet to provide a single useful application. More specifically, they took advantage of the increased Bandwidth and hard disk capacity to provide a file sharing service. These services had a different approach as to how they found data that was contained within a peer. Napster utilized a central index server where each node would broadcast its list of locally held files everytime it joined the network. This central component left the system vulnerable to attacks and eventually lawsuits. Gnutella used a flooding query model where each search would broadcast a message to every machine on the network. This eliminated the possibility of a single point of failure, but was not as efficient. Freenet used a heuristic key based routing scheme where each file was associated with a key, then files and similar keys were grouped together on similar nodes.
DHTs contain the following characteristics:
- Decentralization - Each node collectively forms the system without any central coordination.
- Scalability - The system should function efficiently not matter how many new nodes join.
- Fault tolerance - The system should be reliable even when nodes join, leave or fail.