아날로그 정보를 디지털 정보로 변환하기

 

- 무한한 값의 아날로그 정보를 최소한의 정보 손실과 함께 디지털 신호를 나타내기 위해 아날로그 정보를 축소할 필요가 있다.

 

- Modem : Modulator + demodulator의 역할을 하는 변복조기

 

- Codec : Coder + Decoder 의 역할을 함

 

- PCM, DM

 

 

 

Pulse Code Modulation(PCM)

 

- 펄스 부호 변조(이하 PCM)신호 레벨을 균일한 주기로 표본화한 다음 아날로그 정보를 디지털 (이진) 코드로 양자화 처리한다.

 

- 펄스 부호 : 전송될 파형의 특별한 값이나 의미를 갖는 부분만 표본화하는 펄스(신호) 집단

 

- PCM Encoder

 

 

- Sampling (PAM : Pulse Amplitude Modulation)

  • 아날로그 신호는 매 T초 간격(주기)로 표본화되어진다.
  • Sampling Rate or Sampling Frequency
  • 샘플링 간격(T)과 반비례 관계이다.
  • Nyquist 이론에 의해, ( : 기존의 신호에서 가장 높은 주파수, 단위 : Samples/sec )

  • Sample이 적을수록 binary value(데이터)가 적은 것이기 때문에 적은 샘플량으로 정보의 손실을 줄이는 것이 가장 좋다.

 

[T초당 샘플링한다.]

 

[샘플링한 것을 바이너리 값으로 변환하기 위해 정수화시킨다.]

 

 

- Quantization

  • 원래의 아날로그 신호에서 최고 전압과 최저 전압 사이의 진폭을 가진다고 하면, 각각의 높이를 Level 범위로 나눈 뒤, 가까운 중간 값으로 변환하여 정규화 시킨다.
  • 이렇게 정규화된 값들은 0~(L-1) 사이의 숫자를 사용하여 이진 코드로 변환(비트화)된다.
  • 레벨이 작을수록 정규화 에러(오차)가 증가한다. 반대로 레벨이 다양할수록 정밀하게 변환이 가능하다.

 

 

- Encoding

  • 각 샘플이 비트 코드의 글자로 변환된다.
  • 각 샘플당 비트수

(bit/sec = sample/sec * bit/sample)

  • Sample Frequency 이다.

 

- PCM decoder

 

 

- PCM Bandwidth


(N : bps,  : 아날로그 신호의 가장 높은 주파수)

  • 요구되는 최소 대역폭

 

 



Delta Modulation (DM)

 

- 델타 변조(DM)은 아날로그 신호를 일련의 구간으로 나누어 각 구간의 근사치를 구한 뒤, 원본 신호값과의 차이를 구한다. 차이로부터 오차의 증가 및 감소를 결정하고 증가와 감소 상태에서의 변화를 전송한다.

 

- , 이전의 샘플과의 변화를 찾아내어 비트값을 부여하는 방식으로, 올라가면 1, 내려가면 0으로 표시한다.

 

- 샘플당 비트수가 1개면 되니 Data rate이 작으나 오차가 크다.

 

 

[상 Modulator, 하 Demodulator ]




 

전송 방식 - 병렬 전송(Parallel Transmission)

 

- 다수의 비트를 각 클럭(clock) 신호에 함께 전송한다.

 

- 단거리 용으로 제한되어지고, 라인수가 많이 요구되므로 고가의 비용이 든다.

 


 


전송 방식 - 직렬 전송(Serial Transmission)

 

- 하나의 클럭 신호에 하나의 비트를 전송한다.

 

- 하나의 비트를 뒤따라 다른 비트가 전송된다.

 

- 오로지 하나의 채널만 필요하다.

 

- 비동기 전송 방식 (Asynchronous Transmission)

  • 데이터를 일정한 크기로 정하여 순서대로 전송하는 방식이다.
  • 클럭을 맞추기 위해 각 바이트의 처음과 끝에 시간(Timing) 정보를 추가하는데, Start bit의 값은 0이고 Stop bit 값은 1이다.
  • 시간 정보는 중요하지 않으며, 느리다.

 

 

