| 하위 계층 | 현 계층 | |
|---|---|---|
| 신뢰적 | 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