application protocol
Click on the red underlined text to get to the source
... SMTP [1] is close to being the perfect application protocol: it
solves a large, important problem in a minimalist way. It's simple
enough for an entry-level implementation to fit on one or two screens
...
... oddities (e.g., SAML), the design is well conceived and the resulting
specification is well-written and largely self-contained. There is
very little about good application protocol design that you can't
learn by reading the SMTP specification.
...
... Unfortunately, there's one little problem: SMTP was originally
published in 1981 and since that time, a lot of application protocols
have been designed for the Internet, but there hasn't been a lot of
...
... have been designed for the Internet, but there hasn't been a lot of
reuse going on. You might expect this if the application protocols
were all radically different, but this isn't the case: most are
surprisingly similar in their functional behavior, even though the
...
... architecture, we realized that we needed to have a protocol
for exchanging Blocks. The conventional wisdom is that when you need
an application protocol, there are four ways to proceed:
1. find an existing exchange protocol that (more or less) does what
...
... The most appealing option is to find an existing protocol and use
that. (In other words, we'd rather "buy" than "make".) So, we did a
survey of many existing application protocols and found that none of
them were a good match for the semantics of the protocol we needed.
...
... semantics of the protocol we needed.
For example, most application protocols are oriented toward
client/server behavior, and emphasize the client ...
... stringent than most, could fit inside a framework suitable for a
large number of future application protocols. The trick is to avoid
the kitchen-sink approach. (Dave Clark has a saying: "One of the
roles ...
... ...if you're willing to make the problem small enough.
Our most important step is to limit the problem to application
protocols that exhibit certain features:
o they are connection-oriented ...
...
First, we're only going to consider connection-oriented application
protocols (e.g., those that work on top of TCP [7]). Another branch
...
... reliability service above the transport layer in the application
protocol itself.
Second, we're only going to consider message-oriented application
protocols ...
... application
protocol itself.
Second, we're only going to consider message-oriented application
protocols. A "message" -- in our lexicon -- is simply structured
data exchanged between loosely-coupled systems. Another branch in
the taxonomy ...
... one function.)
Finally, we're going to consider the needs of application protocols
that exchange messages asynchronously. The classic client/server
model ...
... client/server model is a proper subset of the
peer-to-peer model: it's acceptable for a particular application
protocol to dictate that the peer that establishes the connection
always acts as the client ...
...
The next step is to look at the tasks that an application protocol
must perform and how it goes about performing them. Although an
exhaustive exposition might identify a dozen (or so) areas, the ones
...
...
An application protocol needs a mechanism for conveying error
information between peers. The first formal method for doing this
...
... occur in the second and third positions.
Virtually all of the application protocols we've discussed thus far
use the three-digit reply codes, although there is less coordination
...
... use the three-digit reply codes, although there is less coordination
between the designers of different application protocols than most
would care to admit. (A variation on the theory of reply codes is
...
...
In addition to conveying a reply code, most application protocols
also send a textual diagnostic suitable for human, not machine,
consumption. (More accurately, the textual diagnostic is suitable
...
... accompanying positive responses, e.g., prayer wheels [39].
Regardless, some of the more modern application protocols include a
language localization parameter for the diagnostic text.
...
... o a reply code is used both to signal the outcome of an operation
and a change in the application protocol's state; and,
...
...
Few application protocols today allow independent exchanges over the
same connection. In fact, the more widely implemented approach is to
...
...
Perhaps for historical (or hysterical) reasons, most application
protocols don't do authentication. That is, they don't authenticate
...
... traffic and the other for secured traffic); in contrast, by
today's conventions, a server implementing an application protocol
that is specified as TLS-enabled (e.g., [24 ...
... Let's briefly compare the properties of the three main connection-
oriented application protocols in use today:
Mechanism ESMTP ...
...
When we design an application protocol, there are a few properties
that we should keep an eye on.
...
... A well-designed protocol is scalable.
Because few application protocols support asynchrony, a common trick
is for a program to open multiple simultaneous connections to a
...
... and the server view each connection as an independent instance of the
application protocol, and this causes problems.
In terms of the transport layer ...
... connection, the program still sees additional latency. To deal with
the fact that a lack of asynchrony in application protocols causes
implementors to make sloppy use of the transport layer ...
... more important than efficiency. Of course, if we were designing a
network protocol instead of an application protocol, then we'd make
the trade-offs using a razor with a different edge.
...
... A well-designed protocol is simple.
Here's a good rule of thumb: a poorly-designed application protocol
is one in which it is equally as "challenging" to do something basic
as it is to do something complex. Easy things should be easy to do
...
... pain should be proportional to the gain.
Another rule of thumb is that if an application protocol has two ways
of doing the exact same thing, then there's a problem somewhere in
the architecture ...
... of doing the exact same thing, then there's a problem somewhere in
the architecture underlying the design of the application protocol.
Hopefully, simple doesn't mean simple-minded ...
... A well-designed protocol is extensible.
As clever as application protocol designers are, there are likely to
be unforeseen problems that the application protocol will be asked to
...
... As clever as application protocol designers are, there are likely to
be unforeseen problems that the application protocol will be asked to
solve. So, it's important to provide the hooks that can be used to
add functionality or customize behavior. This means that the
...
... Finally, we get to the money shot: here's what we did.
We defined an application protocol framework called BXXP (the Blocks
eXtensible eXchange Protocol). The reason it's a "framework ...
... Blocks
eXtensible eXchange Protocol). The reason it's a "framework" instead
of an application protocol is that we provide all the mechanisms
discussed earlier without actually specifying the kind of messages
that get exchanged. So, when someone else needs an application
protocol ...
... application protocol is that we provide all the mechanisms
discussed earlier without actually specifying the kind of messages
that get exchanged. So, when someone else needs an application
protocol that requires connection-oriented, asynchronous
...
... interactions, they can start with BXXP. It's then their
responsibility to define the last 10% of the application protocol,
the part that does, as we say, "the useful work".
...
...
We purposefully excluded two things that are common to most
application protocols: naming and authorization.
...
... framework for naming things. To our
view, this remains a domain-specific problem for each application
protocol. Maybe URIs are appropriate in the context of a
...
... context of a
particularly problem domain, maybe not. So, when an application
protocol designer defines their own profile to do "the useful work",
they'll have to deal with naming issues themselves. BXXP provides a
...
... authorization.
Of course, application protocols do have to deal with naming and
authorization -- those are two of the issues addressed by the
...
... TCP connection.
For a complete example of an application protocol defined using BEEP,
look at reliable syslog [37 ...
... 37]. This document exemplifies the formula:
application protocol = BEEP + 1 or more profiles
...
