There are two forms of dumb window syndrome: receiver dumb window syndrome and sender dumb window syndrome.
Consider the following situations. When the recipient's receiving cache is full, it will notify the recipient that its receiving allowed window is 0, so that the sender does not continue to send data. Then receive the applicationProgramWhen a byte is read from the receiving cache, the space of the byte is empty. The receiving TCP immediately informs the recipient that the receiving allowed window is 1. Therefore, the sender sends 1 byte of data to the receiver. In this way, each time the receiving application reads 1 byte of data, the sender is triggered to send 1 byte of data. Obviously, it is quite inefficient to carry only so few user data in each data segment. This is the recipient's stupid window syndrome.
Like the receiver, the sender will also have this problem. If the sender generates only a small amount of data at a time, send TCP will transmit a data segment carrying a small amount of user data. This is the sender's stupid window syndrome.
To avoid this problem, we can adopt a simple heuristic method. When the recipient has a small number of available caches, do not rush to increase the receiving allowed window. Similarly, when the sender has a small amount of data to send, do not rush to send, wait until there is enough data to send again.
This article from csdn blog: http://blog.csdn.net/tigerscorpio/archive/2010/10/04/5921600.aspx