The Blocks Extensible Exchange Protocol (BEEP) is a framework for creating network application protocols. BEEP includes building blocks like framing, pipelining, multiplexing, reporting and authentication for connection and message-oriented peer-to-peer (P2P) protocols with support of asynchronous full-duplex communication. Message syntax and semantics is defined with BEEP profiles associated to one or more BEEP channels, where each channel is a full-duplex pipe. A framing-mechanism enables simultaneous and independent communication between peers. BEEP is defined in independently from the underlying transport mechanism. The mapping of BEEP onto a particular transport service is defined in a separate series of documents. Overview Profiles, channels and a framing mechanism are used in BEEP to exchange different kinds of messages. Only content type and encoding are defaulted by the specification leaving the full flexibility of using a binary or textual format open to the protocol designer. Profiles define the functionality of the protocol and the message syntax and semantics. Channels are full-duplex pipes connected to a particular profile. Messages sent through different channels are independent from each other (asynchronous). Multiple channels can use the same profile through one connection. BEEP also includes TLS for encryption and SASL for authentication. History In 1998 Marshall T. Rose, who also worked on the POP3, SMTP, and SNMP protocols, designed the BXXP protocol and subsequently handed it over to the Internet Engineering Task Force (IETF) workgroup in summer 2000. In 2001 the IETF published BEEP () and BEEP on TCP () with some enhancements to BXXP. The three most notable are: Using application/octet-stream as default "Content-Type". Support multi-reply for messages. Changing the name from BXXP to BEEP BEEP Session To start a BEEP session, an initiating peer connects to the listening peer. Both peers are sending a positive reply containing a greeting element immediately and simultaneously. The greeting contains up to three different elements: features optional channel management profile feature tokens supported by the peer. localize optional preferred language tags for reporting and messages. profile profiles supported by the peer. Example greeting and answer: L: <wait for incoming connection> I: <open connection> L: RPY 0 0 . 0 110 L: Content-Type: application/beep+xml L: L: <greeting> L: <profile uri='http://iana.org/beep/TLS' /> L: </greeting> L: END I: RPY 0 0 . 0 52 I: Content-Type: application/beep+xml I: I: <greeting /> I: END Profiles Profiles define the syntax and semantics of messages and the protocol functionality based on BEEP. A single BEEP session can