Selective Acknowledgement (SACK) is an improvement over the conventional cumulative acknowledgement TCP algorithm that facilitates fewer data retransmissions in lossy networks.
The selective acknowledgment extension uses two TCP options. The first is an enabling option, SACK-permitted, which can be sent in a SYN segment to indicate that the SACK option can be used once the connection is established. The SACK-permitted option is a two-byte option.
The second option is the SACK option itself, which can be sent over an established connection once both the sender and the receiver have successfully negotiated the SACK-permit option. Whenever there is loss of data, the data receiver can send the SACK option to acknowledge the out-of-order data segments.
For more information, see Selective Acknowledgement.