/// The SACK option is to be used to convey extended acknowledgment information from the receiver to the sender over an established TCP connection.
///
/// +--------+--------+
/// | Kind=5 | Length |
/// +--------+--------+--------+--------+
/// | Left Edge of 1st Block |
/// +--------+--------+--------+--------+
/// | Right Edge of 1st Block |
/// +--------+--------+--------+--------+
/// | |
/// / . . . /
/// | |
/// +--------+--------+--------+--------+
/// | Left Edge of nth Block |
/// +--------+--------+--------+--------+
/// | Right Edge of nth Block |
/// +--------+--------+--------+--------+
///
/// The SACK option is to be sent by a data receiver to inform the data sender of non-contiguous blocks of data that have been received and queued.
/// The data receiver awaits the receipt of data (perhaps by means of retransmissions) to fill the gaps in sequence space between received blocks.
/// When missing segments are received, the data receiver acknowledges the data normally by advancing
/// the left window edge in the Acknowledgement Number Field of the TCP header.
/// The SACK option does not change the meaning of the Acknowledgement Number field.
///
/// This option contains a list of some of the blocks of contiguous sequence space occupied by data that has been received and queued within the window.
/// Each contiguous block of data queued at the data receiver is defined in the SACK option by two 32-bit unsigned integers in network byte order:
/// * Left Edge of Block - This is the first sequence number of this block.
/// * Right Edge of Block - This is the sequence number immediately following the last sequence number of this block.
///
/// Each block represents received bytes of data that are contiguous and isolated;
/// that is, the bytes just below the block, (Left Edge of Block - 1), and just above the block, (Right Edge of Block), have not been received.
///
/// A SACK option that specifies n blocks will have a length of 8*n+2 bytes, so the 40 bytes available for TCP options can specify a maximum of 4 blocks.
/// It is expected that SACK will often be used in conjunction with the Timestamp option used for RTTM [Jacobson92],
/// which takes an additional 10 bytes (plus two bytes of padding); thus a maximum of 3 SACK blocks will be allowed in this case.
///
/// The SACK option is advisory, in that, while it notifies the data sender that the data receiver has received the indicated segments,
/// the data receiver is permitted to later discard data which have been reported in a SACK option.