Что касается TCP-соединений с использованием NetGui (и wireshark для анализа):
Я установил TCP-соединение между двумя компьютерами, используя команду nc -p 11111 и т.д. ... для сервера и соответствующую для клиента, чтобы они действительно могли отправлять и читать (в pc2 (сервер)) сообщения.
После этого я нажал Ctrl Z в pc2 (сервер должен быть приостановлен) и отправил несколько сообщений с помощью pc1 (клиент). С помощью команды netstat -tna я могу видеть сообщения, ожидающие в буфере. Прежде чем вернуть сервер на передний план, я прекращаю захват tcpdump в маршрутизаторе между этими двумя устройствами и понимаю, что эти сообщения были отправлены (как и ожидалось), но также были подтверждены сервером.
Теперь, если сообщения ACK сервера выходят из буфера (т. Е. Когда они обрабатываются и перемещаются на другой уровень), были ли эти сообщения действительно «захвачены» из буфера сервером? Если так, что означает быть отстраненным?
Однако если сообщения перед отправкой обрабатываются ACK, то не будет ли pc1 думать, что эти сообщения обработаны, и поэтому буфер свободен и продолжает отправлять сообщения до тех пор, пока окно не получит нулевое значение? Если это так, что означает следующая формула?
rwnd = ReceiveBuffer - (LastByteReceived – LastByteReadByApplication)
Где я не прав?