Computer Science/네트워크

[네트워크] Principle of RDT - rdt 2.1

바보1 2023. 4. 17. 13:22

앞의 글을 읽으시면 이해에 도움이 됩니다.

 

2023.04.17 - [Computer Science/네트워크] - [네트워크] Principle of RDT - rdt 2.0

 

[네트워크] Principle of RDT - rdt 2.0

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.17 - [Computer Science/네트워크] - [네트워크] Principle of RDT - rdt 1.0 [네트워크] Principle of Reliable Data Transfer - rdt 1.0 앞의 글을 읽으시면 이해에 도움이

hi-guten-tag.tistory.com


1. rdt 2.1

 

 

  • 이제 ACK, NAK 마저 오류가 발생할 수도 있다고 가정해 봅시다.
  • 또한 ACK, NAK가 오류가 발생했을 때, 송신자는 무작정 재전송하면 안 됩니다. 왜냐면 수신자는 피드백을 보내고 새로운 패킷을 기다리고 있기 때문입니다. 따라서 이 경우 중복된 패킷인 duplicate packet이 발생할 수 있습니다.
  • 따라서 패킷은 새로운 데이터인지, 재전송 데이터인지 포함해야 합니다.
  • 이를 위하여 패킷에 sequence number를 넣습니다. 해당 패킷이 재전송인지 아닌지 확인할 수 있는 비트입니다.
  • 우리는 현재 패킷이 없어지지 않는다고 가정했기 때문에, 송신자는 본인이 받은 ACK, NAK가 내가 방금 전송한 패킷에 대한 응답이란 것을 확신할 수 있습니다.
  • 따라서 0을 보내면 0이 와야 하고, 1을 보내면 1이 와야 합니다.

2. FSM

 

 

출처 : Computer Networking 3장. Figure 3.11
출처 : Computer Networking 3장. Figure 3.12

  • 송신자가 0번을 보낼 때, 수신자 또한 0번을 받아야 합니다.
  • 만약 이 과정에서 오류가 생기지 않고, 수신자에게 0번이 정상적으로 도달한다면 ACK를 피드백합니다.
  • 하지만 오류가 발생한다면 NAK를 전송합니다.
  • 만약 오류가 발생하지 않고 수신자가 0을 기다리는데, 송신자가 1을 전송하는 경우는 어떤 경우일까요?
  • 수신자 또한 송신자에게서 온 에러를 체크합니다.
  • 이미 수신자는 1번을 정상적으로 받았고, ACK를 피드백했습니다. 그러나 피드백이 가는 과정에서 오류가 발생했고, 송신자는 수신자가 보낸 ACK에 오류가 있다는 사실을 알아챘습니다. 따라서 송신자는 다시 1번을 보내고, 수신자는 0을 기다리는 상황에서 1번을 다시 전송하므로 이미 받았다는 의미로 ACK를 다시 보내고, 0번을 기다립니다.
  • 근데 곰곰이 생각해 보면 굳이 NAK이 필요할까요?, 그냥 NAK, ACK을 피드백하는 대신에, 숫자를 피드백하면 안 될까요?

참고

 

 

경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업

Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년

Chat GPT, Bing AI


다음 글에서는 rdt 2.2에 대해 알아보겠습니다.

 

2023.04.17 - [Computer Science/네트워크] - [네트워크] Principle of RDT - rdt 2.2

 

[네트워크] Principle of RDT - rdt 2.2

앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.17 - [Computer Science/네트워크] - [네트워크] Principle of RDT - rdt 2.1 [네트워크] Principle of RDT - rdt 2.1 앞의 글을 읽으시면 이해에 도움이 됩니다. 2023.04.1

hi-guten-tag.tistory.com

감사합니다.

지적 환영합니다.