Describe the following heuristics used in TCP and explain why they are used:
What will be an ideal response?
This algorithm is designed to reduce the total number of TCP packets to send by
concatenate small buffers before sending the acknowledgement of them.
It was developed to solve the small packet problem; when an application generates data one
byte at a time, causing the network to be overloaded with packets (a situation often referred to
as send-side silly window syndrome). A single character - one byte of data - originating from a
keyboard could result in the transmission of a 41 byte packet consisting of one byte of useful
information and 40 bytes of header data.
This situation translates into 4000% overhead, which was considered to be acceptable for a
lightly loaded network, but not for a heavily loaded network where it could necessitate
retransmissions, cause lost packets, and hamper propagation speed through excessive
congestion in switching nodes and gateways.
Nagle's algorithm requires that, when data comes into the sender’s buffer, just send the first byte of the data and buffer the rest until all outstanding bytes are acknowledged. Then send all the buffered characters in one TCP segment and start buffering again until they are all acknowledged. Nagle’s algorithm additionally allows the TCP to send a new packet if half of the receiver buffer is filled by data.