问题是:
我们有一个传输协议,使用流水线技术,并使用8位长的序列号(0到255)
发送方可以使用的最大窗口大小是多少?(发送方在等待确认之前可以在网络上发送多少个数据包?)
在Go-Back-N中,最大窗口大小为:w= 2^m -1 w=255。
在Selective Repeat中,最大窗口大小为:w=(2^m)/2 w=128。
我不知道哪个是正确的,也不知道应该使用哪个公式。
感谢您的帮助
我们有一个传输协议,使用流水线技术,并使用8位长的序列号(0到255)
发送方可以使用的最大窗口大小是多少?(发送方在等待确认之前可以在网络上发送多少个数据包?)
在Go-Back-N中,最大窗口大小为:w= 2^m -1 w=255。
在Selective Repeat中,最大窗口大小为:w=(2^m)/2 w=128。
我不知道哪个是正确的,也不知道应该使用哪个公式。
感谢您的帮助
这两个协议有不同的问题。
就Go-Back-N而言,您是正确的。窗口大小可以高达255。(2^8-1是从0开始发送的数据包的最后一个序列号。它也是Go-Back-N协议可能的最大窗口大小)
然而,选择重传协议的窗口大小有限制,最大序列号的一半。因为接收者无法区分已经确认但在之前的窗口中丢失并未到达发送方的重传数据包与具有相同序列号的重传数据包。因此,窗口大小必须在序列号的一半范围内,以便连续的窗口不能彼此具有重复的序列号。
Go-Back-N没有这个问题,因为发送方将n个数据包推送到窗口大小(最大值为:n-1),并且直到获得累积的n个确认消息,才会滑动窗口。这两个协议具有不同的最大窗口大小。
注意:对于Go-Back-N,最大窗口大小是唯一序列号的最大数量 - 1。如果窗口大小等于唯一序列号的最大数,则如果所有确认消息都丢失,则接收方将把所有重传的消息作为单独的消息集接受,并将消息额外传递一次给其应用程序。为避免此不一致性,最大窗口大小=唯一序列号的最大数量-1。根据@noamgot的评论提供的事实,此答案已更新。