Glossary for Peer-to-Peer

For the Peer-to-Peer Working Group (P2PWG)


This is a proposal from several members of the working group. It reflects our first pass at gathering the important terms, and attempting to define them. The purpose of this glossary is to help in communications between the members, where difficulties may arise from differing usages and understandings of some critical terms.


The criteria for deciding on which terms to include in the glossary:

1.     The term is fundamental to P2P, and commonly used by P2P developers.

2.     The term is known to be used in more than one fashion

For this draft we have created a section for terms that are used and needed for P2P, but may not need to be defined as they are either being used in a consistent manner, or their meaning should be clear from the context. We kept the list as members may wish to bring some of these discarded terms back into the main list.

This document is work-in-progress. Please give us your feedback regarding the selection criteria, the use of examples. Please tell us about omissions and further references.

Not all the definitions follow a consistent format. The grammar is, at times, somewhat sloppy. All these are to be fixed later, once the content is agreed upon.

We suggest a list of references for other definitions.


·       Techencyclopedia from TechWeb –

·       IT-specific encyclopedia from –

·       Peer-to-Peer: Harnessing the Power of Disruptive Technologies, Edited by Andy Oram, O’Reilly & Associates, 2001.

·       Glossary listed on the O’Reilly’s site:

·       Add here a few refs. From W3C RFC docs., etc.

Terms and Definitions (sorted alphabetically)



Access Control

Mechanism for granting controlled access to another user to one’s own resources. These resources can be processors, storage, files, peripheral devices, or even bandwidth. Access control includes setting permissions and level of access, monitoring, and terminating the external access.

Example:  locking of a file, to prevent simultaneous access and possible modification by multiple agents.

Access control list (ACL): A set of data associated with shared resources that defines the permissions that users and/or groups have for accessing it.

1-copy serializability

A consistency model where no user can observe even temporary inconsistencies caused by multiple users accessing and updating data on multiple replicas.


A software entity situated within and a part of an environment that senses that environment and acts on it, over time, as programmed. Agents exhibit autonomy – the ability to act without human interface, and cooperation with other agents or other software entities. An agent may be static or mobile. It can be reactive or deliberate. Agents can perform one or more functions such as collaborate, interface, collect information, watch for events, and more. When an agent can learn from its own experience it is often referred to as a smart agent

Mobile agents are of special interest to P2P. A mobile agent is an agent that moves, or can move, through a network in order to perform a given task on behalf of a user.  Example: an agent that performs a distributed search, per search parameters provided by the user. 

The terms “intelligent agent” and “bot” are often used synonymously with “agent”.

[alternate definition:]

An intelligent software process that can be configured to respond automatically when the circumstance it is monitoring changes.

Agent, Intelligent

Used synonymously with “agent”.


The quality of not being identifiable.

In the context of P2P there are a number of anonymity types (from the Free Haven chapter in the P2P O’Reilly book):

Author anonymity: The author cannot be linked to a document

Publisher anonymity: The publisher of a document cannot be identified

Reader anonymity: The reader of a document cannot be identified. This is a privacy attribute.

Server anonymity: The system that serves a document cannot be identified.

Document anonymity: A server does not know which document it is storing.

Query anonymity: The server cannot tell which document it is serving to satisfy a request.

Partial anonymity: When a search for an identity can be narrowed down to a “set of suspects”, but no further.

Autonomy, Local

The level of control that can be exercised by the owner of a shared resource. In many cases the term implies being the final authority of what use is made of the resource, and when. It also implies the ability to establish and enforce local policies.


Naming and binding is one of the most fundamental issues in distributed systems.  A binding maps a “name” to another name or to a lower level address. Binding can occur at many different times – called the bind time. Binding can occur when a program is written, when for example the programmer might specify a hard-wired address. Binding can occur at compile time, at link time, at load time, or dynamically each time an invocation on some named entity is performed. Delaying binding typically provides greater flexibility at greater cost.


Used synonymously with “agent”.


Caching, in the P2P sense, is the practice of placing data that is requested often closer to the requestor. Caching is coherent if all copies of the data are updated when any individual copy is changed. Multiple caches of the same data may be created, or a single cache can serve multiple requestors.


Clerver is synonymous to a node that is peer; i.e., it has both client and server functionality.


