Past entries that you should have read by now:

With the preamble exchange out of the way, it is now time to send some data. As before, we're going to get slightly different exchanges depending on the mode in which the framing protocol is being used.

You may recall from Part 2 that one of the modes for TCP connections was a request-reply mode used for streamed TCP connections. Request-reply streaming allows a single message to be exchanged on the framed connection.

After the preamble is completed, the initiator of the connection sends an unsized envelope record to exchange a message. An unsized envelope record starts with the byte 5 followed by one or more data chunks and followed by a terminating byte 0. This chunking approach is very similar to the way data is transferred using HTTP chunking. Each chunk consists of a non-zero size followed by a payload that contains the size's worth of octets. The size is encoded in the usual way. Finally, the receiver might send choose to send an unsized envelope record back in response.

The other mode for TCP connections in Part 2 was a duplex mode used for buffered TCP connections. Buffered duplex allows many messages to be exchanged in either direction between the two parties.

After the preamble is completed, the endpoints exchange sized envelope records. A sized envelope record starts with the byte 6 followed by a non-zero size and followed by the size's worth of octets. You might think of this as an HTTP message that specifies the content length instead of using a chunked encoding. The same variable sizing is used as always.

Regardless of the transfer mode used for the message, the framing connection is closed in the end by sending an end record. An end record is the byte 7. As we'll see later though, closing the framing connection doesn't necessarily mean freeing the network resources.