- 동기 전송 방식 (Synchronous Transmission)

  • 각 비트 스트림이 모여서 바이트 스트림이 되고 이것을 우리는 프레임(Frame)이라고 부른다.
  • 여기서 프레임은 데이터 링크 계층의 데이터 단위인 프레임과는 다르다.
  • 비동기식과는 다르게 Start/Stop bit가 없으나 앞과 뒤에 수신측이 알아볼 수 있는 특수한 패턴의 비트 스트림을 추가한다.
  • 시간 정보는 매우 중요하고, 빠르며, 프레임 사이의 간격에 1비트의 실수도 없어야 한다.
  • , 데이터 바이트 배열(프레임)에서 앞, 뒤의 특수 패턴(비트열)과 똑같은 것이 중간에 있게 되면, 수신 측에서 혼란이 올 수 있으므로 같은 패턴을 깨기 위해 중간에 0을 삽입한다.

 

 

- 등시성 전송 방식 (Isochronous Transmission)

  • 전체 비트 스트림이 동기화되어진다.
  • 데이터가 고정된 속도로 도착한다.
  • 실시간 오디오나 비디오와 같은 멀티미디어에 사용된다.

 

 

 



이 때까지 설명해왔듯이 링크로 데이터를 전송하기 위해서는 비트로 구성된 데이터(정보)들을 신호로 바꾸어서 보내야 한다.

 

 


변환 제도

 

- Digital-to-Digital Conversion : 디지털 정보를 디지털 신호로 변환하기

 

- Analog-to-Digital Conversion : 아날로그 정보를 디지털 신호로 변환하기

 

- Digital-to-Analog Conversion : 디지털 정보를 아날로그 신호로 변환하기

 

- Analog-to-Analog Conversion : 아날로그 정보를 아날로그 신호로 변환하기

 

 

 

디지털 정보를 디지털 신호로 변환하기 (Digital-to-Digital)

 

- 변환 기술로는 Line Coding, Block Coding, Scrambling이 있다.

 

- 라인 코딩은 항상 필요로 한다.

 

 

 

Line Coding의 특성

 

- 디지털 데이터를 디지털 신호로 변환하는 기술로, 중간에 Encoder라는 장비가 사용된다.

 

 

- Data Element(데이터 요소) : 정보를 표현할 수 있는 가장 작은 단위, 비트(Bit)

 

- Signal Element(신호 요소) : 디지털 신호의 가장 짧은 단위이며, 하나읫 신호가 데이터 요소들을 옮길 수 있다.

 

- Ratio r : 하나의 신호가 보낼 수 있는 데이터 양, 신호당 비트

 


- r(신호당 비트)가 클수록 데이터 처리량이 많다.

 

- Data Rate(bit rate) : 1초 안에 보내지는 데이터 요소의 개수, 초당 비트수(bps)

 

- Signal Rate(baud rate) : 1초안에 보내지는 신호 요소의 개수, 초당 신호수(baud)

 

- Signal Rate을 줄이고 Data Rate을 증가시키는 것이 목표이다. Signal Rate이 많으면 대역폭이 더 많이 요구되므로 제한된 대역폭을 가진 링크에서는 시그널이 활용되기 어려워지기 때문이다.

 

- (S : signal rate, N : data rate, c : the case factor, r : ratio)

Signal Rate : S = c * N * (1/r)

Data Rate : N = s*r*(1/c)

 

- Bandwidth(대역폭)

  • 주파수의 범위(Frequency Spectrum) = 최고 주파수 - 최저 주파수
  • 디지털 신호는 무한한 대역폭을 필요로 하지만 실제 전송매체가 가질 수 있는 대역폭은 제한적이다.(유효 대역폭)
  • 대역폭은 Signal Rate과 비례한다.

 (최소 대역폭)

 (최대 bps)

 

- 신호 레벨이 L인 신호는 레벨당  비트를 옮긴다

 

- Baseline Wandering(기준선 변동)

  • Baseline : 수신된 신호 파워의 평균
  • 연속된 0이나 1의 비트값을 가진 데이터에 의해 기준선이 움직이는 현상으로, 전압이 오르락내리락한다.