A role in a network-computing task, in which a client node requests a service that can be provided by another (server) node. A client node can neither offer nor respond to requests for services.  The term “client” is also sometimes applied to a node that can operate in the client role (e.g. a desktop PC).


A computing model in which any of a collection of “client” nodes may request and obtain services from a “server” node.  Clients can only consume services.  Servers exist to provide services, but they can also consume services.  Such nodes may have exceptional processing capacity, or specialized capabilities.


An application that consists of a collection of discrete capabilities, all of which support work done collaboratively by a group of individuals.  Collaboration tools include the ability to distribute information and jointly modify information in a way that ensures that all participants view the same information as it is modified. Collaboration also typically includes calendaring, and real-time communication capabilities, such as voice-over-Internet and instant messaging. Collaboration is often, but need not always be, synchronous.


The property through which a node is physically attached to, and having an active communication pathway into, a network.  The node’s physical connection may be wired or wireless.  The logical connection establishes an identity for the node on the network.

There are three categories of connectivity:

A static connection is permanent, so that the connected node is always present and available on the network, with a permanently-assigned and valid network identity.

In an intermittent connection, a node may not always be attached to the network, either because of periods of physical disconnection, or because the connection is not always kept active, perhaps in spite of constant physical connection.  “Roaming” notebook computers or hand-held devices exemplify this type of connectivity.

In a limited-connectivity connection, an attached node has access to only certain portions of an extended network.  These limitations can be imposed by network gateway or address-mapping devices, such as firewalls or NATs.

Control Node or Coordinator

A network node that provides control information to a collection of peer nodes that are performing a distributed computing or resource-sharing task.  That information may include directory services, task-allocation and data-distribution services, etc.  The control node may not itself participate in the actual execution of the subject computing task.

Data Partition

The process of dividing the data associated with a computing task into sub-portions, which can then be distributed to a collection of peer nodes for processing.  Data partitioning is normally accompanied by task partitioning, which provides participating peers with the programs needed to process the partitioned data.  Various partitioning metrics and algorithms may be used, typically by a control node that performs the partitioning and task distribution.


A directory, in the P2P sense, is a software entity that maintains information about the location, attributes and accessibility-state of distributed resources, such as files or services available from each network node. It is capable of tracking the overall contents of a collection of nodes. The directory may be centralized (but with global scope), or portions of it may be distributed across multiple nodes.


The process of finding various nodes or resources available within a network of nodes. These resources may include hardware (e.g. disk-storage space, peripheral devices), software (e.g. Web services, directory services, etc.) or users.  Discovery may be local (i.e., identification of all hardware resources attached to a node), or it may be distributed (i.e., finding the resources on multiple nodes such as the set of all printers attached to a network).

Distributed Computing

A computing model where a computation or its data or both are divided into smaller pieces and distributed across multiple nodes, and is executed in parallel on these nodes.

Distributed Computation

A computation that is divided into smaller pieces and distributed across multiple nodes, and is executed in parallel on these nodes.

Edge Services (also File-Staging)

A service that performs caching to nodes at the edge of the net. The facility of making data available near to a requesting node by copying the data onto a peer or a neighbor server [cac1]  .

[alternate definition:]

A capability for the dissemination of data to nearby point(s) of consumption.  The associated data transmission is unidirectional, from data-source node to consumer node(s).  This capability eliminates or reduces the need for multiple transmissions of the data, resulting in more-efficient use of network bandwidth.  There are 2 types of edge-services:

1)     “Streaming” edge-services, which involve transmission of latency-sensitive data (e.g. multimedia content streams).

Non-streaming edge-services, which involve transmission of non-time-sensitive information (e.g. large corporate training files).

Event Notification

Mechanism that allows the detection of specified events within a node or in a network of nodes, and notification of occurrence of those events to a set of subscriber resources (e.g. exception notification to processor, presence notification of a buddy in an instant messaging system).  An event notification can be distributed where the notification propagates to a resource located on a different node.

File Sharing

File sharing, in the P2P sense, came to mean the transfer of a copy of the file.

The traditional definition of file sharing is that two or more different users can access (read and/or modify) the same file – typically the same single instance of a file. This is a capability a typical shared distributed file system supports.

Note:  Napster is a popular file sharing application where people share and copy MP3 files with each other.


See “Node”


The ability of two or more hardware devices or two or more software entities to work together without needing to know the implementation details at each end point.

