Network/컴퓨터 네트워크

[7] CH3 Transport 계층

Return 2021. 11. 1. 00:17

신뢰성 있는 데이터 전송 원리 

 

  가정 

- 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를 기다린다.