Uses acknowledgement and timeout. If the acknowledgement isn't sent back to the sender before the timeout occurs, the data is automatically resent. The receiver can send a "NACK" (negative acknowledgement) if the data arrived but with errors, so that the sender does not need to wait for the timer to run down before re-sending.