Computer Science/네트워크

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

바보1 2023. 4. 17. 09:59

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

 

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

 

[네트워크] Principle of Reliable Data Transfer - rdt 1.0

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

hi-guten-tag.tistory.com


1. rdt 2.0

 

 

  • 이제 좀 더 현실적으로 가봅시다. 아래에 놓인 채널이 이제는 약간의 비트 에러를 발생시킨다고 가정합니다.
  • 비트 에러는 일반적으로 패킷이 transmitted, propagates, buffered 될 때 발생합니다.
  • 일단은 모든 패킷이 순서에 맞게 도착하는 것을 보장한다고 가정합니다.
  • 만약 메시지를 제대로 받는다면 수신자는 Positive Acknowledge를 보내어 정상적으로 받았다는 걸 알려주면 되고, 반대의 경우 Negative Acknowledge를 보내어 오류가 발생했다는 것을 알려줍니다.
  • 이렇게 피드백을 줌으로써 송신자는 수신자가 받은 데이터에 오류가 있는지, 따라서 반복해야 하는지 알 수 있습니다.
  • 네트워크에서 이러한 종류의 재전송에 기반을 둔 Reliable Protocol을 Automatic Repeat reQuest(ARQ) Protocols라고 합니다.
  • 이런 ARQ는 비트 에러를 해결하기 위해 추가로 3가지 기능을 가져야만 합니다.
    • Error Detection : 에러 검출이 발생되었다는 것을 알아야만 합니다. 앞선 UDP에서 checksum field가 있었는데, 에러 검출을 위해 존재하는 공간입니다. 수신자가 비트 에러를 파악하고, 올바른 패킷을 수집하게 도와줍니다. 이를 위해 rdt는 추가적인 비트가 필요한데요, 이를 checksum field라 하고, rdt 2.0에는 checksum이 추가되어 있습니다.
    • Receiver Feedback : 오류를 감출 했든, 아니든 수신자는 송신자에게 피드백을 넘겨줘야 합니다. 받은 패킷에서 오류를 검출하지 못했다면 ACK를 전송하고, 오류를 발견했다면 NAK를 전송합니다. rdt 2.0에는 이러한 기능도 추가되어 있습니다.
    • Retransmission : 만약 수신자가 오류를 감지해서 NAK를 전송했다면, 송신자는 반드시 패킷을 Retransmission 해야합니다.

2. FSM

 

 

출처 : Computer Networking 3장. Figure 3.10

  • rdt 2.0의 FSM은 위와 같습니다.
  • rdt 1.0과 달라진 점은 송신측에서 Wait for ACK or NAK가 추가되었고, 수신측에서 ACK or NAK를 전송하는 과정이 추가되었습니다.
  • 송신자는 패킷을 보내고(왼쪽), 수신자의 응답을 기다립니다.(오른쪽)
  • 수신자는 패킷을 받고, 오류가 있는지 확인합니다. 
  • 만약 오류가 있다면 NAK를 전송하고, 오류가 없다면 데이터를 추출하고 ACK를 전송합니다.
  • 송신자는 수신자의 피드백을 받고, ACK라면 다시 전송 상태로 돌아갑니다. 만약 NAK라면 패킷을 재전송 후 다시 피드백을 기다립니다.
  • 송신자가 수신자의 피드백을 기다리는 상황에 있다면, 상위 계층에서의 데이터를 전송할 수 없습니다.
  • 이미 기다리는 상황에 있기 때문에 rdt_send()가 발생하지 않는 것인데요, 따라서 송신자는 현재 패킷이 올바르게 수신자에게 수신되기 전까지 새로운 데이터를 전송하지 않습니다.
  • 이러한 행동 때문에, rdt 2.0을 Stop-and-Wait 프로토콜이라고 합니다.
  • 근데 ACK, NAK가 오류가 생기지 않는다는 보장이 있을까요?
  • 이것마저 오류가 생긴다면 어떻게 해결해야 할까요? rdt 2.1에서 알아봅시다.

참고

 

 

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

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

Chat GPT, Bing AI


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

 

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

 

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

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

hi-guten-tag.tistory.com

감사합니다.

지적 환영합니다.