IT 프로그래밍/컴퓨터네트워크

[컴퓨터네트워크] 신뢰성

기술1 2024. 12. 3. 15:40
반응형

신뢰적 데이터 전송

서비스 추상화를 구현하는 것은 신뢰적인 데이터 전송 프로토콜(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)의 동작 정리

  1. 상태
    • 샌더는 대기 상태에 있습니다.
    • 이는 상위 계층(Application Layer)으로부터 데이터 전송 요청이 올 때까지 기다리는 상태를 의미합니다.
  2. 동작 발생 조건
    • 상위 계층에서 데이터 전송 요청이 발생하면 rdt_send(data) 함수가 호출됩니다.
    • 이 호출은 상위 계층의 응용 프로시저에 의해 발생합니다.
  3. 상태 전환
    • 요청이 오면 데이터 전송 작업을 처리한 뒤, 다시 기다리는 상태로 복귀합니다.
    • 즉, 자기 자신으로 돌아오는 상태 전환이 이루어집니다.

하위채널이 신뢰성이 있다고 가정했기 때문에 UDP sender로 보내면 하위 계층에서 신뢰성있게 전달해줄 거니깐 오류 없이 전송됩니다. 또 상위계층으로 요청이 올 때까지 기다리면 됩니다.

 

수신측(Receiver)의 동작 정리

  1. 상태
    • 수신측은 대기 상태에 있습니다.
    • 하위 계층(네트워크 계층)으로부터 패킷이 도착하기를 기다리는 상태입니다.
  2. 동작 발생 조건
    • 하위 계층으로부터 패킷이 도착하면 rdt_rcv(packet)이 호출됩니다.
  3. 작업 과정
    • 수신된 패킷에서 데이터(payload)를 추출.
    • 추출한 데이터를 상위 계층의 응용 프로세스로 전달하기 위해 deliver_data(data)를 호출.
  4. 상태 전환
    • 데이터 전달 작업이 끝난 후 다시 대기 상태로 복귀합니다.

수신측은 송신측에 어떤 피드백도 제공할 필요가 없습니다.

 

반응형