一、滑动窗口实现
所谓的流量控制, 就是告诫对方发送速率不要太快, 要让接收来来得及接收数据。
形容如下;
甲向乙发送数据。经过TCP三握手连接以后, 当乙告诉甲:“我的接受窗口rwnd = 400”(这里rwnd表示receiver window的意思)。所以,发送方的发送窗口不能超过接收方给出的接受窗口的数值。而TCP窗口的单位是字节, 而不是报文段。
例子解释如下:
假设每个报文的长度为100字节, 报文段的序号初始值设置为1。
1、主机乙对该传输过程进行了三次流量控制。(按道理说,seq 1 和 sql 101发送后主机乙放回的rwnd = 200, 但是在该应答中返回的是300, 那可能是因为主机B调用recv函数读取了100字节, 后续若遇到此类情况, 皆是如此处理)。
2、seq因为没有发送成功,第一次流量控制ack= 201,rwnd = 300; 在经过三次发送过, seq = 201