Reliable Data Transfer(신뢰성 있는 데이터 전송, 이하 RDT)

 

- 현재까지 송수신간의 신뢰성 있는 데이터 전송 프로토콜을 개발해왔고, 단계적으로 그 과정을 살펴볼 것이다.

 

- 단방향 데이터 전송만을 고려해왔으나 제어 정보는 양방향으로 전송한다.

 

- RDT에서는 송신자와 수신자를 명시하기 위해 유한 상태 머신(Finite State Machines, FSM)을 사용한다.

 

[FSM]

 

 

 

RDT 1.0

 

- 신뢰성 있는(오류 없는) 채널에서 신뢰적인 데이터 전송

 

- 하위 채널에 비트 오류가 없고 패킷(3계층 데이터 단위)의 손실이 없다.

 

- 송신자와 수신자가 분리된 유한 상태 머신을 가지고 있다.

 

- 송신자가 데이터에 헤더를 씌워 패킷으로 만들어 하위 채널로 데이터(패킷)를 전송하면, 수신자는 하위채널로부터 데이터를 받는다.

 

[ 각 2개의 상태를 가지고 있음 ] 

 

 

RDT 2.0

 

- 하위 채널이 패킷에 비트 오류를 일으킬 가능성이 있다.

 

- 해결책으로 헤더에 설정한 체크섬(Checksum)을 통해 오류를 검출한다.

 

- RDT 1.0의 오류복구 기능 : 수신자의 피드백 ACK, NAK

  • Acknowledgements (ACK) : 수신자가 송신자에게 패킷이 잘 도착했음.“을 알리는 방식으로 송신자는 수신자로부터 ACK를 받으면 다음 패킷을 전송한다.
  • Negative Acknowledgements (NAK) : 수신자가 송신자에게 패킷에 오류가 발생했음.“을 알리는 방식으로 송신자는 NAK를 받는 즉시 오류 패킷을 재전송한다.

- 문제점 : ACK/NAK에서도 오류가 발생할 수 있다.

  • 수신측이 보낸 ACK/NAK에 오류가 발생하여 송신측이 계속 기다리게 된다.
  • 송신측에서 오류가 났는지 모르고 있으며, 패킷을 재전송할 수 없다.
  • 송신측에서 중복패킷을 전송할 경우 수신측은 중복수신을 하게 된다.
  • , 비효율적인 링크 사용이 증가한다.

 

 

 

RDT 2.1

 

- RDT 2.0의 해결책 : 각각의 패킷에 순서번호(Seq#)를 추가한다. 그러면 수신측에서 순서번호가 같은 패킷(중복패킷)을 버리게 되므로 중복수신이 방지된다.

 

- 송신자의 입장

  • 패킷에 순서번호(0, 1) 추가 : 패킷은 0->1->0->1번의 순서를 가진다. , 01의 상태로 기억된다.
  • 수신된 ACK/NAK의 오류 여부에 대한 상태가 추가되어 RDT 2.0보다 상태 수가 2배 증가하므로 총 4개의 상태를 가진다.

- 수신자의 입장

  • 순서번호로 중복 패킷의 유무를 조사한다.
  • 마지막으로 보낸 ACK/NAK가 송신측에서 제대로 받았는지 알지 못한다.

 

 

 

RDT 2.2

 

- NAK가 없는 채널에서의 신뢰적인 데이터 전송

 

- NAK가 없다는 점을 제외하고 RDT 2.1의 기능과 같다.

 

- 수신자는 마지막에 올바르게 수신된 패킷의 ACK를 송신자에게 전송한다.

 

- ACK에는 패킷의 순서번호가 포함된다.

 

- 송신자가 중복된(동일한 순서번호의) ACK를 받을 경우 현재 패킷을 재전송한다.(NAK를 받았을 때와 같은 동작)

ex) 송신측에서 ACK 0번을 기다리는데 ACK 1이 올 경우 순서번호 0번의 데이터를 재전송한다. 그 이유는 1번 데이터는 받았으나 0번 데이터를 못받았기 때문이다.

RDT 2.0 

RDT 2.1 


성공수신 -> ACK


중복수신 or 수신실패 -> NAK 


성공수신 or 중복수신 -> ACK 




RDT 3.0

 

- 하위 채널에서의 패킷들(데이터, ACK)의 손실을 고려하였으며, 체크섬 ,순서번호, 재전송 모두 도움은 되나 근본적인 해결이 충분치 않다고 판단

 

