作者kiwaygo (鸡尾酒)
看板PangSir
标题[CN] HW2
时间Thu May 17 15:12:10 2012
想请问助教(或其他在看版的同学们)一个实作方面的问题:
(抱歉一直修改问题 因为我一直发现自己之前想法有错...)
假设 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 的内容
当成档案的一部分...
请问这种状况 应该怎麽处理呢?
感谢助教(和同学们)!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.55.133
※ 编辑: kiwaygo 来自: 140.112.55.133 (05/17 15:23)
※ 编辑: kiwaygo 来自: 140.112.55.133 (05/17 15:30)
※ 编辑: kiwaygo 来自: 140.112.55.133 (05/17 15:38)