RFC 1146 (rfc1146) - Page 2 of 5
TCP alternate checksum options
Alternative Format: Original Text Document
RFC 1146 TCP Alternate Checksum Options March 1990 +----------+----------+----------+ | Kind=14 | Length=3 | chksum | +----------+----------+----------+ Here chksum is a number identifying the type of checksum to be used. The currently defined values of chksum are: 0 -- TCP checksum 1 -- 8-bit Fletcher's algorithm (see Appendix I) 2 -- 16-bit Fletcher's algorithm (see Appendix II) Note that the 8-bit Fletcher algorithm gives a 16-bit checksum and the 16-bit algorithm gives a 32-bit checksum. Alternate checksum negotiation proceeds as follows: A SYN segment used to originate a connection may contain the Alternate Checksum Request Option, which specifies an alternate checksum-calculation algorithm to be used for the connection. The acknowledging SYN-ACK segment may also carry the option. If both SYN segments carry the Alternate Checksum Request option, and both specify the same algorithm, that algorithm must be used for the remainder of the connection. Otherwise, the standard TCP checksum algorithm must be used for the entire connection. Thus, for example, if one TCP specifies type 1 checksums, and the other specifies type 2 checksums, then they will use type 0 (the regular TCP checksum). Note that in practice, one TCP will typically be responding to the other's SYN, and thus either accepting or rejecting the proposed alternate checksum algorithm. Any segment with the SYN bit set must always use the standard TCP checksum algorithm. Thus the SYN segment will always be understood by the receiving TCP. The alternate checksum must not be used until the first non-SYN segment. In addition, because RST segments may also be received or sent without complete state information, any segment with the RST bit set must use the standard TCP checksum. The option may not be sent in any segment that does not have the SYN bit set. An implementation of TCP which does not support the option should silently ignore it (as RFC 1122 requires). Ignoring the option will force any TCP attempting to use an alternate checksum to use the standard TCP checksum algorithm, thus ensuring interoperability. Zweig & Partridge



