The success of the peer-to-peer idea has created a huge diversity of approaches. A wide variety of structures and architectures have been proposed. The terminology and abstractions used, however, are quite confusing since the P2P paradigm has interested researcher form various research communities (networking, databases, graph theory, biology, etc,) each using different abstractions and models. Still, the essential properties and abstraction of P2P systems are the same. In this paper we propose a reference architecture for P2P systems which is capable of modeling all existing P2P approaches. Such reference architecture will allow researchers to assess the properties of concrete systems and establishes a common vocabulary for scientific discussions. In a second step the model can be applied for defining a standardized API to make P2P systems interoperable.