public class SenderTahoe extends Sender
Note: This implementation is based on
RFC 1122 –
Requirements for Internet Hosts -- Communication Layers,
published in 1989, which I believe specified TCP Tahoe.
See Section
4.2 of RFC 1122.
TCP Tahoe was superseded by TCP Reno, specified in
RFC 2001
and RFC 2581.
The current version (“TCP NewReno”) is specified in
RFC 5681.
Do not rely on any textbooks for precise details!
Read the textbook(s) for high-level understanding of
the material; read the RFCs for precise details.
bytestream, congWindow, currentState, dupACKcount, dupACKthreshold, idleConnectionTimer, idleConnectionTimerHandle, lastByteAcked, lastByteSent, lastByteSentBefore3xDupAcksRecvd, localEndpoint, MSS, rcvWindow, rtoEstimator, rtoTimer, rtoTimerHandle, SSThresh, TIMER_DEFAULT
Constructor and Description |
---|
SenderTahoe(Endpoint localTCPendpoint_)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
onExpiredRTOtimer()
This method resets the sender's parameters when the
RTO timer timed out.
|
(package private) void |
onThreeDuplicateACKs()
This method performs the so-called Fast Retransmit
to retransmit the oldest outstanding segment because
after 3x dupACKs, it's presumably lost.
|
cancelRTOtimer, getOldestUnacknowledgedSegment, getTotalBytesTransmitted, handle, resetParametersToSlowStart, send, startIdleConnectionTimer, startRTOtimer, timerExpired
public SenderTahoe(Endpoint localTCPendpoint_)
localTCPendpoint_
- The local TCP endpoint
object that contains this module.void onExpiredRTOtimer()
onExpiredRTOtimer
in class Sender
SenderState
void onThreeDuplicateACKs()
Tahoe sender doesn't care about the number of
duplicate ACKs as long as it's at least three
(or whatever Sender.dupACKthreshold
is set to).
This means that any dupACKs received after the first
three are ignored.
Also, after this kinds of event, the sending mode in
TCP Tahoe is always reset to slow-start.
The method leaves the RTO timer running,
for the outstanding segments.
onThreeDuplicateACKs
in class Sender
SenderState