Embedded Web Server for the CR16
National Semiconductor
Jeff Wright
32
TCP requires that all queued data be processed before sending an ACK. Furthermore, if
aggregate acknowledgement is implemented, the ACK interval may not exceed 0.5 seconds.
Since segments are not queued, segments are individually acknowledged. Maximum ACK delay is
less than 0.5 seconds.
·
Support for Urgent Data
Although the Urgent mechanism may be used in any application, it was originally used to send
interrupt - type commands to a Telnet program. We ignore the Urgent flag and never set it in
outgoing segments.
·
TCP Options
All TCPs are required to be capable of receiving TCP options attached to any segment. In
addition, all TCPs MUST ignore without error any TCP option it does not implement, and it
MUST be prepared to handle an illegal option length (e.g., zero) without crashing or other
undesirable activity. TCP mandates a default MSS value of 536 bytes in the event one side
does not advertise to the contrary. Support for the Maximum Segment Size option is important
because it permits limited RAM applications (i.e. most low-cost embedded apps) to limit the size
of the incoming segments to one commensurate with its smaller buffers. If a MSS option is not
received at connection setup, TCP MUST assume a default send MSS of 536 (576-40).
We recognize and apply the peers MSS. All other TCP options, though received, are ignored.
Our MSS is determined at compile time and is typically set to the default value. Although
unnecessary, we still advertise this option during synchronization.
·
TCP Checksums
TCP requires that the sender compute a checksum for every segment sent, and requires that
the receiver confirm the checksum on all incoming segments. Some implementations ignore the
checksum on received segments since PPP provides ample protection via its CRC. However, since
TCP may not always run over PPP (it may run over SLIP, for instance), support for the checksum
must be included even if it can be optionally omitted.
Our implementation complies by allowing the user to optionally include the TCP checksum. Any
received segments failing the checksum test are silently discarded. In the event a segment
does fail the checksum, no acknowledgement is sent. The sending peer is expected to
retransmit the segment after an appropriate timeout.
·
Use clock-driven Initial Sequence Number (ISN) selection