Protocol Mechanisms
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 we’re interested in are:
- Framing
Tells how the beginning and ending of each message is delimited.
- Encoding
Tells how a message is represented when exchanged.
- Reporting
Tells how errors are described.
- Asynchrony
Tells how independent exchanges are handled.
- Authentication
Tells how the peers at each end of the connection are identified and verified.
- Privacy
Tells how the exchanges are protected against third-party interception or modification.
A notable absence in this list is naming—we’ll explain why later on.
Framing
There are three commonly used approaches to delimiting messages: octet-stuffing, octet-counting, and connection-blasting.
An example of a protocol that uses octet-stuffing is SMTP. Commands in SMTP are line-oriented (each command ends in a CR-LF pair). When an SMTP peer sends a message, it first transmits the DATA
command, then it transmits the message, then it transmits a .
(dot) followed by a CR-LF. If the message contains any lines that begin with a dot, the sending SMTP peer sends two dots; similarly, when the other SMTP peer receives a line that begins with a dot, it discards the dot, and, if the line is empty, it knows it’s received the entire message. Octet-stuffing has the property that you don’t need the entire message in front of you before you start sending ...
Get BEEP: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.