Handshaking is a method that controls the flow of serial communication between devices. It’s not a necessary process in that devices can connect and communicate without it, but it makes sure that data is only ever sent from the original to the receiving device when the receiving device is ready. Handshaking can both happen on a software and hardware level, depending on the devices that are involved. Where hardware handshaking isn’t possible because of technical restrictions, software handshaking usually replaces it.