Connected: An Internet Encyclopedia
4.2.2.20 Event Processing: RFC-793 Section 3.9
Up:
Connected: An Internet Encyclopedia
Up:
Requests For Comments
Up:
RFC 1122
Up:
4. TRANSPORT PROTOCOLS
Up:
4.2 TRANSMISSION CONTROL PROTOCOL -- TCP
Up:
4.2.2 PROTOCOL WALK-THROUGH
Prev: 4.2.2.19 Time to Live: RFC-793 Section 3.9, page 52
Next: 4.2.2.21 Acknowledging Queued Segments: RFC-793 Section 3.9
4.2.2.20 Event Processing: RFC-793 Section 3.9
4.2.2.20 Event Processing: RFC-793 Section 3.9
While it is not strictly required, a TCP SHOULD be capable
of queueing out-of-order TCP segments. Change the "may" in
the last sentence of the first paragraph on page 70 to
"should".
- DISCUSSION:
-
Some small-host implementations have omitted segment
queueing because of limited buffer space. This
omission may be expected to adversely affect TCP
throughput, since loss of a single segment causes all
later segments to appear to be "out of sequence".
In general, the processing of received segments MUST be
implemented to aggregate ACK segments whenever possible.
For example, if the TCP is processing a series of queued
segments, it MUST process them all before sending any ACK
segments.
Here are some detailed error corrections and notes on the
Event Processing section of RFC-793.
- CLOSE Call, CLOSE-WAIT state, p. 61: enter LAST-ACK
state, not CLOSING.
- LISTEN state, check for SYN (pp. 65, 66): With a SYN
bit, if the security/compartment or the precedence is
wrong for the segment, a reset is sent. The wrong form
of reset is shown in the text; it should be:
<SEQ=0><ACK=SEG.SEQ+SEG.LEN><CTL=RST,ACK>
- SYN-SENT state, Check for SYN, p. 68: When the
connection enters ESTABLISHED state, the following
variables must be set:
SND.WND <- SEG.WND
SND.WL1 <- SEG.SEQ
SND.WL2 <- SEG.ACK
- Check security and precedence, p. 71: The first heading
"ESTABLISHED STATE" should really be a list of all
states other than SYN-RECEIVED: ESTABLISHED, FIN-WAIT-
1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, and
TIME-WAIT.
- Check SYN bit, p. 71: "In SYN-RECEIVED state and if
the connection was initiated with a passive OPEN, then
return this connection to the LISTEN state and return.
Otherwise...".
- Check ACK field, SYN-RECEIVED state, p. 72: When the
connection enters ESTABLISHED state, the variables
listed in (c) must be set.
- Check ACK field, ESTABLISHED state, p. 72: The ACK is a
duplicate if SEG.ACK =< SND.UNA (the = was omitted).
Similarly, the window should be updated if: SND.UNA =<
SEG.ACK =< SND.NXT.
- USER TIMEOUT, p. 77:
It would be better to notify the application of the
timeout rather than letting TCP force the connection
closed. However, see also Section 4.2.3.5.
Next: 4.2.2.21 Acknowledging Queued Segments: RFC-793 Section 3.9
Connected: An Internet Encyclopedia
4.2.2.20 Event Processing: RFC-793 Section 3.9