Location Independence

The ability of an entity (an entity here is used in the most generic sense referring to both users and software modules) to move within the network without loss of its functionality and or access to its resources. As an example consider the use of commonly used web based e-mail systems like Yahoo and Hotmail. Access for the users (a user is the entity which has location independence in this context) e-mail (resource) is available from a variety of access points (Internet Connected Home PC, Internet Connected Airport Kiosk, Internet connected  Office PC) giving the user freedom of movement.

Location Transparency

The ability of accessing a resource (a resource is used here in the most generic sense, it could be an object, file etc) at the application level using its qualified name without direct knowledge of its actual physical location within the network. The physical location here refers to the network address of the resource  (example: In an IP network this could refer to the IP address and the port number for the service offering access to that resource). By definition, it implies that resources could be mobile within the network and their movement within the network still permits access to that resource using its qualified name.

On numerous occasions people use the term Location Independence for this definition of location transparency.

[alternate definition:]

Given the name of an object (file, process, stream) the user (including programmer) of the name does not necessarily know where the object is located. Often the user may find out – but the name contains no location information. Thus, the name must be bound to an actual location at some point (see “binding”).

Migration Transparency

Given the name of an object (file, process, stream) the user (including programmer) of the name does not necessarily know where the object is located, further the object may move, possibly while the name is in use.


A convention for naming resources uniquely.  In general, a namespace generates an infinite number of names, of which only a finite subset are ever in use. For example, the set of all possible fully qualified domain names is infinite; but only particular names within the space, such as, are assigned to particular resources.

The scope of a namespace refers to the set of entities within which names are expected to be unique.  For example, the set of possible California license-plate numbers is one namespace; Nevada's is another.  The scope of each namespace is the set of vehicles registered in the state. Two cars can have the same license-plate number if they are registered in different states.


A computing device residing on a network.  Nodes may be general-purpose computers, or they may be specialized to provide particular services or capabilities (e.g. a storage node or control node).  Note the term computing device is used in the most generic sense in that a node can range from a multi processor server to embedded systems. 


Object-based refers to a system in which objects can be selected - that is, individually identified -- and manipulated, but does not necessarily imply object-oriented notions of encapsulation of code and data. In peer-to-peer systems, objects can include processors, files, or specific services. An object-oriented programming language can be used to build an object-based system.


A network node that can act as a client or a server, with or without centralized control, and with or without continuous connectivity. The term 'peer' can apply to a wide range of device types, including small handhelds and powerful server-class machines that are closely managed.

[alternate definition:]

A peer can be anything that will talk to another peer using some protocol that both understand. A peer could be PDA, a desktop Sun, or a supercomputer such as an IBM SP-3. For some a peer is always a piece of hardware, for others it is a software component on a piece of hardware, and there may be many peers per physical hardware device.

[alternate definition:]

A device that is capable of both initiating communications and accepting communications initiated elsewhere.


A computing model in which peer nodes collaboratively perform a computing task.  In addition to that defining property, these two characteristics are typical of peer-to-peer systems in varying degrees: avoidance of central control and the use of edge resources.  With reference to the first characteristic, a pure peer-to-peer system is one that completely eliminates reliance on a centralized control node.  A system that uses a centralized node (for support such as directory or control services) is described by terms such as hybrid, mediated, or brokered peer-to-peer.


Presence services or systems are typically associated with protocols or discovery processes by which state changes of an object, service, or user are exchanged [cac2]  . Entities of a presence service can be partitioned into those that provide state and those that receive state, usually through a registration or polling process. The most common terminology use is with respect to instant messaging systems where a presence service provides the means for users to determine the on-line(accepting IM’s) or off-line (not accepting IM’s) status of other users.


Network-resident services or capabilities.  These may include hardware (e.g. CPU cycles, disk-storage space, peripheral devices) or software (e.g. Web services, directory services, etc.).  Resources may be low-level (e.g. hardware access) or high-level (e.g. access to complex applications).  A resource may have a global identity, or it may be addressable by qualification of the identity of its host peer (aka node).


A role in a network computing task, in which a (server) node provides a service requested by another (client) node.  The term “server” is also often applied to a node that can operate in the server role (e.g. a powerful, resource-rich “server” computer), or one that is physically secured and closely managed.


