신뢰성있는 데이터 전송의 원리

Stormi·2022년 8월 5일
0

네트워크

목록 보기
34/37

computer networking A top-down approach의 레퍼런스를 활용하였습니다.

오류가 있을 때

비트 오류가 있는 채널 상에서의 신뢰적 데이터 전송 : rdt2.0

하위 채널의 더 실질 모델은 패킷안의 비트들이 하위 채널에서 손상되는 모델이다. 그러한 비트 오류는 패킷이 전송 또는 전파되거나 버퍼링 될때 네트워크의 물리적 구성 요소에서 일반적으로 발생한다. 전송된 모든 패킷들이 송신된 순서대로 수신한다고 가정한다.

이것은 실생활에서 우리가 상대방이 한 말을 알아 들었을 때, 알아들었다는 표시를하고 아니면 다시 말해달라고 반복요청을 한다. 이런것 처럼 메시지 받아쓰기 프로토콜은 긍정확인응답과 부정 확인 응답을 둘 다 사용한다.컴퓨터 네트워크 설정에서 재전송을 기반으로 하는 신뢰적인 데이터 전송 프로토콜은 자동 재전송 요구 프로토콜(ARQ, Automic Repeat reQuest)로 알려져 있다.

비트 오류를 처리하기 위해서 기본적으로 다음 세가지 부가 프로토콜 기능들이 ARQ 프로토콜에 요구된다
1. 오류검출
2. 수신자 피드백
3. 재전송

rdt2.0의 송신측은 2개의 상태를 가진다. 만약 ACK패킷이 수신된다면 송신자는 가장 최근에 전송된 패킷이 정확하게 수신되었다는 것을 알게된다. 그래서 프로토콜은 상위 계층으로부터 데이터를 기다르는 상태로 돌아간다. 만약 NAK가 수신되면 프로토콜은 마지막패킷을 재전송하고 재전송된 데이터 패킷에 대한 응답으로 수신자에 의해 응답되는 ACK또는 NAK를 기다린다. 송신자가 ACK, NAK를 기다리는 상태에 있을 때, 상위 계층으로부터 더이상 데이터를 전달 받을 수 없다. 즉, rdt_send()이벤트는 더이상 발생 할 수 없다. 송신자가 ACK를 수신하고 이 상태를 떠난 후에야 발생할 것이다. 이러한 행동 때문에 rdt2.0과 같은 프로토콜은 전송-후-대기 프로토콜로 알려져 있다. rdt2.0의 수신자는 단일 상태를 갖는다. 패킷이 도착했을 때 수신자는 수신된 패킷이 손상되었는지 아닌지에 따라 ACK또는 NAK로 응답한다. rdt2.0은 ACK또는 NAK이 손상될 수 있다는 가능성을 고려하지않은 큰 결함이있다.

이 문제를 해결하기 위한 방법은 데이터 패킷에 새로운 필드를 추가하고 이필드안에 순서번호를 삽입하는 방식으로 데이터 패킷에 송신자 번호를 붙이는 것이다. 수신자는 수신된 패킷이 재전송인지를 결정할 때는 이 순서 번호만 확인하면 된다. 이러한 간단한 전송-후-대기 프로토콜의 경우, 한 비트 순서번호면 송신자가 이전에 전송된 패킷을 다시 전송한 것인지 (수신된 패킷의 순서번호는 가장 최근에 수신된 패킷과 동일한 순서번호를 갖는다.)
아니면 새로운 패킷(순서번호가 변함)을 전송한 것인지 충분히 알수 있다.

0개의 댓글