[CN] HW2

楼主: kiwaygo (鸡尾酒)   2012-05-17 15:12:10
想请问助教(或其他在看版的同学们)一个实作方面的问题:
(抱歉一直修改问题 因为我一直发现自己之前想法有错...)
假设 client 端用 RRQ 从 server 端下载档案
但因为网络问题 client 端抓到 DATA #1 后 一直等不到档案
所以送出指令 ACK #1
结果送出 ACK #1 后 上一回合的 DATA #2~N 突然出现了
这时 client 端 socket 中的 packet 就会像是:
[DATA #2 (512 bytes)] [DATA #3 (512 bytes)] ... [DATA #N (100 bytes)]
这时 server 成功收到 client 刚刚送的 ACK #1
又再次重新传送一整批资料 DATA #2~N
client 端的 socket 就变成
[DATA #2 (512 bytes)] ... [DATA #N (100 bytes)] [DATA #2 (512 bytes)] ...
这时候 根据 TFTP protocol
DATA 是否全传送完 是用 packet 的长度来判断
(若 packet 的长度 < 512 bytes 则表示这是最后一个 DATA packet)
因此在上述的排队中
当 client 端处理到 DATA #N 之时 因为后面立刻接着 DATA #2 的开头
所以并不会察觉到档案完结 而是把下一个 packet 的内容
当成档案的一部分...
请问这种状况 应该怎么处理呢?
感谢助教(和同学们)!

Links booklink

Contact Us: admin [ a t ] ucptt.com