我正在尝试在 java 中创建一个客户端,以使用 Go-back-N 滑动窗口通过 UDP 传输文件。我正在使用 TftpPacket,但这与问题无关。我的问题是我如何进行确认控制。例子:
有一个分为 15 段的文件,窗口长度为 10。所以首先它会发送 10 段,但是包 2 丢失了,所以客户端发送 10 段,服务器只确认第一个段,所以客户端发送 11 段和停止。超时后客户端再次发送,但这次的窗口将从 segm 2 定义到 segm 11(10 segm 窗口)等等。
我的问题是我无法理解如何控制窗口,因此如果收到的最后一个 ack 为 1,它会在 segm 11 上阻塞,并在超时后重新发送整个窗口。