앞의 글을 읽으시면 이해에 도움이 됩니다.
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

- 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
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] Principle of RDT - rdt 2.2 (0) | 2023.04.17 |
---|---|
[네트워크] Principle of RDT - rdt 2.1 (0) | 2023.04.17 |
[네트워크] Principle of RDT - rdt 1.0 (0) | 2023.04.17 |
[네트워크] Principles of Reliable Data Transfer (0) | 2023.04.17 |
[네트워크] UDP - Segment Structure (0) | 2023.04.15 |