앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.04.17 - [Computer Science/네트워크] - [네트워크] Principle of RDT - rdt 2.2
1. rdt 3.0
- 이제 패킷이 없어지는 경우를 생각해 봅시다.
- 그러면 이제 추가적인 두 가지 상황을 고려해야 합니다. 과연 어떻게 패킷 손실을 감지할 것이고, 패킷 손실이 발생했을 때 무엇을 해야하는가? 입니다.
- sequence number, ACK packets, retransmission은 이미 rdt 2.2에서 모두 사용했습니다.
- 패킷 손실을 위해서는 다른 추가적인 기능이 필요한데, 이때 필요한 것은 바로 time입니다.
- 따라서 패킷 손실이 일어났다고 예측되는 시간을 신중히 골라야 합니다.
- 정한 시간을 지나도 ACK가 도착하지 않는다면, 송신자는 다시 패킷을 보냅니다. 따라서 수신자는 중복된 패킷인 Duplicate Data Packet을 받게 됩니다.
- 다행히도 rdt 2.2에서 이런 중복된 패킷은 모두 sequence number로 처리했습니다.
- 패킷이 손실되거나 ACK가 손실되거나, 혹은 ACK가 단순히 느리게 오거나 송신자의 행동은 Retransmite로 동일합니다.
- 결론적으로 송신자에게 필요한 것은 countdown timer가 필요하고, 송신자가 ACK를 기다리던 중에서도 모든 시간이 지나면 즉시 패킷을 재전송해야 합니다.
- 순서대로 설명하자면 송신자가 패킷을 전송할 때, 타이머를 시작하고, 타임의 interrupt에 해당하는 적절한 행동을 취한 후 타이머를 중지합니다.
2. FSM
- 수신자는 rdt 2.2의 수신자와 동일하다고 가정합니다.
- rdt 2.2와 달라진 점은 timeout이 추가되었다는 것입니다.
- 어떠한 경우라도 정해진 시간을 넘기면 즉시 패킷을 재전송합니다.
- 만약 오류가 없고, 내가 대기하고 있는 숫자에 해당하는 ACK를 전송하면 타이머를 종료하고, 다음 숫자를 포함한 패킷을 전송합니다.
3. rdt 3.0 in action
- a, b, c, d는 rdt 3.0에 있어서 각 상황에 따른 행동입니다.
- d의 경우에는 타이머가 너무 짧기 때문에, 정상적으로 ACK가 수신되는 와중에 timeout으로 인해 재전송하는 모습을 보입니다.
- 그러나 완벽해 보이는 이 rdt 3.0 또한 업그레이드 될 수 있습니다.
참고
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업
Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년
Chat GPT, Bing AI
다음 글에서는 Pipeline Reliable Data Transfer Protocols에 대해 알아보겠습니다.
2023.04.17 - [Computer Science/네트워크] - [네트워크] Pipelined Reliable Data Transfer Protocols
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] Go-Back-N (GBN) (0) | 2023.04.17 |
---|---|
[네트워크] Pipelined Reliable Data Transfer Protocols (0) | 2023.04.17 |
[네트워크] Principle of RDT - rdt 2.2 (0) | 2023.04.17 |
[네트워크] Principle of RDT - rdt 2.1 (0) | 2023.04.17 |
[네트워크] Principle of RDT - rdt 2.0 (0) | 2023.04.17 |