segment
Click on the red underlined text to get to the source
... TCP to send and
receive variable-length segments of information enclosed in internet
datagram ...
... fragmentation or reassembly of
the TCP segments required to achieve transport and delivery through
...
... security classification
and compartmentation of the TCP segments, so this information can be
communicated end-to-end across multiple networks ...
... design. Section 3 offers both a detailed description of the actions
required of TCP when various events occur (arrival of new segments,
user calls, errors, etc.) and the details of the formats of TCP
...
... stream of octets in each
direction between its users by packaging some number of octets into
segments for transmission through the internet system. In general,
the TCPs decide when to block and forward data at their own
...
... interval, the data is retransmitted. At the receiver, the sequence
numbers are used to correctly order segments that may be received
out of order and to eliminate duplicates. Damage is handled by
...
... out of order and to eliminate duplicates. Damage is handled by
adding a checksum to each segment transmitted, checking it at the
receiver, and discarding damaged segments ...
... range of acceptable sequence numbers beyond
the last segment successfully received. The window indicates an
allowed number of octets that the sender may transmit before
...
... TCP packages the data from these buffers into
segments and calls on the internet module to transmit each segment to
...
... buffer and notifies the receiving user. The
TCPs include control information in the segments which they use to
ensure reliable ordered data transmission.
...
... A destination internet module unwraps the segment from the datagram
(after reassembling the datagram ...
... sequence number. The sequence number of the first octet of data in a
segment is transmitted with that segment and is called the segment
...
... sequence number of the first octet of data in a
segment is transmitted with that segment and is called the segment
sequence number ...
... segment is transmitted with that segment and is called the segment
sequence number. Segments ...
... segment
sequence number. Segments also carry an acknowledgment number which
is the sequence number of the next expected data octet of
...
... transmissions in the reverse direction. When the TCP transmits a
segment containing data, it puts a copy on a retransmission queue and
...
... starts a timer; when the acknowledgment for that data is received, the
segment is deleted from the queue. If the acknowledgment is not
...
... queue. If the acknowledgment is not
received before the timer runs out, the segment is retransmitted.
...
...
A connection is initiated by the rendezvous of an arriving segment
containing a SYN and a waiting TCB ...
...
The clearing of a connection also involves the exchange of segments,
in this case carrying the FIN control flag.
...
... A sending TCP is allowed to collect data from the sending user and to
send that data in segments at its own convenience, until the push
function is signaled, then it must send all unsent data. When a
receiving ...
...
There is no necessary relationship between push functions and segment
boundaries. The data in any particular segment may be the result of a
...
... There is no necessary relationship between push functions and segment
boundaries. The data in any particular segment may be the result of a
single SEND call, in whole or part, or of multiple SEND ...
... TCP modules which operate in a multilevel secure environment must
properly mark outgoing segments with the security, compartment, and
precedence. Such TCP ...
...
The sequence number of the first data octet in this segment (except
when SYN is present). If SYN ...
... next sequence number the sender of the segment is expecting to
receive. Once a connection is established this is always sent.
...
... The number of data octets beginning with the one indicated in the
acknowledgment field which the sender of this segment is willing to
accept.
...
... 16 bit words in the header and text. If a
segment contains an odd number of header and text octets to be
checksummed, the last octet is padded on the right with zeros to
...
... 16 bit word for checksum purposes. The pad is not
transmitted as part of the segment. While computing the checksum,
the checksum field ...
... This gives the TCP protection against misrouted segments. This
information is carried in the Internet Protocol and is transferred
...
... This field communicates the current value of the urgent pointer as a
positive offset from the sequence number in this segment. The
urgent pointer points to the sequence number of the octet following
...
... urgent pointer points to the sequence number of the octet following
the urgent data. This field is only be interpreted in segments with
the URG control bit set.
...
... 0 - End of option list.
1 - No-Operation.
2 4 Maximum Segment Size.
...
... not begin on a word boundary.
Maximum Segment Size
+--------+--------+---------+--------+
...
...
Maximum Segment Size Option Data: 16 bits
...
...
If this option is present, then it communicates the maximum
receive segment size at the TCP which sends this segment.
...
... receive segment size at the TCP which sends this segment.
This field must only be sent in the initial connection request
...
... This field must only be sent in the initial connection request
(i.e., in segments with the SYN control bit set). If this
...
... SYN control bit set). If this
option is not used, any segment size is allowed.
Padding: variable
...
... buffers, pointers to the retransmit queue and to the current segment.
In addition several variables relating to the send and receive
sequence numbers ...
... SND.WND - send window
SND.UP - send urgent pointer
SND.WL1 - segment sequence number used for last window update
...
... sequence number used for last window update
SND.WL2 - segment acknowledgment number used for last window
update
...
... There are also some variables used frequently in the discussion that
take their values from the fields of the current segment.
...
... events. The events are the user calls, OPEN, SEND, RECEIVE, CLOSE,
ABORT, and STATUS; the incoming segments, particularly those
containing the SYN, ACK ...
... detection in the presence of retransmission. Numbering of octets
within a segment is that the first data octet immediately following
the header is the lowest numbered, and the following octets are
...
...
(b) Determining that all sequence numbers occupied by a segment
have been acknowledged (e.g., to remove the segment ...
... queue).
(c) Determining that an incoming segment contains sequence numbers
which are expected (i.e., that the segment ...
... segment contains sequence numbers
which are expected (i.e., that the segment "overlaps" the
receive window).
...
... SEG.SEQ = first sequence number of a segment
SEG.LEN = the number of octets occupied by the data in the segment ...
... segment
SEG.LEN = the number of octets occupied by the data in the segment
(counting SYN and FIN)
...
... of its sequence number and length is less or equal than the
acknowledgment value in the incoming segment.
...
... RCV.NXT = next sequence number expected on an incoming segments, and
is the left or lower edge of the receive window
...
... NXT+RCV.WND-1 = last sequence number expected on an incoming
segment, and is the right or upper edge of the receive window
...
...
The first part of this test checks to see if the beginning of the
segment falls in the window, the second part of the test checks to see
if the end of the segment falls in the window; if the segment ...
... segment falls in the window, the second part of the test checks to see
if the end of the segment falls in the window; if the segment passes
either part of the test it contains data in the window.
...
... segment falls in the window, the second part of the test checks to see
if the end of the segment falls in the window; if the segment passes
either part of the test it contains data in the window.
...
...
Actually, it is a little more complicated than this. Due to zero
windows and zero length segments, we have four cases for the
acceptability of an incoming segment:
...
... windows and zero length segments, we have four cases for the
acceptability of an incoming segment:
...
...
Segment Receive Test
Length Window
------- ------- -------------------------------------------
...
...
Note that when the receive window is zero no segments should be
acceptable except ACK segments ...
... segments should be
acceptable except ACK segments. Thus, it is be possible for a TCP to
maintain a zero receive window while transmitting ...
... and acknowledged without confusion (i.e., one and only one copy of the
control will be acted upon). Control information is not physically
carried in the segment data space. Consequently, we must adopt rules
for implicitly assigning sequence numbers to control. The SYN ...
... purposes, the SYN is considered to occur before the first actual data
octet of the segment in which it occurs, while the FIN is considered
to occur after the last actual data octet in a segment in which it
...
... octet of the segment in which it occurs, while the FIN is considered
to occur after the last actual data octet in a segment in which it
occurs. The segment length (SEG.LEN) includes both data and sequence
...
... to occur after the last actual data octet in a segment in which it
occurs. The segment length (SEG.LEN) includes both data and sequence
space occupying controls. When a SYN is present then SEG.SEQ ...
... connection. The problem that arises from this is
-- "how does the TCP identify duplicate segments from previous
incarnations of the connection?" This problem becomes apparent if the
...
...
To avoid confusion we must prevent segments from one incarnation of a
connection from being used while the same sequence numbers ...
... bit is incremented roughly every 4
microseconds. Thus, the ISN cycles approximately every 4.55 hours.
Since we assume that segments will stay in the network no more than
the Maximum Segment ...
... segments will stay in the network no more than
the Maximum Segment Lifetime (MSL) and that the MSL is less than 4.55
hours we can reasonably assume that ISN's will be unique.
...
... initial sequence numbers. This is done in
an exchange of connection establishing segments carrying a control bit
called "SYN ...
... SYN" (for synchronize) and the initial sequence numbers. As a
shorthand, segments carrying the SYN bit are also called "SYNs".
...
... receiver of the first SYN has
no way of knowing whether the segment was an old delayed one or not,
unless it remembers the last sequence number used on the connection ...
... To be sure that a TCP does not create a segment that carries a
sequence number which may be duplicated by an old segment ...
... segment that carries a
sequence number which may be duplicated by an old segment remaining in
the network, the TCP ...
... the network, the TCP must keep quiet for a maximum segment lifetime
(MSL) before assigning any sequence numbers ...
... connection shall delay emitting any
TCP segments for at least the agreed Maximum Segment Lifetime (MSL)
...
...
TCPs consume sequence number space each time a segment is formed and
entered into the network output queue ...
... TCP protocol
relies on the unique binding of segment data to sequence space to
the extent that sequence numbers will not cycle through all 2**32
...
... the extent that sequence numbers will not cycle through all 2**32
values before the segment data bound to those sequence numbers has
been delivered and acknowledged by the receiver ...
... been delivered and acknowledged by the receiver and all duplicate
copies of the segments have "drained" from the internet. Without
such an assumption, two distinct TCP ...
... internet. Without
such an assumption, two distinct TCP segments could conceivably be
assigned the same or overlapping sequence numbers, causing confusion
...
... at the receiver as to which data is new and which is old. Remember
that each segment is bound to as many consecutive sequence numbers
as there are octets of data in the segment ...
... segment is bound to as many consecutive sequence numbers
as there are octets of data in the segment.
...
... very large to reduce the probability that a wandering duplicate will
cause trouble upon arrival. At 2 megabits/sec. it takes 4.5 hours
to use up 2**32 octets of sequence space. Since the maximum segment
lifetime in the net is not likely to exceed a few tens of seconds,
...
... TCP
specification recommends that the source delay for MSL seconds
before emitting segments on the connection, to allow time for
segments ...
... segments on the connection, to allow time for
segments from the earlier connection incarnation to drain from the
system.
...
... takes on a value equal to the sequence number, say S1, of the last
segment sent by this TCP on a particular connection. Now suppose,
...
...
One way to deal with this problem is to deliberately delay emitting
segments for one MSL after recovery from a crash- this is the "quite
time" specification. Hosts which prefer to avoid waiting are
...
...
To summarize: every segment emitted occupies one or more sequence
numbers in the sequence space, the numbers occupied by a segment are
...
... To summarize: every segment emitted occupies one or more sequence
numbers in the sequence space, the numbers occupied by a segment are
"busy" or "in use" until MSL seconds have passed, upon crashing a
block of space-time is occupied by the octets of the last emitted
...
... "busy" or "in use" until MSL seconds have passed, upon crashing a
block of space-time is occupied by the octets of the last emitted
segment, if a new connection is started too soon and uses any of the
sequence numbers ...
... connection is started too soon and uses any of the
sequence numbers in the space-time footprint of the last segment of
the previous connection incarnation, there is a potential sequence
number ...
... occurs, each TCP receives a "SYN" segment which carries no
acknowledgment after it has sent a "SYN". Of course, the arrival of
...
... SYN". Of course, the arrival of
an old duplicate "SYN" segment can potentially make it appear, to the
recipient, that a simultaneous connection initiation is in progress.
...
... recipient, that a simultaneous connection initiation is in progress.
Proper use of "reset" segments can disambiguate these cases.
...
... connection synchronization using data-carrying
segments, this is perfectly legitimate, so long as the receiving TCP
...
... numbered for reference purposes. Right arrows (-->) indicate
departure of a TCP segment from TCP A to TCP B, or arrival of a
...
... TCP A to TCP B, or arrival of a
segment at B from A. Left arrows (<--), indicate the reverse.
Ellipsis (...) indicates a segment which is still in the network ...
... segment at B from A. Left arrows (<--), indicate the reverse.
Ellipsis (...) indicates a segment which is still in the network
(delayed). An "XXX" indicates a segment ...
... segment which is still in the network
(delayed). An "XXX" indicates a segment which is lost or rejected.
Comments appear in parentheses. TCP states represent the state ...
... TCP states represent the state AFTER
the departure or arrival of the segment (whose contents are shown in
the center of each line). Segment contents are shown in abbreviated
...
... the departure or arrival of the segment (whose contents are shown in
the center of each line). Segment contents are shown in abbreviated
form, with sequence number, control flags, and ACK ...
... In line 2 of figure 7, TCP A begins by sending a SYN segment
indicating that it will use sequence numbers starting ...
... TCP A sends some data. Note that the
sequence number of the segment in line 5 is the same as in line 4
because the ACK does not occupy sequence number ...
... connection, A's TCP
will send a segment containing SYN. This scenario leads to the
example shown in figure 10. After TCP ...
... TCP B, being in a synchronized state,
and the incoming segment outside the window, responds with an
acknowledgment indicating what sequence it next expects to hear (ACK
...
... ACK
100). TCP A sees that this segment does not acknowledge anything it
sent and, being unsynchronized, sends a reset (RST) because it has
...
...
As a general rule, reset (RST) must be sent whenever a segment arrives
which apparently is not intended for the current connection. A reset
...
... 1. If the connection does not exist (CLOSED) then a reset is sent
in response to any incoming segment except another reset. In
particular, SYNs addressed to a non-existent connection are rejected
...
... by this means.
If the incoming segment has an ACK field, the reset takes its
sequence number ...
... sequence number from the ACK field of the segment, otherwise the
reset has sequence number zero and the ACK ...
... ACK field is set to the sum
of the sequence number and segment length of the incoming segment.
The connection ...
... of the sequence number and segment length of the incoming segment.
The connection remains in the CLOSED state ...
... SYN-SENT, SYN-RECEIVED), and the incoming segment acknowledges
something not yet sent (the segment carries an unacceptable ACK ...
... SYN-RECEIVED), and the incoming segment acknowledges
something not yet sent (the segment carries an unacceptable ACK), or
if an incoming segment ...
... segment carries an unacceptable ACK), or
if an incoming segment has a security level or compartment which
does not exactly match the level and compartment requested for the
...
... If our SYN has not been acknowledged and the precedence level of the
incoming segment is higher than the precedence level requested then
either raise the local precedence level (if allowed by the user and
...
... by the user and
the system) or send a reset; or if the precedence level of the
incoming segment is lower than the precedence level requested then
continue as if the precedence matched exactly (if the remote TCP
...
... TCP
cannot raise the precedence level to match ours this will be
detected in the next segment it sends, and the connection will be
terminated then). If our SYN ...
... terminated then). If our SYN has been acknowledged (perhaps in this
incoming segment) the precedence level of the incoming segment must
match the local precedence level exactly, if it does not a reset
...
... SYN has been acknowledged (perhaps in this
incoming segment) the precedence level of the incoming segment must
match the local precedence level exactly, if it does not a reset
must be sent.
...
... sequence number from the ACK field of the segment, otherwise the
reset has sequence number zero and the ACK ...
... ACK field is set to the sum
of the sequence number and segment length of the incoming segment.
The connection ...
... of the sequence number and segment length of the incoming segment.
The connection remains in the same state ...
... FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT),
any unacceptable segment (out of window sequence number or
unacceptible acknowledgment number) must elicit only an empty
...
... sequence number or
unacceptible acknowledgment number) must elicit only an empty
acknowledgment segment containing the current send-sequence number
and an acknowledgment indicating the next sequence number ...
... state.
If an incoming segment has a security level, or compartment, or
precedence which does not exactly match the level, and compartment,
...
... In this case, a FIN segment can be constructed and placed on the
outgoing segment queue. No further SENDs from the user will be
accepted by the TCP ...
... state. RECEIVEs
are allowed in this state. All segments preceding and including FIN
will be retransmitted until acknowledged. When the other TCP has
...
... A simultaneous CLOSE by users at both ends of a connection causes
FIN segments to be exchanged. When all segments preceding the FINs
have been processed and acknowledged, each TCP ...
... connection causes
FIN segments to be exchanged. When all segments preceding the FINs
have been processed and acknowledged, each TCP can ACK ...
... default value of
precedence will still have to check the precedence of incoming
segments and possibly raise the precedence level they use on the
connection.
...
... Once the connection is established data is communicated by the
exchange of segments. Because segments may be lost due to errors
(checksum ...
... connection is established data is communicated by the
exchange of segments. Because segments may be lost due to errors
(checksum test failure), or network ...
... retransmission (after a timeout) to ensure delivery of every segment.
Duplicate segments may arrive due to network ...
... delivery of every segment.
Duplicate segments may arrive due to network or TCP retransmission ...
... TCP performs
certain tests on the sequence and acknowledgment numbers in the
segments to verify their acceptability.
...
... SND.NXT. When the receiver accepts a segment it advances RCV.NXT and
sends an acknowledgment. When the data sender ...
... these variables differ is a measure of the delay in the communication.
The amount by which the variables are advanced is the length of the
data in the segment. Note that once in the ESTABLISHED state all
segments ...
... segment. Note that once in the ESTABLISHED state all
segments must carry current acknowledgment information.
...
...
The CLOSE user call implies a push function, as does the FIN control
flag in an incoming segment.
...
... receiving an acknowledgment that
covers that sequence number (segments sent do not have to match
segments received). This measured elapsed time ...
... sequence number (segments sent do not have to match
segments received). This measured elapsed time is the Round Trip
Time (RTT ...
...
The method employs a urgent field which is carried in all segments
transmitted. The URG control flag indicates that the urgent field is
meaningful and must be added to the segment ...
... segments
transmitted. The URG control flag indicates that the urgent field is
meaningful and must be added to the segment sequence number to yield
the urgent pointer. The absence of this flag indicates that there is
...
... transmission of data to the point of introducing a round trip delay
between each new segment transmitted.
...
... When the receiving TCP has a zero window and a segment arrives it must
still send an acknowledgment showing its next expected sequence number
...
...
The sending TCP packages the data to be transmitted into segments
which fit the current window, and may repackage segments on the
...
... TCP packages the data to be transmitted into segments
which fit the current window, and may repackage segments on the
retransmission queue ...
... one-way data flow, the window information will
be carried in acknowledgment segments that all have the same sequence
number so there will be no way to reorder them if they arrive out of
order. This is not a serious problem, but it will allow the window
...
... the data receiver. A refinement to avoid this problem is to act on
the window information from segments that carry the highest
acknowledgment number (that is segments with acknowledgment number
...
... the window information from segments that carry the highest
acknowledgment number (that is segments with acknowledgment number
equal or greater than the highest previously received).
...
...
Allocating a very small window causes data to be transmitted in
many small segments when better performance is achieved using
fewer large segments ...
... Another suggestion is for the sender to avoid sending small
segments by waiting until the window is large enough before
sending data. If the the user signals a push function then the
data must be sent even if it is a small segment ...
... segments by waiting until the window is large enough before
sending data. If the the user signals a push function then the
data must be sent even if it is a small segment.
...
... retransmissions will result. One strategy would be to send an
acknowledgment when a small segment arrives (with out updating the
window information), and then to send another acknowledgment with
new window information when the window is larger.
...
...
The segment sent to probe a zero window may also begin a break up
of transmitted data into smaller and smaller segments ...
... segment sent to probe a zero window may also begin a break up
of transmitted data into smaller and smaller segments. If a
segment containing a single data octet sent to probe ...
... of transmitted data into smaller and smaller segments. If a
segment containing a single data octet sent to probe a zero window
is accepted, it consumes one octet of the window now available.
...
... TCP simply sends as much as it can whenever the
window is non zero, the transmitted data will be broken into
alternating big and small segments. As time goes on, occasional
pauses in the receiver making window allocation available will
...
... pauses in the receiver making window allocation available will
result in breaking the big segments into a small and not quite so
big pair. And after a while the data transmission will be in
mostly small segments ...
... segments into a small and not quite so
big pair. And after a while the data transmission will be in
mostly small segments.
...
... bit will be set in the last TCP
segment created from the buffer. If the PUSH flag is not set,
...
... connection is established (e.g., because a LISTENing connection
has become specific due to a foreign segment arriving for the
local socket), then the designated buffer ...
... TCP. An alternative is to
return a response immediately. For instance, SENDs might return
immediate local acknowledgment, even if the segment sent had not
been acknowledged by the distant TCP. We could optimistically
...
... signals, but these will deal with the connection itself, and not
with specific segments or buffers.
...
... A more sophisticated implementation would permit several
RECEIVEs to be outstanding at once. These would be filled as
segments arrive. This strategy permits increased throughput at
the cost of a more elaborate scheme (possibly asynchronous ...
... Time to Live = one minute, or 00111100.
Note that the assumed maximum segment lifetime is two minutes.
Here we explicitly ask that a segment ...
... segment lifetime is two minutes.
Here we explicitly ask that a segment be destroyed if it cannot
be delivered by the internet system within one minute.
...
... TCP can be characterized as responding to events.
The events that occur can be cast into three categories: user calls,
arriving segments, and timeouts. This section describes the
processing the TCP does in response to each of the events. In many
...
...
A natural way to think about processing incoming segments is to
imagine that they are first tested for proper sequence number (i.e.,
...
...
When a segment overlaps other already received segments we reconstruct
the segment to contain just the new data, and adjust the header fields ...
... segment overlaps other already received segments we reconstruct
the segment to contain just the new data, and adjust the header fields
to be consistent.
...
... passive OPEN and are to be filled in by the
parameters of the incoming SYN segment. Verify the security and
precedence requested are allowed for this user, if not return
...
... socket is
specified, issue a SYN segment. An initial send sequence number
(ISS) is selected. A SYN ...
... active, select an ISS. Send a SYN
segment, set SND.UNA to ISS, SND.NXT to ISS+1. Enter SYN-SENT
...
... state. Data associated with SEND may be sent with SYN segment or
queued for transmission after entering ESTABLISHED state. The
...
... urgent bit if requested in the command must be sent with the data
segments sent as a result of this command. If there is no room to
queue the request, respond with "error: insufficient resources".
...
... passive to active, select an ISS. Send a SYN segment, set
SND.UNA to ISS, SND.NXT to ISS+1. Enter SYN ...
... associated with SEND may be sent with SYN segment or queued for
transmission after entering ESTABLISHED state. The urgent bit ...
... state. The urgent bit if
requested in the command must be sent with the data segments sent
as a result of this command. If there is no room to queue the
...
... If the urgent flag is set, then SND.UP <- SND.NXT-1 and set the
urgent pointer in the outgoing segments.
FIN-WAIT-1 STATE ...
... STATE
If insufficient incoming segments are queued to satisfy the
request, queue the request. If there is no queue ...
... resources".
Reassemble queued incoming segments into receive buffer and return
to user. Mark "push seen" (PUSH) if this is the case.
...
...
If no SENDs have been issued and there is no pending data to send,
then form a FIN segment and send it, and enter FIN-WAIT-1 state;
otherwise queue ...
... Queue this until all preceding SENDs have been segmentized, then
form a FIN segment and send it. In any case, enter FIN-WAIT-1
state.
...
... Queue this request until all preceding SENDs have been
segmentized; then send a FIN segment, enter CLOSING state.
...
... connection reset"
notification; all segments queued for transmission (except for the
RST formed above) or retransmission ...
... TCB does not exist) then
all data in the incoming segment is discarded. An incoming
segment containing a RST ...
... all data in the incoming segment is discarded. An incoming
segment containing a RST is discarded. An incoming segment not
...
... segment containing a RST is discarded. An incoming segment not
containing a RST causes a RST ...
... connection still in
the LISTEN state. An acceptable reset segment should be formed
for any arriving ACK-bearing segment ...
... segment should be formed
for any arriving ACK-bearing segment. The RST should be
formatted as follows:
...
... security. If the
security/compartment on the incoming segment does not exactly
match the security/compartment in the TCB ...
... control or text should be queued for processing later. ISS
should be selected and a SYN segment sent of the form:
<SEQ ...
... fourth other text or control
Any other control or text-bearing segment (not containing SYN)
must have an ACK ...
... ACK
processing. An incoming RST segment could not be valid, since
it could not have been sent in response to anything sent by this
...
... incarnation of the connection. So you are unlikely to get here,
but if you do, drop the segment, and return.
If the state ...
... ACK was acceptable then signal the user "error:
connection reset", drop the segment, enter CLOSED state,
delete ...
...
If the security/compartment in the segment does not exactly
match the security/compartment in the TCB ...
... ACK
The precedence in the segment must match the precedence in the
TCB, if not, send a reset
...
... ACK
If the precedence in the segment is higher than the precedence
in the TCB then if allowed by the user ...
... by the user and the system raise
the precedence in the TCB to that in the segment, if not
allowed to raise the prec then send a reset.
...
... and send it. Data or controls which were queued for
transmission may be included. If there are other controls or
text in the segment then continue processing at the sixth step
below where the URG bit is checked, otherwise return.
...
...
and send it. If there are other controls or text in the
segment, queue them for processing after the ESTABLISHED state
...
... STATE
Segments are processed in sequence. Initial tests on arrival
are used to discard old duplicates, but further processing is
done in SEG.SEQ ...
... are used to discard old duplicates, but further processing is
done in SEG.SEQ order. If a segment's contents straddle the
boundary between old and new, only the new parts should be
processed.
...
... segment:
Segment Receive Test
Length Window
------- ------- -------------------------------------------
...
... NXT+RCV.WND
If the RCV.WND is zero, no segments will be acceptable, but
special allowance should be made to accept valid ACKs ...
... RSTs.
If an incoming segment is not acceptable, an acknowledgment
should be sent in reply (unless the RST bit ...
... and return.
In the following it is assumed that the segment is the idealized
segment that begins at RCV.NXT ...
... In the following it is assumed that the segment is the idealized
segment that begins at RCV.NXT and does not exceed the window.
One could tailor actual segments ...
... segment that begins at RCV.NXT and does not exceed the window.
One could tailor actual segments to fit this assumption by
trimming off any portions that lie outside the window (including
SYN ...
... trimming off any portions that lie outside the window (including
SYN and FIN), and only processing further if the segment then
begins at RCV.NXT. Segments ...
... segment then
begins at RCV.NXT. Segments with higher begining sequence
numbers may be held for later processing.
...
... connection was refused, signal
the user "connection refused". In either case, all segments
on the retransmission queue ...
... bit is set then, any outstanding RECEIVEs and SEND
should receive "reset" responses. All segment queues should be
flushed. Users should also receive an unsolicited general
...
...
If the security/compartment and precedence in the segment do not
exactly match the security/compartment and precedence in the TCB ...
...
If the security/compartment and precedence in the segment do not
exactly match the security/compartment and precedence in the TCB ...
... then send a reset, any outstanding RECEIVEs and SEND should
receive "reset" responses. All segment queues should be
flushed. Users should also receive an unsolicited general
...
...
Note this check is placed following the sequence check to prevent
a segment from an old connection between these ports with a
...
... outstanding RECEIVEs and SEND should receive "reset" responses,
all segment queues should be flushed, the user should also
receive an unsolicited general "connection ...
... and continue processing.
If the segment acknowledgment is not acceptable, form a
reset segment,
...
... NXT then, set SND.UNA <- SEG.ACK.
Any segments on the retransmission queue which are thereby
...
... Note that SND.WND is an offset from SND.UNA, that SND.WL1
records the sequence number of the last segment used to update
SND.WND, and that SND.WL2 records the acknowledgment number of
...