- DC(Direct-Current) Component (직류 성분)

  • 전압 레벨(진폭)이 일시적으로 변하지 않을 때 일어날 수 있는 0인 주파수
  • 주파수와 전압의 관계 : 신호에서 주파수란 “1초당 나타나는 반복적인 패턴의 개수이며, 일반적으로 단위시간(1)당 전압의 변화횟수이다. , 패턴이 3개이면 전압이 3번 변했음을 의미한다. 주파수가 0이란 뜻은 반복되는 패턴이 0(전압의 변화횟수가 0)이며 변화가 없는 전압을 의미한다. 변화가 없는 전압(주파수 0)은 직류가 된다. 전압(진폭)의 평균값이 0에서 커질수록 전압의 변화가 적다.
  • 진폭(Amplitude)의 평균값이 0보다 클 경우 DC성분이 있다고 표현한다.
  • 낮은 주파수를 통과시킬 수 없도록 만들어진 시스템이 있어서 DC 성분이 없도록 Encoding 해야 한다.


- Self-Synchronization (자기 동기화)


  • 송신측이 보낸 데이터와 수신측이 받은 데이터에서 비트 간격이 일치하는 것을 의미한다.
  • 자기 동기화 디지털 신호는 전송되는 데이터에 시간정보를 포함한다.
  • 수신측에서 정보를 올바르게 못 받는 경우를 대비하여 처음, 중간, 끝에 Transition을 넣어 고의로 숫자를 바꿔줌.

 

- 내제된 오류를 검출하고 잡음과 간섭에 강인하다.

 

- 복잡하다.

 

 

 

[Line Coding Summary]


 

 

Unipolar Scheme

 


- Uni 는 하나라는 뜻이고 Polar는 극성(+, -)이라는 뜻이다. 즉 하나의 극성을 가진다는 의미로 받아들이면 될 것이다. 전압 레벨이 양의 값과 0만 가지는 것을 암시한다.

 

- NRZ(Non-Return-to-Zero)

  • 하나의 신호에서 전압 레벨(진폭)이 변하지 않는다.
  • 비트 값 1 : +Volt, 0: 0Volt 로 표현한다.
  • 진폭이 0 밑으로 떨어지지 않으므로 DC 성분이 있다.
  • 매우 고가이다.
  • 표준 PowerPolarNRZ 보다 2배나 더 요구된다. , Polar Scheme보다 안좋다.

 

 

 

Polar Scheme

 

- Polar는 극성(+,-)이라는 뜻이므로, 전압 레벨이 양과 음으로만 표현되는 것을 나타낸다.

 

[ 상 NRZ-L, 하 NRZ-I ]


- NRZ(Non-Return-to-Zero)

  • 두 개의 전압 레벨을 가진다. 비트값이 0일 때 +Volt, 1일 때 -Volt이다.
  • 그래프 상에서 전압이 시간축의 양 쪽에 있다.
  • NRZ-L(NRZ-Level) : 전압 레벨이 비트값을 결정한다.
  • NRZ-I(NRZ-Inverse) : 전압 레벨의 변화(비트 시작의 transition의 유무)가 비트값을 결정한다. 변화가 있으면 1, 없으면 0이다. , 연속된 1이면 변화가 있으므로 self-sync가 있는 것이고, 연속된 0이면 변화가 없으므로 self-sync가 없는 것이다. NRZ-L에 비해 상대적으로 DC가 덜하다. , 연속된 0일 때 기준선 변동(Baseline Wandering) 문제가 발생한다.
  • 문제점 : 기준선 변동, 동기화, DC성분이 있다.

 


[RZ]


- RZ(Return-to-Zero)

  • 세 개의 전압 레벨 : +Volt, -Volt, 0Volt
  • 신호가 중간에 0으로 간다. 비트 사이에서는 변화가 없다. 오로지 비트 중간에만.
  • 송신과 수신간의 self-sync가 가능하다.
  • 비트당 신호가 2배로 요구되므로 필요로하는 대역폭이 증가하게 된다. 복잡성을 띈다.
  • 진폭(전압)의 평균값이 0보다 크므로 연속된 0, 1에서 DC가 발생한다.

 