- 카운트다운 타이머

  • ACK를 계속 기다리는 것이 비효율적이므로 송신자가 ACK에 대해 충분한 시간을 갖고 기다린다
  • 그러나 해당 타이머 안에 못 받으면(타임아웃되면해당 순서번호의 패킷을 재전송한다.
  • , 패킷이 손실되지 않고 지연되어 송신측이 똑같은 패킷을 재전송하면 중복패킷이 되나 순서번호로 이 문제를 해결할 수 있다. 순서번호가 같으면 수신측에서 드랍하기 때문이다.
  • , 수신자는 ACK 패킷의 순서 번호를 송신자에게 알려야 한다.

- 네트워크 프로토콜이 물리적 자원의 사용을 제한한다. 따라서 재전송을 원하는 만큼 할 수 없다.

 

- 기능적으로 잘 동작하지만 성능은 만족스럽지 못하다.

 



▶ 파이프라인 프로토콜(Pipelined Protocols)


- 배경 : RDT 3.0의 Stop-and-Wait 방식으로 인해 데이터가 많을 경우 대기 시간때문에 링크가 비효율적이게 사용되는 것의 해결책으로 나옴


- 송신자가 ACK의 응답을 받지 않고 다수의 패킷을 전송 (링크의 효율성 증가)

(즉, 송신자는 파이프라인에 최대 N개까지 ACK받지 못한 패킷들을 전송 가능)


- 순서번호 증가, 송신자와 수신자 사이에 패킷을 버퍼링해야함.


- GBN(Go-Back-N)

  • 수신자는 누적된(cumulative) ACK만 전송 (수신된 패킷들의 순서번호 사이에 갭이 있으면 ACK는 응답하지 않음)
  • 수신자는 비순차(out of order) 패킷으로 버퍼링하지 않는다.
  • 송신자는 ACK받지 못한(문제가 생긴) 가장 오래된 패킷부터 모두 재전송 (타이머가 1개)

- Selective Repeat(선택적 반복)

  • 수신된 패킷들 사이에 갭이 있더라도 갭 이후의 패킷들을 수신측에 있는 버퍼에 저장
  • 즉, 수신자는 모든 패킷들에 대해 개별적으로 ACK 응답
  • 상위 게층에 순차적으로 전달하기 위해 비순차 패킷들을 버퍼에 저장
  • 비순차 패킷 -> 순차적으로 정렬 -> 상위 게층으로 전달
  • 송신자는 개별 패킷마다 타이머를 가지고 있다.
  • 문제가 생긴 패킷만 개별적으로 재전송

- TCP는 위 두개의 경우가 하이브리드된 형태로 사용한다.

 

 

Data

 

- Analog Data(아날로그 정보) : 연속적인(continuous) 정보 ex) 사람의 음성

 

- Digital Data(디지털 정보) : 불연속적인(discrete) 정보 ex) 비트(0, 1)

 

- 데이터는 링크로 전송되기 위해 전자기 신호로 변형된다.

 

 


Signal

 

- Analog Signal(아날로그 신호) : 정해진 범위(time) 내의 무한히(infinitely) 많은 값이 신호값을 가진다.

 

- Digital Signal(디지털 신호) : 특정 범위에서만 신호값이 나타난다. , 정의되는 신호값들이 제한적이다.


- Periodic Signal(주기적 신호)

  • 측정 가능한 시간 프레임(주기) 내에 하나의 패턴이 나타나며, 동일한 주기 내에 특정 패턴이 반복적으로 나타난다.
  • Cycle : 하나의 패턴이 완성되기까지 걸린 시간(주기)

 

- Nonperiodic Signal(비주기적 신호)

  • 주기 동안 패턴이나 Cycle이 반복적이지 않고 항상 변한다.

 

- 데이터 통신에서 우리는 공통적으로 주기적 아날로그 신호(periodic analog signal)와 비주기적 디지털 신호(Nnonperiodic digital signal)를 이용한다.

 

 


Periodic Analog Signal (주기적 아날로그 신호)

 

- 대부분 근본적인 형태는 사인 모양의 파형(Sine Wave)이다.

 

- 최대 진폭(Peak amplitude) : 가장 높은 강도(전압)의 절댓값

 

- 주파수(Frequency)

  • 1초 안에 반복되는 패턴(Cycle)
  • 단위 : Hz
  • 주기와 반비례

[빨간색이 최대 진폭, 파란색이 주기]


위상(Phase) : 0초에 대해 상대적인 파형(위치)의 변화이며각도로 나타난다.

 

 (A : 진폭, f : 주파수, t : 시간, : 위상)

 

- 파장(Wavelength)

  • 하나의 신호가 한 주기동안 이동할 수 있는 거리
  • 파장 = 전파 속도(Propagation speed) * 주기
  • 주파수와 매체에 따라 다르다.
  • 종종 광섬유 내부에 빛의 전송을 표현하기위해 이용되어 진다.

 


 

Domain

 

- Time Domain : 시간(x)을 기준으로 진폭(y)을 나타낸 것이다.

 

- Frequency Domain : 주파수(x)을 기준으로 진폭(y)을 나타낸 것으로, 최대 진폭과 주파수에 대한 정보만 있다.

 

