Re: [CN]HW2

楼主: gary04n (04N)   2012-05-17 17:38:35
※ 引述《kevin269782 (修也森)》之铭言:
: 助教你好,请问
: 当今天client向server做RRQ的请求,然后他们之间开始互相传资料...
: 当server送最后一份资料块data#n给client,这时client收到这份data,
: 并回传ack#n,但是ack#n却loss,因此server以为client没收到data#n,
: 因此重新传一份data#n,这时client再一次收到server送来的data#n,
: 因此client知道server并没有收到ack#n,因此又再度送ack#n给server,
: 但这份ack#n又loss,因此server又传一份data#n给client,结果这份
: data#n也loss掉....如此一来,client以为server已收到ack#n,
这边client并不会以为server收到ACK
: 因此结束这次的RRQ,但server仍旧没收到ack#n,因此server以为
client并不会马上结束RRQ,应该要再等一段时间(timeout),看看server有没有再传
DATA#N来,如果这段期间有传来那就回传ACK#N,没有传来就结束这个REQUEST
: client没收到data#n,所以继续传data#n....
: 最后server便不停地传data#n而无法停止。
: 请问该如何解决这种情形?
一般来说,要先设定好重传的最大值,如果重传次数超过某个数字就代表
有错误发生(断线......),但是这次并没有要求同学实作这一个部分。
这次我们demo的网络环境并不会很差,差到timeout时间内ACK#N传不过去,所
以同学只要把最后一个封包的timeout时间拉长一点,就可以解决这个问题。

Links booklink

Contact Us: admin [ a t ] ucptt.com