This term is synonymous with “resource-sharing”.

Sharing, Resource-

A means by which requesters can be allotted resources provided by one or more other nodes within a network. These resources can include disk-space, peripheral-device access, access to specific data-files, etc.  Resource-sharing is usually orchestrated by a centralized service registry/brokerage, which tracks resources provided by each participant node.  The registry/brokerage may allocate resources based on resource characteristics, or utilization data.

Cycle sharing: An application in which requesters can be allotted (typically unused) compute capacity provided by one or more nodes within a network. A registry/brokerage may assign work to a known collection of nodes, based on node attributes such as processor architecture, available memory, utilization data, and prior execution success history.

Storage sharing: Controlled sharing of the space on a storage device by multiple networked computing nodes. Storage capacity is typically presented through a file system interface.

Peripheral sharing: Peripheral sharing typically refers to allowing multiple nodes access to resources with I/O external to the computer network (e.g. cameras, microphones, printers, CD-burners, etc.). Such I/O devices often require more extensive access control capabilities, as well as location aware discovery and scheduling services.

Bandwidth sharing: A mechanism by which available bandwidth from one or more peer nodes is applied to network communication. The most common examples are in the area of content distribution (where a node relays content) or connection sharing (where a node provides access to a network to another node).

Site Autonomy

The state where the resource owner in a system determines the policies governing its use.

State, Central

A mechanism, often used by the gaming community, in which a file is used to give multiple nodes controlled access to shared information.  Such shared information may complement private information that a given node uses to execute its tasks.  Example:  global graphics, sound or game-state data that is provided by a game server to all of the (distributed) users of a multi-player game.

State, Distributed

Overall program state for a distributed application resides on a set of nodes.  Example: state of a particular user’s data, in a distributed multi-player game. In a distributed-gaming application, for example, the overall game state includes both the central state, and the distributed state information maintained by each participating player’s peer-node.

Sum of Services Architecture

An architecture based on a set of services that are separable from each other. The sum of these services provides the complete intended functionality.

Super Peer

A peer node that preferentially provides one or more services to a collection of peers.  While other peers may be capable of providing these same services, the super peer usually does so, because it has some uncommon or unique resource such as stable network connectivity and presence, unusually large memory or storage space, or high processing capacity.  In this role, the super peer fills a role analogous to that of a server in a traditional client/server architecture.  A common example of a super peer is a constantly connected node that serves as a persistent peer who that may offer high availability messaging services to intermittently connected peers.

Alternatively, a peer that provides additional services based on its configuration or role.

Task Partition

A facility that allows the division/partitioning of a task in such a way that the constituent parts can be executed using a collection of resources, with the overall results being acquired and assembled by the partitioning/distribution facility.  The partitioning may use resources that reside across a collection of nodes (e.g. CPU cycles, memory, disk-space, peripherals, data, etc.).

 Terms in Use - but not disputed, or understood from context

These are terms that are used by the P2P community, but we thought there is no confusion about their meaning, or that their meaning is always clear from the context.




A Microsoft project. See







Apache License


Apache Server


Binary Management

Binary management refers to system level management and transport of application and component executables. A system that provides binary management keeps track of executable versions, caches and transports them as necessary, and ensures that the latest version – or the appropriate version is used. A system that does not provide binary management requires a human (end user, system administrator) to explicitly copy application executables around using tools such as FTP and to ensure that the correct versions are in place everywhere. The lack of binary management facilities significantly increases the burden on system/application administrators and greatly increases the opportunities for version skew due to human error.


The time when is a name bound to a lower level name or an address. Examples include compile time, load time, first access, and each access.

Certifying Authority











Processing, computing resources or program-execution control that are delivered by a collection of multiple networked nodes.





Dynamic DNS


Dynamic Library




Embedded System





Any object that has an identity and is addressable without qualification.  An entity (e.g. a peer or a user) may have multiple identities.




An extensible system can be changed to have new behaviors and semantics without heroic effort.


A failure of the system occurs when the behavior of the system deviates from its specification (system fails when it cannot provide the desired service)

An error is the part of the system state which can lead to subsequent failure

The cause of an error is a fault

Fault Classes


Component halts or loses its internal state (no incorrect state transitions taken)


Component does not respond to some input


Component responds too early or too late


Arbitrary behavior

Fault Detection

