반응형
신뢰적 데이터 전송
서비스 추상화를 구현하는 것은 신뢰적인 데이터 전송 프로토콜(RDT)의 의무입니다.
비신뢰적인 채널의 특성이 rdt의 복잡도를 결정합니다.
RDT(Reliable Data Transfer protocol) : interface
rdt_send
udt_send
rdt_rcv()
deliver_data()
이 4가지를 이용해 전송측의 신뢰를 구현합니다.
- rdt_send()
- 역할: 전송 측의 **상위 계층(Application Layer)**에서 데이터를 받아 rdt 프로토콜을 통해 수신 측으로 전달.
- 설명:
- 상위 계층이 호출하여 데이터를 rdt 프로토콜로 전달.
- 전송 측에서 수신 측 응용 계층으로 데이터를 전달하는 과정을 시작하는 함수.
- udt_send()
- 역할: 실제로 패킷을 **하위 계층(unreliable channel)**으로 전달하여 수신 측으로 전송.
- 설명:
- rdt 프로토콜에 의해 호출됨.
- 패킷을 네트워크 계층으로 전달하며, 하위 계층의 unreliable channel을 사용.
- 목적지에 패킷을 전달하는 기능 수행.
- rdt_rcv()
- 역할: 수신 측에서 패킷을 수신하는 인터페이스.
- 설명:
- 수신 측에서 패킷이 도착했을 때 호출됨.
- 패킷을 받아서 상위 계층으로 전달할 준비를 함.
- deliver_data()
- 역할: 수신 측의 rdt 프로토콜이 데이터를 **상위 계층(Application Layer)**으로 전달.
- 설명:
- 수신 측 rdt 프로토콜에 의해 호출.
- rdt 프로토콜이 패킷에서 데이터를 추출하여 응용 계층 프로세스로 전달.
Reliable data transfer : getting started
신뢰적인 데이터 전송 프로토콜의 송신측과 수신측을 점진적으로 개발
단방향 데이터 전송만을 고려 ( 제어정보는 양방향으로 전송됨 )
송신측과 수신측을 기술하기 위해 유한상태기계 (fsm)을 사용
Rdt 1.0
하위 채널이 신뢰성있는 채널로 가정(perfectly reliable)
- 비트오류 없음
- 패킷오류 없음
100% 정확하게 패킷이 도착한다고 가정을 한 것이 Rdt 1.0입니다. 이 경우 sender와 receiver 사이의 state machine으로 평가할 것입다.
샌더(Sender)의 동작 정리
- 상태
- 샌더는 대기 상태에 있습니다.
- 이는 상위 계층(Application Layer)으로부터 데이터 전송 요청이 올 때까지 기다리는 상태를 의미합니다.
- 동작 발생 조건
- 상위 계층에서 데이터 전송 요청이 발생하면 rdt_send(data) 함수가 호출됩니다.
- 이 호출은 상위 계층의 응용 프로시저에 의해 발생합니다.
- 상태 전환
- 요청이 오면 데이터 전송 작업을 처리한 뒤, 다시 기다리는 상태로 복귀합니다.
- 즉, 자기 자신으로 돌아오는 상태 전환이 이루어집니다.
하위채널이 신뢰성이 있다고 가정했기 때문에 UDP sender로 보내면 하위 계층에서 신뢰성있게 전달해줄 거니깐 오류 없이 전송됩니다. 또 상위계층으로 요청이 올 때까지 기다리면 됩니다.
수신측(Receiver)의 동작 정리
- 상태
- 수신측은 대기 상태에 있습니다.
- 하위 계층(네트워크 계층)으로부터 패킷이 도착하기를 기다리는 상태입니다.
- 동작 발생 조건
- 하위 계층으로부터 패킷이 도착하면 rdt_rcv(packet)이 호출됩니다.
- 작업 과정
- 수신된 패킷에서 데이터(payload)를 추출.
- 추출한 데이터를 상위 계층의 응용 프로세스로 전달하기 위해 deliver_data(data)를 호출.
- 상태 전환
- 데이터 전달 작업이 끝난 후 다시 대기 상태로 복귀합니다.
수신측은 송신측에 어떤 피드백도 제공할 필요가 없습니다.
반응형
'IT 프로그래밍 > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] TCP - (1) | 2024.12.03 |
---|---|
[컴퓨터네트워크] 파이프라인 (0) | 2024.12.03 |
[컴퓨터네트워크] Multiplexing and Demultiplexing (0) | 2024.12.02 |
[컴퓨터네트워크] 전송계층 프로토콜 설명 (0) | 2024.12.02 |
[컴퓨터네트워크] (1) | 2024.10.20 |