A successful TCP connection involves multiple messages between a client and a server. In simplistic terms, the client requests information, the server replies to it and the client sends an acknowledgement indicating that it has received the file.

Let’s say that there is a large file that we wish to fetch from a server. A server normally chunks the file into smaller packets and streams it to the client. Following the entire protocol for every packet is time consuming. Thus, a concept of Optimistic acknowledgement (OPT-ACK) was introduced where a client greedily sends acknowledgements even before the packet arrives. This method improves end to end throughput.

What if we start sending “ACK” in the correct order even without receiving the previous packet? We just need to make sure that the server receives the next ACK right after it has sent out the packet. Note that an ACK packet is just 40 bytes while the packets sent by the server can be several megabytes and can congest the network. Sherwood in his paper showed that the amplification of bandwidth is more than 30 million times. He also argues that a distributed attack of such kind can bring down large portions of the internet!