[좌 Time Domain, 우 Frequency Domain]


 


 

Composite Signal(복합 신호)

 

- 하나의 사인 파형이 많이 합쳐져서 만들어진 모양이다. , 아날로그 신호이다.

 

- 푸리에 해석(Fourier Analysis)에 의하면, 복합 신호는 다른 주파수, 위상, 진폭을 가진 사인 파형들이 합쳐진 것이다.

 

S(t) = S(t1) + S(t2) + S(t3) + .... ( f는 기본주파수이다.)

 

- Periodic Composite Signal(주기적 복합 신호) : 불연속적이고 값(개수)이 제한적인 주파수를 가진 일련의 사인파형들이 모인 신호이다.

 

  • Time Domain에서는 각 사인 파형들이 연속적으로 나타남
  • Frequency Domain에서는 불연속적인 주파수 모형

 

- Nonperiodic Composite Signal(비주기적 복합 신호) : 연속적이고 무한한 값의 주파수를 가진 사인 파형들이 모인 신호이다.

 

  • Time Domain에서는 무한한 시간값에 대해 신호값을 모두 가진 사인 파형들이 결합된 형태로 나타난다.
  • Frequency Domain에서는 연속적인 주파수값을 보여준다.

- Frequency Spectrum(주파수 스펙트럼) : 모든 신호의 구성요소들을 포함하고 주파수 도메인으로 표현되는 하나의 신호를 나타낸다. 넓을수록 다양한 신호를 포함한다.

 

 


Bandwidth(대역폭)

 

- 복합 신호 내에 가장 높은 주파수와 가장 낮은 주파수간의 차이


- 주파수 스펙트럼의 너비

[해당 이미지에서 Bandwidth = 4000Hz 이다.]

 



Digital Signal

 

[파란선이 디지털 신호, 검은 색이 신호레벨]

 

- 왼쪽이 4(22)개의 Signal Level을 가지고 있고, 오른쪽은 8(23)개의 Signal Level을 가지고 있다.

 

- 신호 레벨에 log2를 취하면 표현할 수 있는 값의 종류가 나타난다. 즉 몇 비트로 나타내는가를 알 수 있다.

 

- Bit rate(or Data rate) : 1초당 비트의 수(bits per second)로 단위는 bps이다.

 

- Bit Length = 전파 속도(Propagation speed) * 1비트당 걸린 시간(bit duration)

전송 매체에서 1비트당 이동한 거리

 

- 디지털 신호는 무한한 대역폭을 가진 복합적 아날로그 신호이다.

 

- 대역폭(bandwidth)와 자료 전송율(data rate)이 비례한다. 이유는 주파수 범위가 넓을수록 초당 더 많은 데이터를 담을 수 있기 때문이다.



 Time Domain

Frequency Domain

Periodic

odd harmony(discrete) 

Nonperiodic 

continuous 


 

 


디지털 신호의 전송

 

- 기저대역 전송 (Baseband Transmission)

  • Baseband : 변조되기 이전에 또는 변조되지 않는 원래 정보 신호들이 있는 저주파 영역
  • Low-pass Channel(저대역 통과채널) : 주파수가 0에서부터 시작하는 대역폭을 가진 채널
  • 자료 전송율(Bit rate)과 대역폭이 서로 비례한다. 고속링크를 원한다면 더 넓은 대역폭이 요구된다.
  • 디지털 신호를 아날로그 신호로 변조하지 않고, 저대역 통과채널만 전용으로 사용하는 매체(dedicated medium)를 이용하여 전송하는 방법
  • , 하나의 링크(매체)에 통신가능한 한 개의 채널을 공급한다. 따라서 복수의 단말기로부터 동시에 데이터 전송이 불가능하다.
  • 넓은 대역폭을 가진 저대역 통과채널을 사용하기 때문에 디지털 신호의 모양을 유지할 수 있다. , 디지털 신호가 저대역 통과채널을 이용할 때만 제대로 간다.


- 광대역 전송 (Broadband Transmission)

  • Bandpass Channel(특정대역 통과채널) : 주파수가 0에서 시작하지 않는 대역폭을 가진 채널
  • 이 채널을 이용하려면, 다른 주파수 대역으로 이동시키기 위해 전송 전에 디지털 신호를 무조건 아날로그 신호로 변조해야한다.
  • 디지털 신호를 아날로그 신호로 변조하여 전송하는 방식으로, 하나의 단일 링크에 주파수를 여러 개의 대역으로 분할하여 채널을 할당하므로 사용하고자 하는 대역으로 각각 독립된 신호를 전송하는 것이 가능하다.
  • 각각의 채널은 서로 다른 주파수에서 이뤄지기 때문에 다른 네트워크 통신을 방해하지 않는다.


+ Recent posts