전송 오류 제어: Difference between revisions

From IT Wiki
Line 70: Line 70:


== 오류 제어 방식 ==
== 오류 제어 방식 ==
=== 자동 반복 요청(ARQ, Automatic Repeat reQuest) ===
;자동 반복 요청(ARQ, Automatic Repeat reQuest): 통신 경로에서 에러 발생시 수신측은 에러의 발생을 송신 측에 통보하고 송신측은 에러가 발생한 프레임을 재 전송하는 방식
;통신 경로에서 에러 발생시 수신측은 에러의 발생을 송신 측에 통보하고 송신측은 에러가 발생한 프레임을 재 전송


==== 정지-대기(Stop-and-Wait) ARQ ====
=== 정지-대기(Stop-and-Wait) ARQ ===
* 송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음 에러 발생 유무 신호를 보내올 때까지 기다리는 방식이다.
* 송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음 에러 발생 유무 신호를 보내올 때까지 기다리는 방식이다.
* 수신 측의 응답이 긍정 응답(ACK)이면 다음 블록을 전송하고, 부정 응답(NAK)이면 앞서 송신했던 블록을 재 전송한다.
* 수신 측의 응답이 긍정 응답(ACK)이면 다음 블록을 전송하고, 부정 응답(NAK)이면 앞서 송신했던 블록을 재 전송한다.
* 전송 효율이 가장 낮고, 오류가 발생한 블록만 재 전송하므로 구현 방법이 가장 단순하다.
* 전송 효율이 가장 낮고, 오류가 발생한 블록만 재 전송하므로 구현 방법이 가장 단순하다.


=== 연속 ARQ ===
=== Go-Back-N ARQ ===
;Continuous Automatic Repeat reQuest
 
==== Go-Back-N ARQ ====
* 여러 블록을 연속적으로 전송하고, 수신 측에서 부정 응답(NAK)을 보내오면 송신 측이 오류가 발생한 블록부터 모두 재 전송
* 여러 블록을 연속적으로 전송하고, 수신 측에서 부정 응답(NAK)을 보내오면 송신 측이 오류가 발생한 블록부터 모두 재 전송
* 에러가 발생한 블록 이후의 모든 블록을 다시 재 전송
* 에러가 발생한 블록 이후의 모든 블록을 다시 재 전송
* 에러가 발생한 부분부터 모두 재 전송 하므로 중복 전송 문제
* 에러가 발생한 부분부터 모두 재 전송 하므로 중복 전송 문제


==== 선택적 재전송 ARQ ====
=== 선택적 재전송 ARQ ===
;Selective-Repeat Automatic Repeat reQuest
;Selective-Repeat Automatic Repeat reQuest
* 여러 블록을 연속적으로 전송하고, 수신측에서 부정 응답(NAK)을 보내오면 송신측이 오류가 발생한 블록만을 재 전송
* 여러 블록을 연속적으로 전송하고, 수신측에서 부정 응답(NAK)을 보내오면 송신측이 오류가 발생한 블록만을 재 전송
* 복잡한 논리 회로와 큰 용량의 버퍼 필요
* 복잡한 논리 회로와 큰 용량의 버퍼 필요


==== 적응적 ARQ ====
=== 적응적 ARQ ===
;Adaptive Automatic Repeat reQuest
;Adaptive Automatic Repeat reQuest
* 전송 효율을 최대로 하기 위해서 데이터 블록의 길이를 채널의 상태에 따라 그때 그때 상태에 따라서 동적으로 변경하는 방식
* 전송 효율을 최대로 하기 위해서 데이터 블록의 길이를 채널의 상태에 따라 그때 그때 상태에 따라서 동적으로 변경하는 방식
* 전송 효율이 제일 좋으나, 제어 회로가 복잡하고 비용이 많이 들어 현재는 거의 사용하지 않음.
* 전송 효율이 제일 좋으나, 제어 회로가 복잡하고 비용이 많이 들어 현재는 거의 사용하지 않음.

Revision as of 14:32, 12 January 2020


오류

감쇠

Attenuation
  • 전송 신호가 전송 매체를 통과하는 과정에서 거리에 따라 점차 약해지는 현상
  • 주파수가 높을수록 감쇠 현상이 심해지고, 감쇠 현상을 해결하기 위해 중계기 이용

지연 왜곡

Delay Distortion
  • 주로 유선 전송 매체에서 발생
  • 하나의 전송 매체를 통해 여러 신호를 전달했을 경우 주파수에 따라서 그 속도가 달라짐으로써 발생

상호 변조 잡음

Intermodulation Noise
  • 서로 다른 주파수들이 하나의 전송 매체를 공유할 때 주파수 간의 합이나 차로 인해 새로운 주파수가 생성

충격 잡음(Impulse Noise)

  • 비연속적이고 불규칙한 진폭을 가지며, 순간적으로 높은 진폭이 발생하는 잡음
  • 번개와 같은 외부적인 충격이나 기계적인 통신 시스템에서의 결함 등이 원인
  • 디지털 데이터를 전송하는 경우 중요한 오류 발생의 원인이 됨

오류 제어 방식

전진 에러 수정

FEC, Forward Error Correction

