《TCP/IP详解,卷2:实现》读书笔记-滑动窗口

TCP的滑动窗口协议是一种流量控制的协议,因为其设计的十分经典,今天重点讲一下其原理和实现。
窗口大小是与确认序号相对应的,确认序号是发送方等待接收的下一序号,确认已正确接收了所有序号小于等于确认号减 1的数据字节。只有当报文首部的ACK标志置位时,确认序号才有效。
滑动窗口的左右边沿移动方式有如下几种:
1) 窗口合拢:窗口左边沿向右边沿靠近,当数据被发送和确认时有此现象。
2) 窗口张开:窗口右边缘向右移动时允许发送更多的数据,当接收进程读取已经确认的数据并释放 TCP的接收缓存时有此现象。
3) 窗口收缩:窗口右边沿向左移动。
如果左边沿到达右边沿,称其为零窗口,此时发送方不能发送任何数据。
下图是滑动窗口在发送端的例子,
snd_wnd, snd_una, snd_nxt, snd_max都是TCP控制块中的字段。
snd_wnd是由接收方通知的提供窗口的大小,图例中从4到9,窗口大小为6。
snd_una为最小的未确认过的序列号,图例中为4。
snd_nxt为下一个发送序号,图例中为7。
snd_max为最大发送序号,主要用于重传,图例中为7。

由图中我们可以推断出,一个有效的ACK序号必须满足:snd_una < 确认序号<= snd_max。如果是重传的数据,下一个发送序号应该小于最大发送序号。

下图是滑动窗口在接收端的例子,如果接收报文段中携带的数据落在接收窗口内,该报文段是一个有效报文段。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值