当前位置:网站首页>RFC 793 why to send reset and when to send reset
RFC 793 why to send reset and when to send reset
2022-06-24 21:24:00 【already_ skb】
A variety of other cases are possible, all of which are accounted for
by the following rules for RST generation and processing.
Reset Generation
As a general rule, reset (RST) must be sent whenever a segment arrives
which apparently is not intended for the current connection. A reset
must not be sent if it is not clear that this is the case.
There are three groups of states:
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 from the ACK field of the segment, otherwise the
reset has sequence number zero and the ACK field is set to the sum
of the sequence number and segment length of the incoming segment.
The connection remains in the CLOSED state.
2. If the connection is in any non-synchronized state (LISTEN,
SYN-SENT, SYN-RECEIVED), and the incoming segment acknowledges
something not yet sent (the 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
connection, a reset is sent.
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
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
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 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.
If the incoming segment has an ACK field, the reset takes its
sequence number from the ACK field of the segment, otherwise the
reset has sequence number zero and the ACK field is set to the sum
of the sequence number and segment length of the incoming segment.
The connection remains in the same state.
[Page 36]
September 1981
Transmission Control Protocol
Functional Specification
3. If the connection is in a synchronized state (ESTABLISHED,
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
acknowledgment segment containing the current send-sequence number
and an acknowledgment indicating the next sequence number expected
to be received, and the connection remains in the same state.
If an incoming segment has a security level, or compartment, or
precedence which does not exactly match the level, and compartment,
and precedence requested for the connection,a reset is sent and
connection goes to the CLOSED state. The reset takes its sequence
number from the ACK field of the incoming segment.
Reset Processing
In all states except SYN-SENT, all reset (RST) segments are validated
by checking their SEQ-fields. A reset is valid if its sequence number
is in the window. In the SYN-SENT state (a RST received in response
to an initial SYN), the RST is acceptable if the ACK field
acknowledges the SYN.
The receiver of a RST first validates it, then changes state. If the
receiver was in the LISTEN state, it ignores it. If the receiver was
in SYN-RECEIVED state and had previously been in the LISTEN state,
then the receiver returns to the LISTEN state, otherwise the receiver
aborts the connection and goes to the CLOSED state. If the receiver
was in any other state, it aborts the connection and advises the user边栏推荐
- DAPP system customization of full chain hash game (scheme design)
- B站带货当学新东方
- regular expression
- Curl command
- database/sql
- Packaging_ Conversion between basic type and string type
- Pytest test framework II
- Auto. JS to realize automatic unlocking screen
- The virtual currency evaporated $2trillion in seven months, and the "musks" ended the dream of 150000 people becoming rich
- Return of missing persons
猜你喜欢

Read all text from stdin to a string

Several common command operations in win system

Codeforces Round #720 (Div. 2)

Appium introduction and environment installation

B站带货当学新东方

Football information query system based on C language course report + project source code + demo ppt+ project screenshot

Postman assertion

Handling of garbled JMeter response data - three solutions

The difference between RPC and restful

Arkit与Character Creator动画曲线的对接
随机推荐
Common data model (updating)
Background of master data construction
Role of wait function
Call process of package receiving function
Postman assertion
Auto. JS to realize automatic unlocking screen
Use of kubernetes storage volumes
Pod lifecycle in kubernetes
[cloud native learning notes] kubernetes practice command
How Fiddler works
Concepts of kubernetes components
Requests requests for web page garbled code resolution
Learn together and make progress together. Welcome to exchange
[cloud native learning notes] learn about kubernetes configuration list yaml file
Power apps Guide
Hongxiang Yunteng is compatible with dragon lizard operating system, and the product runs stably
Reflect package
大厂出海,败于“姿态”
Steps of JMeter performance test
The difference between RPC and restful