Re: [問答] 關於 Computer Networking 書上的 rdt 2.2 receiver

看板Network作者 (funnynose)時間13年前 (2012/08/25 03:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
阿總覺得你想像誤會課本的意思了,直接用推文的好像要推不少行 所以直接在這裡直接回覆一篇,請參考我傳的那張圖來對照我底下 的解釋。 圖 : http://i.imgur.com/r9bor.jpg
前情提要 : RDT 2.2 與 2.1只差異在取消NCK,其他都相同 如果你能理解2.1在幹嘛,理論上2.2你要能懂。 Sender : rdt_send(data) ----------------- sndpkt = make_pkt(0,data,checksum) udt_send(sndpkt) 送出第一個封包 Sender 進入下一個state (wait for ACK0) 在這裡暫停等待receiver回復 Reveiver : 已在Wait for 0 from below state 接收端是在等待package 0 左側條件式 rdt_rcv(rcvpkt) 不解釋 corrupt(rcvpkt) 判斷封包是否爛掉 has_seq1(rcvpkt) 判斷是不是自己要的東西 假設以上2個為true 封包爛掉 or 拿到的封包是 package 0 則執行下面的動作 - > udt_send(sndpkt) 這裡的sndpkt 是 (ACK,1,checksum) 也就是在告訴sender一次我收到package 1啦,進入Sender節奏 Sender : isACK(rcvpkt,1)成立,發現剛剛傳給receiver有問題 所以在傳一次packet 0 udt_send(sndpkt) 所以依照舊版的圖,假使第一個package是錯誤的,也會正常重新發送封包 是沒有問題的,以上是我的認知,假使還有問題,或者對我的回覆有疑問 歡迎推文告知。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 198.15.76.130 ※ 編輯: a40136 來自: 198.15.76.130 (08/25 03:33)
文章代碼(AID): #1GDzRfEY (Network)
文章代碼(AID): #1GDzRfEY (Network)