본문 바로가기

Computer Science/네트워크

[네트워크] ch3.4 신뢰적 데이터 전송(reliable data transfer)(rdt)

728x90
반응형

# 신뢰적 데이터 전송(reliable data transfer)

1) 방법

- 신뢰적 채널 이용

- 비신뢰적 채널 이용: 트랜스포트 레이어에서 신뢰적 데이터 전송 프로토콜 이용

2) 과정

- 비신뢰적 데이터 전송: 상위계츨-> rdt_send() -> 신뢰적 데이터 전송 프로토콜(발신) -> udt_send() -> rdt_rcv() -> 신뢰적 데이터 전송 프로토콜(수신) -> deliver_data()-> 상위계층

5. 종류

1) rdt1.0

- 완전 신뢰적인 데이터 전송

- 신뢰적 채널 이용

- 송/수신 분리된 fsm

- FSM(finite state machine) : 데이터 송수신 관계 표시(state 상태 표시)

2) rdt2.0

- unreliable 한 전송

- 수신자가 에러 검사 -> ACK(OK),NAK(에러) -> NAK수신시 재전송

  • (1) 에러 없는 경우
  • - rdt_send() -> make_pkt -> udt_send() -> 리시버가 에러검사-> 에러 없으면 extract -> deliver-> ACK 전송 -> 센더가 ACK 수신
  • (2) 에러인 경우
  • - rdt_send() -> make_pkt()-> udt_send() -> 리시버가 에러 검사 -> 에러시 NAK 송신-> 센더가 NAK 수신 -> 재전송
  • (3) 결함
  • - ACK, NAK 에 에러나면? -> 해결: 각 패킷에 시퀀스 번호 부여 = rdt2.1
  • - 스톱 엔 에러 : 센더가 패킷 전송을 하고 리시버의 응답이 올때까지 보내고 기다리는 것

3) rdt2.1

  • 각 패킷에 시퀀스 넘버 부여
  • 센더 FSM: 0번 패킷 전송-> ACK,NAK 0 대기-> ACK이면 1번 전송-> ACK,NAK1대기 ->0번전송
  • 리시버 FSM: 0번 대기 -> 에러면 NAK , 1번이면 ACK -> 1번 대기 -> 같은 과정 반복

4) rdt2.2

  • 개념: rdt2.1 에서 ACK만을 사용한 것
  • 과정 : 송신자 0번 대기 -> 0번 ACK 대기 -> 에러없으면 0번 ACK 수신(에러면 1번 ACK 수신) 

5) rdt3.0

  • 개념:  패킷 loss 까지 고려한 것으로 rdt2.1에 타이머 추가한 것
  • 과정: 송 수신 간 패킷손실로 응답을 못 받음-> 타이머 초과하면 재전송

  • 수신이 늦어져서 중복 송신이 될 수 있음 -> 리시버에서 중복 처리
반응형