Per poter funzionare correttamente, il protocollo TCP necessita di un controllo del flusso. Ad esempio, se la velocità con cui il livello di rete del destinatario fornisce i dati è maggiore rispetto a quella con cui il suo livello di applicazione rimuove i dati dal buffer del socket, il buffer andrà in overflow, implicando che i dati in eccesso vengano necessariamente scartati, risultando tuttavia come ricevuti correttamente dal destinatario.
Di conseguenza, è necessario che il destinatario controlli il mittente, impedendo che quest’ultimo possa riempire il buffer del destinatario trasmettendo troppi dati velocemente. Per gestire il flusso, quindi, viene utilizzata un campo rwnd (receive window) all’interno del segmento TCP::
- Il destinatario inserisce in rwnd il numero di byte che è disposto ad accettare (dunque lo spazio rimanente nel buffer del socket).
- La dimensione del RcvBuffer impostata tramite le opzioni socket (predefinito a 4096 byte) o gestita automaticamente dal sistema operativo.
- Il mittente limita la quantità di dati inviati senza ACK al valore di rwnd, garantendo che il buffer di ricezione non vada in overflow