Re: [問答] 關於 Computer Networking 書上的 rdt 2.2 receiver
阿總覺得你想像誤會課本的意思了,直接用推文的好像要推不少行
所以直接在這裡直接回覆一篇,請參考我傳的那張圖來對照我底下
的解釋。
圖 : 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)
討論串 (同標題文章)
Network 近期熱門文章
PTT數位生活區 即時熱門文章
7
18