mirror of
https://github.com/apache/nuttx.git
synced 2026-09-07 01:16:36 +00:00
RFC2001: TCP Slow Start, Congestion Avoidance, Fast Retransmit,
and Fast Recovery Algorithms
...
3. Fast Retransmit
Modifications to the congestion avoidance algorithm were proposed in
1990 [3]. Before describing the change, realize that TCP may
generate an immediate acknowledgment (a duplicate ACK) when an out-
of-order segment is received (Section 4.2.2.21 of [1], with a note
that one reason for doing so was for the experimental fast-
retransmit algorithm). This duplicate ACK should not be delayed.
The purpose of this duplicate ACK is to let the other end know that a
segment was received out of order, and to tell it what sequence
number is expected.
Since TCP does not know whether a duplicate ACK is caused by a lost
segment or just a reordering of segments, it waits for a small number
of duplicate ACKs to be received. It is assumed that if there is
just a reordering of the segments, there will be only one or two
duplicate ACKs before the reordered segment is processed, which will
then generate a new ACK. If three or more duplicate ACKs are
received in a row, it is a strong indication that a segment has been
lost. TCP then performs a retransmission of what appears to be the
missing segment, without waiting for a retransmission timer to
expire.
Change-Id: Ie2cbcecab507c3d831f74390a6a85e0c5c8e0652
Signed-off-by: chao.an <anchao@xiaomi.com>
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Make.defs | ||
| tcp.h | ||
| tcp_accept.c | ||
| tcp_appsend.c | ||
| tcp_backlog.c | ||
| tcp_callback.c | ||
| tcp_close.c | ||
| tcp_conn.c | ||
| tcp_connect.c | ||
| tcp_devpoll.c | ||
| tcp_finddev.c | ||
| tcp_getsockopt.c | ||
| tcp_input.c | ||
| tcp_ipselect.c | ||
| tcp_listen.c | ||
| tcp_monitor.c | ||
| tcp_netpoll.c | ||
| tcp_notifier.c | ||
| tcp_recvfrom.c | ||
| tcp_recvwindow.c | ||
| tcp_send.c | ||
| tcp_send_buffered.c | ||
| tcp_send_unbuffered.c | ||
| tcp_sendfile.c | ||
| tcp_seqno.c | ||
| tcp_setsockopt.c | ||
| tcp_timer.c | ||
| tcp_txdrain.c | ||
| tcp_wrbuffer.c | ||
| tcp_wrbuffer_dump.c | ||