Determining that a fault has occurred. Typically the first step to resolving the problem.


A system is fault-tolerant if it can mask presence of faults in the system

In other words, a system is fault-tolerant if the system is consistent with its specification despite the failure of some of its components

File System, Distributed



A firewall is a network device that routes or forwards packets from one network to another after first checking whether the packets meet some criteria. For example, is the packet an http request? Is it TCP or UDP? Is it an ICMP? What port range is the destination? From what IP address does it come? Does byte 42 have a “?” in it?  Firewalls are used to prevent against some forms of attack.

A typical firewall allows only http traffic to/from any destination, and ssh connections from well known, and trusted IP addresses.

See for more information.


An application architecture in which low-level capabilities are integrated into (“buried” within) the application, without developer-accessible interfaces that allow access to those capabilities in isolation.  Such an application cannot easily be extended beyond whatever specific interfaces have been provided as part of the application definition/specification.  The capabilities used within such an application cannot easily be re-used in other applications.  The architecture of a framework-based application contrasts with the architecture of an infrastructure-based application.


An entity that includes and represents a set of entities within a given name-space.

GUI (Graphical User Interface)



A Microsoft project, part of .Net.





HTTP Tunneling



A descriptor for computing configurations or applications that use different computing models (e.g. “pure”, “mediated”, “client/server”) in different services or service layers.


A value, globally unique within a single name-space, that is associated with at most one entity.  Ideally, an identity is able to be generated locally, rather than only by a central “naming resource” (e.g. a Microsoft GUID).


An application architecture in which low-level capabilities are built in modular fashion, with standardized, well-documented interfaces.  The collection of those modular capabilities constitutes a low-level application “infrastructure” layer.  This arrangement allows application developers to easily “re-use” needed elements of those low-level capabilities in other applications.  The capabilities of an infrastructure-based application can be easily and relatively quickly extended beyond what is provided in current versions of that application.  The architecture of an infrastructure-based application contrasts with the architecture of a framework-based application.

Integrated Architecture



JXTA is a peer-to-peer set of services initially developed by Sun and subsequently open sourced. See




Information associated with an entity, through its identity (e.g. a fragment of XML).



Mobile Access



A name is a way to refer to something such as a file, a process, or a machine.  A name can be an address, e.g., 0x4454 or, a variable name, e.g., int X, or a string such /home/myfile. Names are abstractions and must be bound to address, either directly, or via a series of bindings via intermediate levels of names. Names are how transparencies such as location transparency are realized, for example, the string /home/myfile does not say where the file is located – what host, disk, track, or sector. That gives the system the freedom to move the file – or replicate it for that matter.


Network Address Translator. A NAT translates multiple internal IP addresses into a single external IP address, effectively multiplexing a single IP into many other IP addresses. Addresses managed by NAT’s are in the “non-routable” set, e.g., 10.X.X.X or 172.X.X.X. See also for more information.


One often speaks of the number of nines of an application or system. The number of nines relates to the availability of the system. Two nines, 99, means that in every one hundred hours the system is available for 99 hours. Three nines, 99.9, means that in one thousand hours the system is only not available for one hour. And so on.

N-Tier Architecture





Object-oriented is a term often used to refer to a programming methodology in which objects encapsulate code and data together.  Here the methods or functions used to query, set, and manipulate the data are bundled with the data.  Some methods are private and only callable by other methods in the object; some methods are public and provide interfaces into the object for external callers. In a pure approach, objects are treated as black boxes whose contents are manipulated only by the published methods. Besides encapsulation, object-oriented methodologies permit establishment of relationships between objects. For example, attribute inheritance. Objects can induce other objects to change state through method invocation, but each object is ultimately responsible for its own internal/local state changes.


Open Architecture


Open Source


Open Standard






Persistence, Global (State-)

A method for preserving given items of data or program-state for a specified lifetime.  That lifetime may exceed the duration during which the subject contents remain valid and available in their node of origin.


Used synonymously with “identity”.  Confirm.







Proxy Server


Public Key


Real-Time, Hard


Real-Time, Soft



Replication is the act of duplicating some data or computation. Replication is usually done for two reasons, availability and performance.

Replication is usually defined as either replication in space and replication in time. 