[ 3번째 Biphase ]


- Biphase 

  • 두 개의 전압 레벨을 가진다.
  • 각 비트의 중간에 Transition이 있다
  • 끊어 읽기 좋으므로 자기 동기화(self-sync)가 된다.

 

  • Mancheter (RZ+NRZ-L) : 비트의 시작점에서 전압레벨이 비트 값을 결정한다. ( 0: + → - , 1: - → + ) 비트 시작점이 high에서 low인  + - 로 변하면 비트값은 0이고, 반대로 - + 로 변하면 비트값은 1인 것이다. 또한 연속된 0, 1이 나와도 평균 내면 무조건 0이 나오는 구조이므로 DC성분이 없다.
  • Differential Manchester (RZ+NRZ-I) : 비트의 시작점에서 Transition이 비트값을 결정한다. , Transition이 있으면 0, 없으면 1이다.
  • +, - Volt만 사용하므로 하드웨어적으로 구현하기 쉽다. 기준선 변동 및 DC성분은 없으나, 신호당 비트가 2개씩 증가하므로 필요한 대역폭이 NRZ보다 2배로 넓다.

 

 

 

Bipolar Scheme

 

- Bipolar는 양극성이라는 뜻으로 하나의 비트값에서 전압레벨이 교대로 나타나는 것을 의미한다.

 

- 세 개의 전압을 사용 : +Volt, -Volt, 0Volt

 

- 장거리 통신에 이용되어진다.

 

- DC 성분이 없다.

 

 

- AMI (Alternate Mark Inversion)

  • 처음 나오는 1high(+Volt), 그 다음은 low(-Volt)를 표시하며, 00Volt로 표시한다.
  • 규칙적으로 1을 바꾸기(self-sync O) 때문에 진폭의 평균값이 0에 가까워진다.
  • 그러나 연속된 0에서 싱크가 안 맞으므로 끊어 읽기가 어려워진다. (self-sync X)

- Pseudotemary (AMI와 반대)

  • 처음 나오는 0high(+Volt), 그 다음은 low(-Volt)를 표시하며, 10Volt로 표시한다.
  • 연속된 0에서 싱크가 맞고, 연속된 1에서 싱크가 안 맞으므로 self-sync X

- 싱크가 안 맞는 부분을 해결하기 위해 Scrambling을 사용한다.

 

 

 

Block Coding

 

- 싱크를 맞추고 내제된 오류를 검출하고자 불필요한 중복을 추가하는 방식이다.

 

[ mB/nB Encoding ]


- mB/nB Encoding (n>m) : m 비트의 데이터를 n 비트의 데이터로 변환하는 것.

 

- 데이터 정보를 m 비트의 단위로 나눈 뒤, 각 비트의 순서에 맞게 n 비트로 변환시킨다. 마지막으로 n 비트 단위로 결합되어진다.

 

- Signal rate이 증가하고, DC 성분이 생긴다. 비트수가 증가하기 때문에 오버헤드가 발생한다.

 

- 4B/5B가 일반적으로 사용된다.

 

전송순서는 11101 ... 01001 ... 11110 으로 그대로 간다.]


- 동기화 문제(싱크)가 해결된다.

 

- 비트수를 늘리면서 최대 0의 개수를 3(5B기준)로 줄인다. 그러면 연속된 0의 개수가 줄어들게 되고 오류가 최소화 된다. 실제로 0의 개수가 많을수록 기기가 버티기 어렵다.

 

- 비트수가 늘어나면 기존의 데이터를 표현하는 개수가 늘어나개 되므로 나머지 패턴이 발생한다. 나머지 패턴은 일종의 내제된 오류(Built-in-Error)로 본다.

 

[ Line Coding 기법에 추가로 4B/5B 기법이 사용됨 ]


 


Scrambling

 

- 싱크를 맞추기 위해 긴 연속된 0을 다른 전압레벨로 변환시키는 방식이다.

 

