If ACK acknowledges something
- Updates credit and sends
If not, presumes it indicates a lost packet
- Sends first unacknowledged message right away
- Halves current credit (slows down)
- Increases slowly to gauge network throughput
When the sender receives an ACK, the sender determines if any data is outstanding:
■ If no data is outstanding, the sender determines that the ACK is a keepalive, meant to keep the line active, and it does nothing.
■ If data is outstanding, the sender determines whether the ACK indicates that the receiver has received some or none of the data.
— If the ACK acknowledges receipt of some data sent, the sender determines if new credit has been granted to allow it to send more data.
— When the ACK acknowledges receipt of none of the sent data and there is outstanding data, the sender interprets the ACK to be a repeatedly sent ACK. This condition indicates that some data was received out of order, forcing the receiver to remit the first ACK, and that a second data segment was received out of order, forcing the receiver to remit the second ACK. In most cases, the receiver would receive two segments out of order, because one of the data segments had been dropped.
When a TCP sender detects a dropped data segment, it retransmits the segment. Then the sender slows its transmission rate so that the rate is half of what it was before the drop was detected. This is known as the TCP slow-start mechanism. In the figure, a station transmits three packets to the receiving station. Unfortunately, the first packet is dropped somewhere in the network. Therefore the receiver sends an ACK 1, to request the missing packet. Because the transmitter does not know if the ACK was just a duplicate ACK, it will wait for three ACK 1 packets from the receiver. Upon receipt of the third ACK, the missing packet, packet 1, is resent to the receiver. The receiver now sends an ACK 4 indicating that it has already received packets 2 and 3 and is ready for the next packet.
Was this article helpful?