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에 타이머 추가한 것
- 과정: 송 수신 간 패킷손실로 응답을 못 받음-> 타이머 초과하면 재전송
- 수신이 늦어져서 중복 송신이 될 수 있음 -> 리시버에서 중복 처리
반응형
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] ch2.5 P2P applications(파일의 분배) (0) | 2021.07.19 |
---|---|
[네트워크] ch3.4 파이프 라인 (pipeline) (0) | 2021.06.21 |
[네트워크] ch3.3 UDP (0) | 2021.06.21 |
[네트워크] ch3.1 transport-layer 트랜스포트 레이어 (0) | 2021.06.21 |
[네트워크] ch2.4 DNS (0) | 2021.06.21 |