- +Volt 다음에 -Volt가 나타나는 것이 정상이나, +Volt 다음 +Volt가 나오게 만드는데 이와 같이 없을법한 패턴을 생성하여 연속된 0을 최대 3개까지만 허용한다.

 

- B8ZS (Bipolar with 8-Zero Substitution)

  • AMI + Scrambling : 없을법한 패턴을 생성하여 AMI의 연속된 0을 깨주는 방식
  • 8개의 연속된 0들이 000VB0VB의 패턴으로 대체되어진다.

 

 

 

 

Transmission Impairment

 

- 완벽하지 않은 전송 매체에 의해 처음과 끝의 신호가 서로 달라진다.

 

- 감쇠, 왜곡, 잡음이 원인이다.

 

 

 

감쇠(Attenuation)

 

- 신호가 전송될 때 전송매체에 의해 에너지가 흡수됨으로써 에너지의 손실이 발생하는 현상

 

- Decibel(dB) : 두 신호 간의 혹은 다른 두 지점에서 하나의 신호가 가지는 상대적 세기

 

- , 데시벨(dB)는 전력의 감쇠나 이득을 나타내는 단위이다.

 

- 전력의 변화량 (P1:처음 신호의 세기, P2:나중 신호의 세기)

 

- 감쇠된 신호를 복구하기 위해 증폭기(Amplification)이 사용된다.

 


 

왜곡(Distortion)

 

- 신호 모양(형태)의 변형

 

- 복합신호를 이루는 각각의 신호들이 다른 속도를 가짐으로써 발생한다. , 주파수에 따라 전파 속도에 차이가 생긴 것이다.

 

- 전파 속도의 차이는 위상 차이를 일으키게 되며, 그 차이가 클수록 왜곡률이 증가한다. 따라서 신호가 약해진다.

 

 

 

잡음(Noise)

 

- 전송 매체 외에 원하지 않는 에너지가 합쳐지는 현상

 

- 열잡음(Thermal Noise) : 유선에서 전자의 예측하지 못한 움직임에 의해 발생한다.

 

- 유도 잡음(Induced Noise) : 모터나 가전제품과 같은 전자제품간의 간섭에 의해 발생한다.

 

- 누화(Crosstalk) : 하나의 선이 다른 선에 영향을 미치게 되어 발생한다.

 

- 충격 잡음(Impulse Noise) : 전력 라인이나 다른 원인에 의해 스파크가 발생하는 것이다.

 

- 신호 대 잡음비(Signal-to-Noise, SNR) : 잡음으로부터의 신호의 깨끗함을 나타내는 단위이다.

  • SNR = (average signal power) / (average noise power) = S/N

- SNR이 클수록 변형이 적다.

 

 

 

Data Rate Limit

 

- 자료 전송율(Data Rate)을 결정하는 요인

  • 이용 가능한 대역폭과 비례
  • 신호의 레벨 개수와 비례
  • 채널의 퀄리티(잡음의 정도)와 반비례

 

- 이론적으로 자료 전송율을 계산하는 식

  • 잡음이 없는 채널에 대한 Nyquist : 이론적으로 최대   ( L : 신호 레벨 값)
  • 잡음이 있는 채널에 대한 Shannon : 이론적으로 가장 높은 

 


 

Latency(Delay)

 

- 전체 지연 시간 : 전파지연 + 전송지연 + 큐잉지연 + 처리지연(굉장히 작은편)

 

- 전파지연 = 송수신간의 거리 / 신호의 전파 속도(m/s)

 

- 전송지연 = 메시지 크기(bits) / 자료전송율(bps)

 

- 큐잉지연 : 각 노드에 먼저 들어온 패킷이 처리 완료될 때까지 일시적으로 대기하는 시간

(패킷이 큐의 범위를 초과하면 손실될 수 있다.)


- 처리지연 : 데이터의 오류 등을 처리하는데 걸린 시간

 

 


Bandwidth-Delay Product

 

- 대역폭 지연곱 : 일정시간동안 링크의 최대 데이터 처리량

 

- Bandwidth * Delay

 

 

 

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는 위 두개의 경우가 하이브리드된 형태로 사용한다.

+ Recent posts