Replication in space means that at any given time there are multiple copies of the object. If one copy fails, other copies may be used. Alternatively, different copies may be used to get better performance, e.g., choose a closer copy, or a copy on a lightly loaded host. A special case of this is load managed stateless web servers.

Replication in time is usually only used for computations – if a computation fails, then it can be restarted using the same input data.

Of course one can replicate both in space and time for both availability and performance reasons. For example, a client could start three copies of a computation going and take the first available result, discarding the rest.






A scalable system or application can use one host, two hosts, a thousand hosts, or a million hosts. Scalability is best captured by the distributed systems principle – a system is scalable if “the amount of work required of any particular component must not be an increasing function of the number of nodes in the system”.

The bottom line is that as the system grows and adds hosts, devices, users, files, whatever, the there must be no component that becomes a bottleneck. This means that centralized schemes are not scalable.

Note: Scalability has a similar, but different meaning in the parallel processing world. There, an application is scalable if one can add processors without a loss of efficiency. There are two variants on this definition depending on whether the problem size is allowed to scale up with the number of processors.

Services, Aggregated

A process for building large, complex Web applications by utilizing services provided by various nodes in a network.  Each such node can provide its requested services by recursively obtaining services from other providers.  Providers can discover available providers through registry/brokerage services;  they can choose from the available providers;  and they can then contract with the chosen provider(s) for delivery of the needed service(s).

Services Contracting

Capability to request delivery of a service from a selected service provider.  This capability includes the ability to confirm commitment by the service provider, as well as the ability to track completion/delivery status by the service provider.

Services Registry/ Brokerage

Capability to gather information about a set of services available from various nodes across a network.  This information is intended to support the selection of service providers by a service requester.  The registry/brokerage is typically maintained in a centralized location (e.g. on a server).  The registry/brokerage may include the ability to identify the “best” available service provider, per “goodness” metrics supplied by the requester and/or registry/brokerage.



Synchronization, Distributed

Mechanism(s) to keep multiple copies of a given file, residing on different nodes, consistent with one another.  This is a cache-like mechanism that reflects changes to one copy of a file into all other copies.  Different synchronization policies are possible.





UI (User Interface)



The set of all entities defined by an architecture, or the set of all entities identified within a given name-space.

Virtual Machine




Revision History

From V002 to V003:

1.     Incorporate Scott’s definitions (#’s 27-33), as marked in P2P-Glossary-V002Mod0420Scott

2.     Added a draft definition of a generic “Agent” (# 2) advanced by Andy. (will add some types of agents)

From V003 to V004:

  1. Inserted Andy’s definitions for items 35-39. “editorial comments” (from Andy) are highlighted in blue.

From V004 to V005:

  1. Claude updated entries # 9-14.

2.     David updated entries # 1-2, 4-5, 7-8.

3.     Vijay updated entries # 22-26.

4.     Sharad updated entries # 15-20. Items 16, 17 were switched around.

From V005 to V006:

1.     Minor changes after the team’s 4/25 meeting. Front page, formatting, location- independence/transparency. Added “reputation” to the ‘discarded’ list (for consideration)

From V006 to V007:

  1. Update to definitions of Client, Client/Server, and Server

2.     Added table of terms from Andrew Grimshaw. To be integrated with the other two tables.

From V007 to V008:

1.     Consolidate A. Grimshaw’s terms into our two existing tables (for P2P-specific and general computing terms), then delete separate list for Grimshaw’s terms.

2.     Incorporate C. Cruz’s comments on V007 into V008.

From V008 to V009:

1.     Incorporate feedback from Tom Ngo.

2.     Incorporate additional information from Andrew Grimshaw.

3.     Edit and clean-up document.

Page: 5
  [cac1]   I don’t feel that this proposed definition captures all essential aspects of “edge-services”.  The issue isn’t just one of moving a copy of the needed data close to the consumer;  that’s “caching”.  It may not be necessary to store a copy in a node near the consumer.  For example, streaming edge-services may come from a real-time source.  I also think it’s useful to cite the two types of edge-services, since these impose different processing and communication requirements:  streaming vs. non-streaming.

Page: 8
  [cac2]   Maybe it’s me, but I find this definition hard-to-digest.  I think that “presence” has to do with only that portion of resource-state that’s associated with connection to network and/or ability to participate in communication with other network resources/entities.  Thus, I think that ”state changes” is too broad a notion, in this context.