|TCP option 15, Alternate checksum data|
|Protocol type:||Transport layer protocol.|
|Option length:||Variable length.|
|Links:||IANA: TCP option numbers.|
The option described in this memo provides a mechanism to negotiate the use of an alternate checksum at connection-establishment time, as well as a mechanism to carry additional checksum information for algorithms that utilize checksums that are longer than 16 bits.
Definition of the option: the TCP Alternate Checksum Request Option may be sent in a SYN segment by a TCP to indicate that the TCP is prepared to both generate and receive checksums based on an alternate algorithm. During communication, the alternate checksum replaces the regular TCP checksum in the checksum field of the TCP header. Should the alternate checksum require more than 2 bytes to transmit, the checksum may either be moved into a TCP Alternate Checksum Data Option and the checksum field of the TCP header be sent as 0, or the data may be split between the header field and the option. Alternate checksums are computed over the same data as the regular TCP checksum.
The length of this option will depend on the choice of alternate checksum algorithm for this connection.
While computing the alternate checksum, the TCP checksum field and the data portion TCP Alternate Checksum Data Option are replaced with zeros.
An otherwise acceptable segment carrying this option on a connection using a 16-bit checksum algorithm, or carrying this option with an inappropriate number of data octets for the chosen alternate checksum algorithm is in error and must be discarded; a RST-segment must be generated, and the connection aborted.
Note the requirement above that RST and SYN segments must always use the standard TCP checksum.
|MAC header||IP header||TCP header||TCP option 15||Data :::|
TCP Option 15:
|Kind||Length||Checksum Data  :::|
Kind. 8 bits. Set to 15.
Length. 8 bits.
This field is used only when the alternate checksum that is negotiated is longer than 16 bits. These checksums will not fit in the checksum field of the TCP header and thus at least part of them must be put in an option. Whether the checksum is split between the checksum field in the TCP header and the option or the entire checksum is placed in the option is determined on a checksum by checksum basis.
[RFC 1146] TCP Alternate Checksum Options.
[RFC 1145] TCP Alternate Checksum Options.