- 问题阐述:
说明窗口大小和序号空间大小的关系,并解释原因。
- 表示:
假设序号数为N。
发送方窗口大小表示为Wsender。
接收方窗口大小表示为Wreceiver。
- 前提:
发送端窗口与接收端窗口与N的关系:
Wsender + Wreceiver <=N
接收端的傻子属性:
接收方仅能观察到从信道中接收到的数据分组以及向信道中发出的报文序列。
糟糕的情况及其后果:
由于序号是有限的且窗口大小不合理时——>发送端和接收端窗口缺乏同步——>会导致接收方无法分辨对于一个数据分组,究竟是初次传输,还是失败导致的重传。
- 接收端窗口大小:
逻辑:
确认方式——>接收端的行为——>接收端窗口大小
推理:
SR:逐个确认——>允许接受正确到达但乱序的分组并缓存——>不定长窗口大小Wreceiver
GBN:累计确认——>仅接受正确到达但顺序的分组——>定长窗口大小,且长度为1
- 发送方窗口大小:
无论是SR还是GBN,其发送方窗口大小均不定长。即1<=Wsender<N。
- SR的推导:
极端情况举例:
假设N=100,Wsender = 50,Wreceiver = 50.
首先发送方一下子发送了其窗口内的所有数据分组(即序号为0~49的前50个窗口),均逐一正常到达接收方并缓存在接收方的窗口,由书上图3-25的第一条性质可知,接收方的窗口逐渐向前移动。但是接收端回送的ACK报文全部丢失。因此发送端窗口不会移动。
截至目前,刚好错开,不会发生由于重复循环利用分组序号带来的初传还是重传的分组冗余负担问题。(如下图所示)
但是当假设N=100,Wsender = 52,Wreceiver = 48.(满足相加小于N的原则)
首先发送方一下子发送了其窗口内的所有数据分组(即序号为0~51的前52个窗口),均逐一正常到达接收方并缓存在接收方的窗口,由书上图3-25的第一条性质可知,接收方的窗口逐渐向前移动.但是接收端回送的ACK报文全部丢失。因此发送端窗口不会移动。
截至目前,发送端窗口和接收端窗口的序号产生重叠,因此会发生由于重复循环利用分组序号带来的初传还是重传的分组冗余负担问题——如序号为48、49、50、51的分组是第一次传输?还是由于超时、传输失败、未得到回送ACK等原因导致的重传?(如下图所示)
从极端情况可知,Wsender >= Wreceiver,且Wsender <=N/2.
由于发送端窗口不定长,1<=Wsender<N。
接收端窗口也不定长。
Wsender + Wreceiver <=N。
因此SR的发送端窗口和接收端窗口均小于等于序号空间的一半 N/2
- GBN的推导:
发送端窗口不定长,1<=Wsender<N。
接收端窗口定长,Wreceiver = 1.
Wsender + Wreceiver <=N
因此GBN发送端窗口小于等于N-1,接收端窗口等于1.
- 结论:
SR:发送端窗口和接收端窗口均小于等于序号空间的一半即 N/2
GBN:发送端窗口小于等于N-1,接收端窗口等于1.