앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.04.17 - [Computer Science/네트워크] - [네트워크] Pipelined Reliable Data Transfer Protocols
1. Go-Back-N (GBN)
- Go-Back-N (GBN) Protocol은 ACK를 기다리지 않고, 여러 개의 패킷을 전송합니다.
- 그러나 무한정 패킷을 보내는 것이 아닌 unACK 된 패킷까지 포함하여 정해진 숫자인 N만큼 전송이 가능합니다.
- 위의 그림을 보시면 base가 잇고, nextseqnum이 존재합니다.
- base는 unACK된 패킷 중 가장 오래된 패킷이고, nextseqnum은 보내지 않은 패킷 중에 가장 빠른 패킷입니다.
- [0, base - 1]은 이미 ACK를 응답받은 패킷입니다.
- [base, nextseqnum]은 전송이 되었지만, 아직 ACK를 받지 못한 패킷입니다.
- [nextseqnum, base + N - 1]은 전송을 기다리고 있는 패킷으로, 상위 계층에서 데이터를 넘겨주면 즉시 전송합니다.
- [base + N, ~]은 unACK 된 패킷이 ACK 되기 전까지 사용이 불가능합니다.
- 전송되었지만 아직 ACK를 받지 못한 패킷들은 N의 범위 안에서 보이고, 이러한 패킷들이 ACK를 받으면 이 N의 범위는 옮겨집니다.
- 따라서 이 N을 종종 window size라 언급하고, GBN protocol 자체를 sliding-window protocol이라고 합니다.
- GBN protocol은 Cumulative Acknowledge를 사용합니다. 따라서 수신자가 n번 패킷까지 정상적으로 받았다면 ACK(n)을 피드백합니다.
- 만약 timeout이 발생한다면, stop and wait 방식의 경우 해당 패킷만 재전송하지만, pipeline의 경우 전송되었지만, ACK를 받지 못한 패킷을 모두 재전송합니다.
2. Receiver in GBN
- GBN에서 Receiver의 행동은 매우 단순합니다.
- n번째 패킷까지 모두 정상적으로, 순서대로 받았다면 수신자는 n패킷에 대한 ACK를 보냅니다. 이는 n번째 패킷까지 모두 정상적으로 받았다는 신호입니다.
- 만약 순서에 어긋나게 패킷을 받으면 어떻게 될까요?
- 수신자는 순서에 어긋나는 패킷을 받으면 해당 패킷을 폐기합니다. 상당히 불필요하고 비효율적인 것처럼 보이지만 타당한 이유가 있습니다.
- 수신자는 상위 계층으로 데이터를 순서대로 전달해야 하므로, n 대신에 n + 1번째 패킷이 도착한다면, 이를 버퍼링에 저장하고 추후 n번째 패킷까지 기다린 후 상위 계층으로 전달할 수 있습니다.
- 그러나 n번째 패킷이 손실된다면, 송신자는 GBN의 프로토콜에 따라 n, n + 1번째 패킷을 모두 재전송합니다.
- 왜냐면 수신자는 송신자에게 ACK(n - 1)을 보낼 것이고, 이에 따라 송신자는 아직 ACK를 받지 못한 n, n +1을 재전송하기 때문입니다.
- 따라서 수신자는 매우 단순하며, 순서가 바뀐 패킷을 버퍼링에 따로 저장할 필요가 없습니다.
3. 참조 그림
- 위의 그림에서 pkt2이 손실되는 모습을 볼 수 있습니다. 따라서 수신자는 3번 이상의 패킷에 대해서는 모두 폐기처리하고, ACK(1)을 보냅니다.
- ACK(1)이 중복되어 도착하기 전에 pkt2가 timeout이 되어서, 2, 3, 4, 5 패킷을 전송하는 모습을 볼 수 있습니다.
참고
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업
Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년
Chat GPT, Bing AI
다음 글에서는 Selective Repeat(SR)에 대해 알아보겠습니다.
2023.04.17 - [Computer Science/네트워크] - [네트워크] Selective Repeat (SR)
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] TCP - Connection-Oriented Transport (0) | 2023.04.17 |
---|---|
[네트워크] Selective Repeat (SR) (0) | 2023.04.17 |
[네트워크] Pipelined Reliable Data Transfer Protocols (0) | 2023.04.17 |
[네트워크] Principle of RDT - rdt 3.0 (0) | 2023.04.17 |
[네트워크] Principle of RDT - rdt 2.2 (0) | 2023.04.17 |