2007-05-06

滑动窗口机制简单理解

Views: 17828 | 1 Comment

这篇文章是对滑动窗口机制的简单理解.

发送:

将 snd_wnd(发送窗口大小) 个数据包发送出去, 然后每收到一个确认包便再发送一个, 直到所有的数据包发送完毕. 发送窗口的选择的一个考虑是, 保存已发送但未确认的包所需要的内存. 还有一个考虑是接收方对排序数据包的要求. 还有就是网络硬件的限制.

接收:

每收到一个数据包, 便回复一个确认, 然后将收到的数据包排序.

这简单, 但是问题是, 收到的包的顺序有利与排序吗? 我们希望接收到的每一包都是我们期望的下一个(rcv_nxt), 如果不是, 暂时将它保存. 如果我们使用一个链表来保存收到的包, 那么将包插入到这个链表时, 就要维护它的有序性.

如果接收到的包太过分散(有相当部分落在接收窗口之外), 那么接收方记录这些包就会消耗更多内存, 排序也会消耗更多的CPU时间和其它资源.

接收方还要处理重复包的问题.

这仍然是停止等待机制, 只不过是并发的停止等待. 将微观上的串行转换为宏观上的并行.

Related posts:

  1. TCP协议思想和技术的广泛应用
  2. Debian3.1的安装和汉化美化
  3. 数据库事务的原子性与隔离级别
  4. tcpdump分析TCP时的序号问题
  5. P2P应用的架构
Posted by ideawu at 2007-05-06 22:18:17

One Response to "滑动窗口机制简单理解"

Leave a Comment