[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