The handshake is a communication protocol for data transfer via a serial interface. With this protocol, the parties involved negotiate the parameters for data transfer after authentication. In the process, the receiver confirms to the sender that it has received data and informs it that it is ready to receive further data.
The handshake procedure ensures trouble-free cooperation between systems with different speeds (e.g. computer and printer) without the need for synchronous operation. Handshake operation is available in different procedures as two-way handshake, three-way hand shake and four-way handshake. The more stages the procedure has, the more security it offers.
Handshake procedures can be implemented as zero- wire handshakes without additional lines. Generally, one, two or three additional wires are used. One of the first three-way handshakes was used for bit-parallel control of the Centronics interface. One of the lines is used to notify the printer of data to be printed, a second is used to acknowledge receipt, and the third is used to tell the computer that it is "busy" and cannot accept any more data for the time being. Handshaking is generally used when time-differentiated systems work together, e.g. also with modems.
A handshake variant for hardware control of the data flow between modem and personal computer( PC) is done by the send request, Request to Send( RTS) and the ready to send, Clear to Send ( CTS). With these control signals, the transmitting side announces a transmission by activating the Request to Send (RTS) line. The acknowledgement for transmission is then given by the receiving side by activating the Clear to Send (CTS) line. The subsequent transmission may persist until all data is transmitted or until the receiving side withdraws its readiness to receive by the inverse operation.
There are hardware and software handshakes. In hardware handshake, the control characters are controlled by the signal level on the handshake lines. A well-known method is to control the request to transmit and the readiness to transmit. It is different with the software handshake, where the control characters are formed by code words. An example of this is the XON/XOFF protocol. XON is formed by the ASCII character DC1, XOFF by the character DC3.