BEEP (an acronym for Blocks Extensible Exchange Protocol) is a framework for creating network application protocols. BEEP is intended to abstract out the common features that have traditionally been duplicated in each protocol implementation, including but not limited to:
- framing messages;
- encoding data;
- negotiating capabilities;
- negotiating connection release;
- correlating requests and responses;
- handling multiple outstanding requests;
- handling multiple asynchronous requests; and
- providing integrated and modular security.
BEEP typically runs on top of TCP and allows the exchange of messages over a channel. Unlike HTTP (and similar protocols), either end of the connection can communicate at any time, with messages being interleaved easily. BEEP also includes facilities for encryption and authentication and is highly extensible.
Beep also incorporates the use of XML during channel management; "BEEP takes care of protocol infrastructure, [and] XML takes care of data structuring." XML has also been used to encode messages, meaning "any existing messaging standard defined in terms of XML documents has a reasonably straightforward mapping into a BEEP profile." However, BEEP profiles aren't required to use XML for encoding, meaning the use of XML could technically be limited to the beginning of a session.
BEEP includes a number of built-in features, including an initial handshake protocol, authentication, security, and error handling. Using BEEP, one can create new protocols for a variety of applications, including instant messaging, file transfer, content syndication, and network management.
BEEP was originally designed in 1999/2000 by Marshall Rose, the author of protocols such as POP3, SMTP, and SNMP. The IETF (Internet Engineering Task Force) took interest in the protocol in the spring of 2000, creating a working group to standardize the protocol. However, at that time BEEP was known as BXXP:
At the time, the letter "X" was pretty much de rigueur in any new technology. However, "X" isn't the first letter in "Extensible" and "Exchange," and further, BEEP has much more comic potential. So the IETF working group on BXXP renamed it BEEP.
Requests for comments (RFCs) were generated in early 2001 for the protocol and its mapping onto TCP.
Though a few high-profile applications of BEEP were implemented — including the 2004 release of Apple's XGrid, a distributed computing protocol that allows networked computers to contribute to a single task — in general the BEEP protocol never saw major adoption.
- BEEP Community Site
- Vortex Library, a C implementation library of BEEP
- IETF RFC #3080: The Blocks Extensible Exchange Protocol Core
- IETF RFC #3081: Mapping the BEEP Core onto TCP
- IETF RFC #3117: On the Design of Application Protocols, design considerations of the original BXXP protocol
An element or two of this article is reused from the Wikipedia article.
- Marsan, Carolyn Duffy (26 June 2000). "'HTTP on steroids' to ease protocol work". Network World Fusion. Archived from the original on 02 April 2012. https://web.archive.org/web/20120402165038/http://www.networkworld.com/news/2000/0626bxxp.html. Retrieved 18 August 2014.
- "BEEP: General Questions". BEEPCore.org. 03 February 2009. http://www.beepcore.org/faq.html. Retrieved 18 August 2014.
- Rose, Marshall (June 2002). "An Overview of BEEP". The Internet Protocol Journal 5 (2). http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_5-2/beep.html. Retrieved 18 August 2014.
- Dumbill, Edd (01 December 2001). "XML Watch: Bird's-eye BEEP". developerWorks. IBM. Archived from the original on 28 February 2009. https://web.archive.org/web/20090228022105/http://ibm.com/developerworks/webservices/library/x-beep. Retrieved 18 August 2014.
- "RFC 3080: The Blocks Extensible Exchange Protocol Core". IETF. March 2001. http://www.ietf.org/rfc/rfc3080.txt?number=3080. Retrieved 19 August 2014.
- Côté, Daniel (07 January 2004). "XGrid". Simple. Archived from the original on 21 February 2009. https://web.archive.org/web/20090221012530/http://unu.novajo.ca/simple/archives/000022.html. Retrieved 19 August 2014.
- Münch, Robert M. (04 January 2013). "D based BEEP library?". D Programming Language Discussion. Archived from the original on 19 August 2014. https://web.archive.org/web/20140819170619/http://firstname.lastname@example.org. Retrieved 19 August 2014.