The above protocol is appropriate for short messages, and it is assumed that there is enough buffer space on the receiver's side to store the incoming data until the application posts the matching receive. For longer messages, a rendezvous protocol is necessary where the sender first sends a message ``request to send'', waits until the receiver sends ``o.k. to send'', and then transfers the data. During the data transfer, both sides are in the communication library routines, and one can perform congestion and flow control. We defer the handling of long messages to future work.