RFC 793:TRANSMISSION CONTROL PROTOCOL
RFC-Ref

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 ...
... user calls, errors, etc.) and the details of the formats of TCP segments. ...
... 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 ...
... 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 ...
... segments and calls on the internet module to transmit each segment to the destination TCP ...
... TCP. The receiving TCP places the data from a segment into the receiving user's buffer ...
... buffer and notifies the receiving user. The TCPs include control information in the segments which they use to ensure reliable ordered data transmission. ...
... network. This internet module packages TCP segments inside internet datagrams ...
... 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 ...


... TCP segments are sent as internet datagrams. The Internet Protocol ...
... 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. ...
... Current Segment Variables SEG.SEQ ...
... SEG.SEQ - segment sequence number SEG.ACK ...
... sequence number SEG.ACK - segment acknowledgment number SEG.LEN - segment length ...
... ACK - segment acknowledgment number SEG.LEN - segment length SEG.WND - segment window ...
... SEG.LEN - segment length SEG.WND - segment window SEG.UP - segment urgent pointer ...
... SEG.WND - segment window SEG.UP - segment urgent pointer SEG.PRC - segment precedence value ...
... SEG.UP - segment urgent pointer SEG.PRC - segment precedence value ...
... 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 ...
... segment have been acknowledged (e.g., to remove the segment from a retransmission queue ...
... 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) ...
... SEG.SEQ+SEG.LEN-1 = last sequence number of a segment ...
... A segment on the retransmission queue is fully acknowledged if the sum ...
... 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 ...
... SEG.SEQ = first sequence number occupied by the incoming segment SEG.SEQ ...
... SEQ+SEG.LEN-1 = last sequence number occupied by the incoming segment ...
... A segment is judged to occupy a portion of valid receive sequence space if ...
... 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 ...
... TCP must process the RST and URG fields of all incoming segments. ...
... 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) ...
... TCP segments for at least the agreed Maximum Segment Lifetime (MSL) in the internet ...
... 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 ...
... At line 4, TCP A responds with an empty segment containing an ACK for TCP ...
... 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 ...
... RST (reset) with its SEQ field selected to make the segment believable. TCP B, on receiving ...
... 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. ...
... must be sent. 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 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, ...
... state. The reset takes its sequence number from the ACK field of the incoming segment. ...
... In all states except SYN-SENT, all reset (RST) segments are validated by checking their SEQ ...
... In this case, a FIN segment can be constructed and placed on the outgoing segment queue ...
... 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. ...
... When the sender creates a segment and transmits it the sender advances SND.NXT ...
... 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 ...
... The window sent in each segment indicates the range of sequence numbers the sender ...
... 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 ...
... 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, ...
... If the URGENT flag is set, segments sent to the destination TCP ...
... 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 ...
... STATUS Arriving Segments SEGMENT ...
... Segments SEGMENT ARRIVES Timeouts ...
... 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 ...
... 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 ...
... sequence number (ISS) is selected. A SYN segment of the form <SEQ=ISS><CTL=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. ...
... described below in the discussion of processing an incoming segment. CLOSE-WAIT STATE ...
... 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. ...
... STATE Send a reset segment: <SEQ ...
... connection reset" notification; all segments queued for transmission (except for the RST formed above) or retransmission ...
... TCB pointer. SEGMENT ARRIVES If the state ...
... 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 ...
... reset sequence acceptable to the TCP that sent the offending segment. If the ACK ...
... 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 ...
... the RST bit is set, if so drop the segment and return) <SEQ ...
... RST> and discard the segment. Return. If SND.UNA =< SEG.ACK ...
... ACK was acceptable then signal the user "error: connection reset", drop the segment, enter CLOSED state, delete ...
... delete TCB, and return. Otherwise (no ACK) drop the segment and return. ...
... 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. ...
... ACK> If the precedence in the segment is lower than the precedence in the TCB continue. ...
... TCB continue. If a reset was sent, discard the segment and return. fourth check the SYN ...
... ACK is ok, or there is no ACK, and it the segment did not contain a RST. ...
... ACK (if there is an ACK), and any segments on the retransmission queue which ...
... state to ESTABLISHED, form an ACK segment <SEQ ...
... 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. ...
... SYN-RECEIVED, form a SYN,ACK segment <SEQ ...
... and send it. If there are other controls or text in the segment, queue them for processing after the ESTABLISHED state ...
... RST bits is set then drop the segment and return. Otherwise, ...
... 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. ...
... There are four cases for the acceptability test for an incoming segment: Segment ...
... 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 ...
... RST bit is set, if so drop the segment and return): <SEQ ...
... ACK> After sending the acknowledgment, drop the unacceptable segment and return. ...
... 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 ...
... if the ACK bit is off drop the segment and return if the ACK ...
... and continue processing. If the segment acknowledgment is not acceptable, form a reset segment, ...
... If the segment acknowledgment is not acceptable, form a reset segment, <SEQ ...
... NXT then, set SND.UNA <- SEG.ACK. Any segments on the retransmission queue which are thereby ...
... NXT) then send an ACK, drop the segment, and return. If SND.UNA < SEG.ACK ...
... 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 ...
... update SND.WND, and that SND.WL2 records the acknowledgment number of the last segment used to