Tcp 窗口大小与序列号的关系

Tcp 窗口大小与序列号的关系,tcp,pipeline,Tcp,Pipeline,问题是: 我们有一个传输协议,它使用流水线,并使用8位长的序列号(0到255) 发件人可以使用的最大窗口大小是多少?(发送方在等待确认之前可以在网上发送多少数据包?) 返回N最大窗口大小为:w=2^m-1 w=255 选择性重复最大窗口大小为:w=(2^m)/2 w=128 我不知道哪个是正确的,我应该用哪个公式 感谢您的帮助这两个协议有不同的问题 在返回N的情况下,您是正确的。窗口大小最多可为255。(2^8-1是从0开始发送的最后一个数据包序列。它也是Go-Back-N协议可能的最大窗口大小

问题是:

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

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

返回N最大窗口大小为:w=2^m-1 w=255

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

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


感谢您的帮助

这两个协议有不同的问题

在返回N的情况下,您是正确的。窗口大小最多可为255。(2^8-1是从0开始发送的最后一个数据包序列。它也是Go-Back-N协议可能的最大窗口大小。)

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

Go-Back-N没有这个问题,因为发送方将N个数据包推到窗口大小(最大值为:N-1),并且在获得N个累计确认之前,从不滑动窗口。这两个协议有不同的最大窗口大小


注:对于返回N,最大窗口大小为唯一序列号的最大数量-1。如果窗口等于唯一序列号的最大数量,如果所有确认丢失,接收器将接受所有重新传输的消息作为一组单独的消息,并将消息再转发一段时间到其应用程序。为了避免这种不一致,最大窗口大小=唯一序列号的最大数量-1。此答案已根据@noamgot评论中提供的事实进行了更新。

您在这里设计协议吗?或者它有名字,在这种情况下,请说明。只是想澄清一下:你说的是TCP,是吗?请看一下这篇文章。嗨,很抱歉让这篇文章死而复生,但我相信你的回答有问题-在GBN中,窗口大小应该是255,而不是256。考虑下面的例子-发送者发送分组0到255(整个窗口),接收者得到它们并发送一个ACK。不幸的是,ACK丢失,因此在超时发生后,发送方会重新发送这些数据包。但是现在接收器等待从0开始的另一个数据包序列,所以我们有一个问题。窗口大小为255时,不会发生这种情况。考虑看这个: