A peer (110A, 110B, 150A, 150B) for a peer-to-peer communication system, the peer being a computing device comprising: a first communication component for sending and receiving messages using at least one of a plurality of messaging providers (120, 160, 220A, 220B, 220C, 220D), each of the plurality of messaging providers operating at least a portion of a network infrastructure to provide a messaging service to one or more addressees; a first data store (242, 300) comprising a plurality of entries (310A, 310B, 310C), each entry comprising a field for storing an indication of an addressee, a field for storing an indication of a messaging provider of the plurality of messaging providers, and an address associated with the addressee in the indicated messaging provider; a first routing component for associating an application (210A, 210B, 210C, 210D) with a message received using one of the plurality of messaging providers and providing the message to the associated application; and a first programming interface through which an application may specify a communication related command that causes an interaction between the first communication component and the first data store for performing a communication function relating to the transmission of data, wherein the communication related command identifies an intended addressee, the interaction between the first communication component and the first data store comprises retrieving from the first data store routing information identifying at least one messaging provider and at least one address associated with the intended addressee in the at least one messaging provider, and the identification of the intended addressee does not include an address used by any of the plurality of message providers. a first communication component for sending and receiving messages using at least one of a plurality of messaging providers (120, 160, 220A, 220B, 220C, 220D), each of the plurality of messaging providers operating at least a portion of a network infrastructure to provide a messaging service to one or more addressees; a first data store (242, 300) comprising a plurality of entries (310A, 310B, 310C), each entry comprising a field for storing an indication of an addressee, a field for storing an indication of a messaging provider of the plurality of messaging providers, and an address associated with the addressee in the indicated messaging provider; a first routing component for associating an application (210A, 210B, 210C, 210D) with a message received using one of the plurality of messaging providers and providing the message to the associated application; and a first programming interface through which an application may specify a communication related command that causes an interaction between the first communication component and the first data store for performing a communication function relating to the transmission of data, wherein the communication related command identifies an intended addressee, the interaction between the first communication component and the first data store comprises retrieving from the first data store routing information identifying at least one messaging provider and at least one address associated with the intended addressee in the at least one messaging provider, and the identification of the intended addressee does not include an address used by any of the plurality of message providers.