At the heart of the Internet revolution lies the ability of heterogeneous computer systems to communicate seamlessly. Communication was certainly possible before the arrival of the Net, but typically within isolated families of hardware. The Internet's great achievement was to allow any hardware to communicate with any other through the platform-independent TCP/IP (Transmission Control Protocol/Internet Protocol) standard. In other words, the Internet is all about protocols - the rules for communicating.
Naturally enough, the extraordinary success of the Internet's core protocols - TCP/IP for basic routeing, HTTP (Hypertext Transport Protocol) for Web transport and SMTP (Simple Mail Transfer Protocol) for e-mail - has proved rather too seductive to programmers creating new services that run across the Internet. As a result, we have seen the basic protocols - particularly HTTP - forced into all kinds of strange usages for which they are frankly rather inappropriate.
But there are many situations where HTTP's virtues of familiarity and simplicity are outweighed by the contortions required to shoehorn it into an entirely different kind of role. In such cases it makes sense to come up with a way of communicating that more closely fits the needs of the particular situation.
Writing such a protocol from scratch is not for the faint-hearted. Fortunately, it is also generally unnecessary thanks to Beep (Blocks Extensible Exchange Protocol). Originally known as BXXP, Beep is a set of building blocks for creating customised protocols without the hard work this generally implies.
Beep's home page is the best place to start for all things Beepish, and also has some information about Beepcore.org. There is a useful Q&A with the inventor of Beep, the inimitable Marshall Rose. There are several introductions to Beep as well as a presentation by Rose on the subject.
Also worth noting is a book by Rose, published by O'Reilly. There is a sample chapter online which gives a little of the unique flavour of both the book and its author. A page of links to other documents and specifications includes three RFCs: RFC 3117, which provides some useful background information on Beep and on the general area of designing protocols; RFC 3080, which is the main Beep standard; and RFC 3081, which explains how Beep can run over TCP/IP.
Running Beep over TCP/IP is not the only possibility. For example, Beep will also work over other protocols, such as SCTP (Stream Control Transmission Protocol), a reliable transport protocol specifically designed to allow the transport of PSTN (public switched telephone network) signalling messages across IP networks. Also worth noting are the mailing list and archives for the Beep community.
There is a list of Beep projects and products, as well as an impressive number of Beep developers. One interesting application - and an area where it may start entering the mainstream - is for Web services, using Beep as the protocol for sending messages written in Soap (Simple Object Access Protocol).
This was first published in July 2002