하위 계층 현 계층
신뢰적 O O

송신측

수신측

상위로부터
호출된 상태

udt_send(
  make_pkt(data, checksum)
)
rdt_send(data)

하위로부터

호출된 상태

rdt_rcv(rcvpkt)
extract(rcvpkt, data)
deliver_data(data)
하위 계층 현 계층
신뢰적 X (요청 손상) O

상위로부터
호출된 상태

송신측

수신측

하위로부터

호출된 상태

ACK/NAK 응답을 기다리는 상태

true

false

udt_send(
  make_pkt(data, checksum)
)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
rdt_send(data)
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
extract(rcvpkt, data)
deliver_data(data)
udt_send(
  make_pkt(ACK)
)

true

false

udt_send(
  make_pkt(NAK)
)
하위 계층 현 계층
신뢰적 X
(요청 손상 + ACK/NAK 손상)
O

상위로부터
0번이 호출된 상태

송신측

수신측

하위로부터

0번이 호출된 상태

true

false

udt_send(
  make_pkt(0, data, checksum)
)
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)
rdt_send(data)
rdt_rcv(rcvpkt) && notCorrupt(rcvpkt)
has_seq0(rcvpkt)

true(ACK)

ACK/NAK 응답을
기다리는 상태

상위로부터
1번이 호출된 상태

ACK/NAK 응답을 기다리는 상태

false

true

udt_send(
  make_pkt(1, data, checksum)
)
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)

하위로부터

1번이 호출된 상태

rdt_rcv(rcvpkt) && notCorrupt(rcvpkt)
has_seq1(rcvpkt)

false(NAK)

true(ACK)

false(NAK)

unused

By Yongki Kim

unused

  • 59