데이터 전송 과정에서 발생한 오류를 검출하여 재 전송 요구 없이 스스로 수정

  • 송신 측에서는 문자나 프레임에 오류 검출을 위한 부가 정보를 추가시켜 전송
  • ARQ 방식과는 달리 재 전송 요구가 없기 때문에 역 채널이 필요 없고, 연속적인 데이터 흐름 가능
  • 데이터 비트 이외에 오류 검출 및 수정 비트(잉여비트)들이 추가로 전송되기 때문에 전송 효율은 낮음
  • 대표적인 예로 해밍(Hamming) 코드 방식과 상승 코드 방식

후진 에러 수정

BEC, Backward Error Correction

데이터 전송 과정에서 오류가 발생하면 송신 측에 재 전송을 요구하는 방식

  • 패리티 검사, CRC등을 사용하여 오류를 검출
  • 오류 제어는 자동 반복 요청(ARQ, Automatic Repeat reQuest)으로 수행

오류 검출 방식

패리티 검사

Parity Check
  1. 데이터 한 블록 끝에 1비트의 검사 비트(Parity Bit)를 추가하여 전송 에러를 검출
  2. 짝수(우수) 패리티
    • 전송 비트 내의 1의 개수가 짝수가 되도록 하는 것
  3. 홀수(기수) 패리티
    • 전송 비트 내의 1의 개수가 홀수가 되도록 하는 것
  4. 수직 패리티 체크 방식(VRC, Vertical Redundancy Check)
    • 전송 비트들 중 수직에 대한 1의 bit수를 짝수 혹은 홀수가 되도록 하는 방식
  5. 수평 패리티 체크 방식(LRC, Longitudinal Redundancy Check)
    • 전송 비트를 일정량의 블록으로 묶어 블록의 맨 마지막에 패리티를 부여하는 방식

순환 중복 검사(CRC, Cyclic Redundancy Check)

  • 특정 다항식에 의한 연산 결과를 데이터에 삽입하여 전송하는 에러 검출 방법이다.
  • 동기식 전송에서 주로 사용되고, 집단 오류를 검출할 수 있고, 검출률이 높으므로 가장 많이 사용되는 에러 검출 방식이다.
  • HDLC 프레임의 FCS에 사용되는 방식이다.

해밍 코드(Hamming Code) 방식

  • 자기 정정 부호의 하나로 비트 착오를 검출해서 1 bit 착오를 정정하는 부호 방식이다.
  • 오류의 검출은 물론 스스로 수정까지 하므로 자기 정정 부호라고도 한다.
  • 송신한 데이터와 수신한 데이터의 각 대응하는 비트가 서로 다른 비트의 수를 해밍 거리(Hamming Distance)라고 한다.
  • 전송 비트 중에서 1, 2, 4, 8, 16, 32, 64, … , 2n 번째를 오류 검출을 위한 패리티 비트로 사용하며, 이 비트의 위치는 변하지 않는다.

상승 부호(코드) 방식

  • 순차적 디코딩(Sequential Decoding)과 한계값 디코딩(Threshold Value Decoding)을 사용하여 에러를 수정

궤환 전송 방식

  • 수신측에서 받은 데이터를 송신측으로 되돌려 보내어 원본 데이터와 비교하여 오류가 있는 경우 재 전송

연속 전송 방식(자동 연속 방식)

  • 송신 측에서 동일 데이터를 두번 이상 전송하면 수신 측에서 두 데이터를 비교해 이상 유무를 판별한 후에 오류 발생 시, 이를 수정하는 방식

오류 제어 방식

자동 반복 요청(ARQ, Automatic Repeat reQuest)
통신 경로에서 에러 발생시 수신측은 에러의 발생을 송신 측에 통보하고 송신측은 에러가 발생한 프레임을 재 전송하는 방식

정지-대기(Stop-and-Wait) ARQ

  • 송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음 에러 발생 유무 신호를 보내올 때까지 기다리는 방식이다.
  • 수신 측의 응답이 긍정 응답(ACK)이면 다음 블록을 전송하고, 부정 응답(NAK)이면 앞서 송신했던 블록을 재 전송한다.
  • 전송 효율이 가장 낮고, 오류가 발생한 블록만 재 전송하므로 구현 방법이 가장 단순하다.

Go-Back-N ARQ

  • 여러 블록을 연속적으로 전송하고, 수신 측에서 부정 응답(NAK)을 보내오면 송신 측이 오류가 발생한 블록부터 모두 재 전송
  • 에러가 발생한 블록 이후의 모든 블록을 다시 재 전송
  • 에러가 발생한 부분부터 모두 재 전송 하므로 중복 전송 문제

선택적 재전송 ARQ

Selective-Repeat Automatic Repeat reQuest
  • 여러 블록을 연속적으로 전송하고, 수신측에서 부정 응답(NAK)을 보내오면 송신측이 오류가 발생한 블록만을 재 전송
  • 복잡한 논리 회로와 큰 용량의 버퍼 필요

적응적 ARQ

Adaptive Automatic Repeat reQuest
  • 전송 효율을 최대로 하기 위해서 데이터 블록의 길이를 채널의 상태에 따라 그때 그때 상태에 따라서 동적으로 변경하는 방식
  • 전송 효율이 제일 좋으나, 제어 회로가 복잡하고 비용이 많이 들어 현재는 거의 사용하지 않음.