 |
It's been standardized by the Internet Engineering Task Force (IETF), the so-called "governing body" for Internet
protocols.
|
 |
There are open source implementations available in different languages.
|
 |
There's a community of developers who are clueful.
|
 |
It is familiar.
|
 |
It is ubiquitous.
|
 |
It has a simple request/response model.
|
 |
It usually works through firewalls.
|
 |
When you deploy your protocol in different environments, you may have different security requirements.
|
 |
Even in the same environment, security requirements change over time.
|
 |
Framing messages
|
 |
Encoding data
|
 |
Negotiating capabilities (versions and options)
|
 |
Negotiating connection release
|
 |
Correlating requests and responses
|
 |
Handling multiple outstanding requests (pipelining)
|
 |
Handling multiple asynchronous requests (multiplexing)
|
 |
Providing integrated and modular security
|
 |
Integrating all these things together into a single, coherent framework
|
 |
BEEP's inner mechanisms (for example, framing) are pretty light-weight, so you don't incur a lot of overhead using them
(even if you don't use all the functionality they provide).
|
 |
BEEP's outer mechanisms (for example, encryption) are all controlled via bilateral negotiation, so you can decide exactly
what you want to get and pay for.
|
 |
Server push or client pull
|
 |
Synchronous (interactive) or asynchronous (batch)
|
 |
Time-assured or time-insensitive
|
 |
Best-effort or reliable
|
 |
Stateful or stateless
|
 |
The World Wide Web is a pull, synchronous, time-insensitive, reliable, stateless service.
|
 |
Internet mail is a push, asynchronous, time-insensitive, best-effort, stateless service.
|
 |
There's lots of tools (libraries, servers, etc.) to choose from.
|
 |
It's easy to prototype stuff.
|
 |
There's already a security model.
|
 |
You can traverse firewalls pretty easily.
|
 |
Each session consists of a single request/response exchange.
|
 |
The computer that initiates the session is also the one that initiates the request.
|
 |
In terms of stateful behavior, the server computer has to be able to keep track of session state across multiple connections,
imposing a significant burden both on the correctness and implementation of the protocol (for example, to properly handle
time-outs).
|
 |
In terms of performance, TCP isn't designed for dealing with back-to-back connections—there's a fair amount of
overhead and latency involved in establishing a connection. This is also true for the security protocols that layer on top of
TCP.
|
 |
Each session consists of one or more request/response exchanges.
|
 |
Either computer can initiate requests or notifications.
|
 |
It's connection-oriented.
|
 |
Identify the common domain-independent problems.
|
 |
Determine the best solution for each problem.
|
 |
Integrate the solutions into a consistent framework.
|
 |
Declare victory.
|
 |
News about BEEP meetings and events
|
 |
Information about BEEP projects, programmers, and consultants
|
 |
Information about beepcore (open source) and commercial software
|
 |
BEEP-related RFCs, Internet-Drafts, and whitepapers
|