A transport layer protocol has several responsibilities. One is to create a process-to-process (program-to-program) communication; TCP uses port () to accomplish this. Another responsibility of a transport layer protocol is to create a () and error-control mechanism at the transport level. TCP uses a sliding () protocol to achieve flow control. It uses the acknowledgment packet, time-out, and retransmission to achieve () control. The transport layer is also responsible for providing a connection mechanism for the application program. The application program sends () of data to the transport layer. It is the responsibility of the transport layer at the sending station to make a connection with the receiver.