호우동의 개발일지

Today :

article thumbnail

신뢰적인 데이터 전송의 원리


신뢰적인 채널의 서비스 추상화

  • 상위 계층 객체에게 제공에게 제공된다.
  • 데이터가 전송될 수 있는 신뢰적인 채널의 서비스 추상화이다.
  • TCP 인터넷 애플리케이션에게 제공하는 서비스 모델
    1. 신뢰적인 채널에서 전송된 데이터는 손상이나 손실되지 않는다.
    2. 모든 데이터는 전송된 순서 그대로 전달된다.

신뢰적 데이터 전송 프로토콜의 의무 - 서비스 추상화를 구현

  • 신뢰적인 전송 프로토콜 ‘아래에 있는’ 계층이 신뢰적이지 않을 수 있어서 어려워진다.
    • 예시
      • TCP → IP의 바로 상위에 구현된 신뢰적인 데이터 프로토콜
        • 비신뢰적인 종단 간의 네트워크 계층(IP)

  • 신뢰적으로 통신하는 두 종단점 바로 아래에 있는 계층의 구성
    • 단일 물리적 링크(링크 레벨 프로토콜)
    • 전 세계 인터넷 네트워크(트랜스포트 레벨 프로토콜)

 


신뢰적인 데이터 전송의 과정

신뢰적인 데이터 전송

  • 신뢰적인 데이터 전송 프로토콜의 송신자와 수신자 측면으로 서술
  • 보내진 패킷은 일부 손실될 수 있지만, 보내진 순서대로 전달된다.
    하부 채널은 패킷의 순서를 바꾸지 않는다.

    • 해당 글은 이 가정을 한 상태로 서술하였음
    • 해당 내용은 인터넷 트랜스포트 계층만이 아닌, 컴퓨터 네트워크에 적용됨
      이 글에서는 세그먼트보다 보편적인 패킷이라는 단어를 쓸 것이다.

데이터 전송 프로토콜의 인터페이스 동작

  • 데이터 전송 프로토콜의 송신 측
    • rdt_send() 호출로 위쪽으로부터 호출됨
      • rdt : 신뢰적인 데이터 전송 프로토콜을 나타냄
      • _send() : rdt의 송신 측에서 호출되고 있음을 나타냄

  • 데이터 전송 프로토콜의 수신 측
    • 상위 계층으로 전달될 데이터를 넘긴다.
    • rdt_rcv()는 패킷이 채널의 수신 측으로부터 도착했을 때 호출됨
    • rdt 프로토콜이 상위 계층에 데이터를 전달하려고 할 때 deliver_data() 호출

단방향 데이터 전송(unidirectional data transfer)

  • 단방향 데이터 전송의 경우 송신 측 → 수신 측까지의 데이터 전송만 고려
  • 프로토콜의 송신 측과 수신 측이 양방향으로 패킷을 전달할 필요가 있음
    • 해당 패킷은 전송 데이터를 포함

  • 패킷 교환 외에도 제어 패킷을 양쪽에 전송함
  • rdt의 송신 측과 수신 측은 udt_send()를 호출하여 패킷을 전송한다.
    • udt : 비신뢰적인 데이터 전송(unreliable data transfer)