신뢰적인 데이터 전송의 원리
신뢰적인 채널의 서비스 추상화
- 상위 계층 객체에게 제공에게 제공된다.
- 데이터가 전송될 수 있는 신뢰적인 채널의 서비스 추상화이다.
- TCP 인터넷 애플리케이션에게 제공하는 서비스 모델
- 신뢰적인 채널에서 전송된 데이터는 손상이나 손실되지 않는다.
- 모든 데이터는 전송된 순서 그대로 전달된다.
신뢰적 데이터 전송 프로토콜의 의무 - 서비스 추상화를 구현
- 신뢰적인 전송 프로토콜 ‘아래에 있는’ 계층이 신뢰적이지 않을 수 있어서 어려워진다.
- 예시
- TCP → IP의 바로 상위에 구현된 신뢰적인 데이터 프로토콜
- 비신뢰적인 종단 간의 네트워크 계층(IP)
- 비신뢰적인 종단 간의 네트워크 계층(IP)
- TCP → IP의 바로 상위에 구현된 신뢰적인 데이터 프로토콜
- 예시
- 신뢰적으로 통신하는 두 종단점 바로 아래에 있는 계층의 구성
- 단일 물리적 링크(링크 레벨 프로토콜)
- 전 세계 인터넷 네트워크(트랜스포트 레벨 프로토콜)
신뢰적인 데이터 전송의 과정
- 신뢰적인 데이터 전송 프로토콜의 송신자와 수신자 측면으로 서술
- 보내진 패킷은 일부 손실될 수 있지만, 보내진 순서대로 전달된다.
→ 하부 채널은 패킷의 순서를 바꾸지 않는다.
- 해당 글은 이 가정을 한 상태로 서술하였음
- 해당 내용은 인터넷 트랜스포트 계층만이 아닌, 컴퓨터 네트워크에 적용됨
→ 이 글에서는 세그먼트보다 보편적인 패킷이라는 단어를 쓸 것이다.
데이터 전송 프로토콜의 인터페이스 동작
- 데이터 전송 프로토콜의 송신 측
rdt_send()
호출로 위쪽으로부터 호출됨rdt
: 신뢰적인 데이터 전송 프로토콜을 나타냄_send()
: rdt의 송신 측에서 호출되고 있음을 나타냄
- 데이터 전송 프로토콜의 수신 측
- 상위 계층으로 전달될 데이터를 넘긴다.
rdt_rcv()
는 패킷이 채널의 수신 측으로부터 도착했을 때 호출됨- rdt 프로토콜이 상위 계층에 데이터를 전달하려고 할 때
deliver_data()
호출
단방향 데이터 전송(unidirectional data transfer)
- 단방향 데이터 전송의 경우 송신 측 → 수신 측까지의 데이터 전송만 고려
- 프로토콜의 송신 측과 수신 측이 양방향으로 패킷을 전달할 필요가 있음
- 해당 패킷은 전송 데이터를 포함
- 해당 패킷은 전송 데이터를 포함
- 패킷 교환 외에도 제어 패킷을 양쪽에 전송함
- rdt의 송신 측과 수신 측은
udt_send()
를 호출하여 패킷을 전송한다.udt
: 비신뢰적인 데이터 전송(unreliable data transfer)