窗口大小和序列号之间的关系

Jan*_*Jan 8 pipeline tcp

问题是 :

我们有一个使用流水线操作的传输协议,并使用一个8位长的序列号(0到255)

发件人可以使用的最大窗口大小是多少?(发送者在等待确认之前可以在网上发送多少个数据包?)

Go-Back-N最大窗口大小为:w = 2 ^ m -1 w = 255.

选择性重复最大窗口大小为:w =(2 ^ m)/ 2 w = 128.

我不知道哪个是正确的,我应该使用哪个公式.

感谢帮助

Lyl*_*yle 5

这两个是具有不同问题的不同协议.

如果是Go-Back-N,你是对的.窗口大小最多可以达到255.(2 ^ 8-1是从0开始发送的最后一个seq数据包.它也是Go-Back-N协议可能​​的最大窗口大小.)

然而,选择性重复协议将窗口大小限制为最大seq#的一半,因为接收器不能区分具有相同seq#的重传分组与已经确认的分组但丢失并且从未到达先前窗口中的发送者.因此,窗口大小必须在seq#的一半范围内,以便连续的窗口不能彼此重复seq#.

Go-Back-N没有这个问题,因为发送方将n个数据包推送到窗口大小(最大值为n:1),并且从不滑动窗口,直到它获得累积的ack达到n.并且这两个协议具有不同的最大尺寸窗口.

注意:对于Go-Back-N,最大窗口大小是唯一序列号的最大数量 - 1.如果窗口等于唯一序列号的最大数量,如果所有确认都丢失,接收器将接受所有重新传输的消息作为一组单独的消息,并将消息中继到它的应用程序的额外时间.为避免这种不一致,最大窗口大小=唯一序列号的最大数量 - 1.此答案已根据@noamgot在评论中提供的事实进行更新.

  • 嗨,很抱歉让这篇文章从死里复活,但我相信你的回答有问题 - 在 GBN 中,窗口大小确实应该高达 255,而不是 256。考虑以下示例 - 发件人发送了 0-255 个数据包(整个窗口),接收方获取它们并发送 ACK。不幸的是,ACK 丢失了,所以在超时发生后,发送方重新发送这些数据包。但是现在接收器等待另一个以 0 开始的数据包序列,所以我们遇到了问题。窗口大小为 255 时不会发生。考虑看这个:http://webmuseum.mi.fh-offenburg.de/index.php?view=exh&src=73 (4认同)