作者zelkova (*〞︶〝*)
看板Network
标题[问答] 滑动视窗一问
时间Sun Mar 5 11:36:45 2017
这是我在看相关的ARQ(StopAndWait, GoBackN, SelectiveRepeat)产生的疑问
为了简单描述我的问题, 我用StopAndWait来举例
假设有个Stop-And-Wait的传输情形像这样
有端点A跟B在传输, 视窗大小只有2, 横轴是时间轴, 斜线代表网路传输
下面这个是A跟B之间在通讯的示意图
┌──┬──────────────────┐
│端点│ 封包编号 │
│ A │ [0] [1] [0] [1] [0] ..... │
│ │ \ \ \ \ \ │
│ B │ [0] [1] [0] [1] [0] ... │
└──┴──────────────────┘
我想请问有没有可能发生这样的状况
┌──┬──────────────────┐
│端点│ 封包编号 │
│ A │ [0] [1] [0] [1] [0] ..... │
│ │ │\ │
│ │ │ \ │
│ │ │ \ 第2次(timeout重送) │
│ │ │ \ │
│ │ │第1次 \ │
│ │ \ \ │
│ B │ [0] [1] [0] [1] [0] ... │
└──┴──────────────────┘
也就是因为第1个[0]传输了比较久
不过B还是顺利接收到第1个[0]
然後也顺利收到之後的[1] (为了图面乾净, 我把[1]的传输线省略)
但因为之前的第1个[0]太久没收到回应
所以造成A当时timeout重送
而B在收到[1]之後, 也顺利收到这个重送的封包
也就是B总共收到两次第1个[0]的封包
而且很刚好的“照顺序”收到
这样不会有问题吗?
还是有什麽没考虑到的状况, 所以根本不会发生呢?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.45.91
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Network/M.1488685010.A.CCB.html
1F:→ johnkk6j: 你这样两边窗口都是2 就不适用stop and wait了吧 接受 03/06 13:18
2F:→ johnkk6j: 窗口要2的话应该就要用selctive repeat 不然这样应该会 03/06 13:18
3F:→ johnkk6j: 产生混淆的问题 stop and wait,go back n的接受窗口应 03/06 13:18
4F:→ johnkk6j: 该都是只有1的 03/06 13:18
5F:→ johnkk6j: 而且你stop and wait再还没收到序号0的ack 应该不会再 03/06 13:35
6F:→ johnkk6j: 接着传序号1的资料的 也就是传送方在送出序号0的情况下 03/06 13:35
7F:→ johnkk6j: 应该是进入一种封闭的状况 要等收到确ack1才可以在进入 03/06 13:35
8F:→ johnkk6j: 下个传输 03/06 13:35
我换个方式来表达我的问题看看
假设有下面这几个流程
1. A送了序号0封包
2. A等了一段时间, 没收到序号0的ack, 决定重送序号0的封包
3. B收到流程1的封包, 并回序号0的ack, 开始等序号1的封包
4. A收到流程3的ack, 发送序号1的封包
5. B收到流程4的封包, 并回序号1的ack, 开始等序号0的封包
6. 如果流程2的封包没坏掉只是传了比较久, B这时是不是有机会收到流程2的封包而错误?
因为我看很多教材都是说重复的封包(上述流程2的封包)会被接收端(上面的B)丢掉
但好像都假设这些重复的封包在另一个状态时候收到 (也就是在等序号1的时候收到)
所以在想万一这些重复的封包是在同一个状态被收到 (也就是在等序号0的时候收到)
会有这样的错误发生吗?
※ 编辑: zelkova (218.161.45.91), 03/06/2017 18:08:37
9F:→ johnkk6j: 我大概懂你的意思了 只是要达到你说的情形机率真的不高 03/06 18:31
10F:→ johnkk6j: 吧 要发生这样的情况要两个前提 你的序号一定要很小 而 03/06 18:31
11F:→ johnkk6j: 且还要你的序号0的封包很慢抵达 而且後面的又要先抵达 03/06 18:31
12F:→ johnkk6j: 感觉好像挺奇怪的 @@ 还有我主要是根据forouzan这本书 03/06 18:31
13F:→ johnkk6j: 的观念来判断的 03/06 18:31
14F:→ zelkova: 看起来j大也认为 只是要序号很小 又各种巧合碰在一起 03/07 00:55
15F:→ zelkova: 的确有可能发生 那上面的推测应该没错.. 感谢j大的意见 03/07 00:57
16F:推 blackbox: 收到封包1应该要回NAK0,要求封包0重送 03/07 08:16
17F:推 blackbox: 没有NAK的话就是等timeout,那你的序号太少 03/07 08:19