신뢰성 있는 데이터 전송 원리
가정
- Transport layer는 신뢰적인 채널 제공
- 그 아래 계층은 비신뢰적 채널이다.
- 비신뢰적인 채널의 특징에 따라 신룆거인 데이터 전송 (rdt)protocol의 복잡도가 달라진다.
- 신뢰적인 데이터 전달rdt protocol을 위한 송신측과 수신측 구조를 덧 붙여 설걔
- 단방향 데이터 전달만 고려한다. ( 하지만 제어 정보는 양방향 )
- FSM을 사용하여 송신측과 수신측 동작을 정의한다.
Rdt 1.0 : 신뢰적인 채널을 통한 신뢰적인 전송
- 가정 : 하위계층 채널이 완벽하게 신뢰적인다. ( bit 오류 없고, 패킷 손실 또한 없다. )
- FSM : 송신 측은 data를 하위계층에 전송 , 수신측은 하위계층으로부터 data를 읽어 드림
Rdt 2.0 : Bit 오류가 있는 채널
- 하위 channel은 packet내의 bit 오류를 발생 시킬 수도 있다.
- 질문 : 오류시 대처 방법은 ?
- acknowledgments : 수신측은 packet을 성공적으로 수신하였음을 송신측에 알린다.
- negative acknowledgments : 수신측은 수신된 packet에 오류가 있음을 송신측에 알린다.
- 송신측은 NAK를 수신하면 packet을 재전송한다.
- rdt 2.0의 새로운 기능 : 오류검출 , 수신측은 제어 message를 송신층에 feedback함 , 재전송
Rdt 2.0의 심각한 단점
- ACK / NAK에 오류 손실이 있으면 어떻게 되나 ?
- 손실이 발생하면 , 송신측은 수신측에서 어떤일이 일어났는지 알 지 못함
- 오류가 있을때 단순히 재전송만 할 수 없다. 동일 packet이 중복하여 수신될 수 있기 때문이다.
- 중복 수신을 처리하는 방법
- ACK / NAK의 오류로 인해 송신측은 현재 packet을 재전송
- 송신측은 packet에 sequence number를 추가한다.
- 수신측은 중복 수신된 packet을 제거한다.
* Stop & wait : 송신측은 하나의 packet을 전송한 후에 수신 측으로부터 응답을 기다린다.
Rdt 2.1 : 설명
- 송신측
- packet에 sequence number 추가
- 두개의 sequence number(0,1)로 충분
- 수신된 ACK / NAK에 오류가 있는지 점검
- State 개수가 2배
- 수신측
- 수신된 packet이 중복된것인지 점검
- 수신측은 마지막 ACK / NAK가 송신측에서 성공적으로 수신되었는지 알 수 없다.
Rdt 3.0 : 오류와 손실이 있는 채널
-새로운 가정 : 채널이 packet을 손실
- 접근 방법 : 송신측은 충분한 시간동안 ACK를 기다린다.
'Network > 컴퓨터 네트워크' 카테고리의 다른 글
[9] CH3 Transport 계층 (0) | 2021.11.01 |
---|---|
[8] CH3 Transport 계층 (0) | 2021.11.01 |
[6] CH3 Transport 계층 (0) | 2021.11.01 |
[5] CH2 애플리케이션 계층 (0) | 2021.10.31 |
[4] CH2 애플리케이션 계층 (0) | 2021.10.31 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!