The first stream opened is a client-initiated bidirectional control stream where the endpoints exchange Setup messages (Section 9.3), followed by other messages defined in Section 9.
This specification only specifies two uses of bidirectional streams, the control stream, which begins with CLIENT_SETUP, and SUBSCRIBE_NAMESPACE. Bidirectional streams MUST NOT begin with any other message type unless negotiated. If they do, the peer MUST close the Session with a Protocol Violation. Objects are sent on unidirectional streams.
A unidirectional stream containing Objects or bidirectional stream(s) containing a SUBSCRIBE_NAMESPACE could arrive prior to the control stream, in which case the data SHOULD be buffered until the control stream arrives and setup is complete. If an implementation does not want to buffer, it MAY reset other bidirectional streams before the session and control stream are established.
The control stream MUST NOT be closed at the underlying transport layer during the
session's lifetime. Doing so results in the session being closed as a
PROTOCOL_VIOLATION.