전송 오류 제어: Difference between revisions

From CS Wiki
No edit summary
Line 16: Line 16:
* 서로 다른 주파수들이 하나의 전송 매체를 공유할 때 주파수 간의 합이나 차로 인해 새로운 주파수가 생성
* 서로 다른 주파수들이 하나의 전송 매체를 공유할 때 주파수 간의 합이나 차로 인해 새로운 주파수가 생성


=== 충격 잡음(Impulse Noise) ===
=== 충격 잡음 ===
;Impulse Noise
* 비연속적이고 불규칙한 진폭을 가지며, 순간적으로 높은 진폭이 발생하는 잡음
* 비연속적이고 불규칙한 진폭을 가지며, 순간적으로 높은 진폭이 발생하는 잡음
* 번개와 같은 외부적인 충격이나 기계적인 통신 시스템에서의 결함 등이 원인
* 번개와 같은 외부적인 충격이나 기계적인 통신 시스템에서의 결함 등이 원인
Line 72: Line 73:
* 자동 반복 요청(ARQ, Automatic Repeat reQuest): 통신 경로에서 에러 발생시 수신측은 에러의 발생을 송신 측에 통보하고 송신측은 에러가 발생한 프레임을 재 전송하는 방식
* 자동 반복 요청(ARQ, Automatic Repeat reQuest): 통신 경로에서 에러 발생시 수신측은 에러의 발생을 송신 측에 통보하고 송신측은 에러가 발생한 프레임을 재 전송하는 방식


=== 정지-대기(Stop-and-Wait) ARQ ===
=== 정지-대기 ARQ ===
;Stop-and-Wait Automatic Repeat reQuest
* 송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음 에러 발생 유무 신호를 보내올 때까지 기다리는 방식이다.
* 송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음 에러 발생 유무 신호를 보내올 때까지 기다리는 방식이다.
* 수신 측의 응답이 긍정 응답(ACK)이면 다음 블록을 전송하고, 부정 응답(NAK)이면 앞서 송신했던 블록을 재 전송한다.
* 수신 측의 응답이 긍정 응답(ACK)이면 다음 블록을 전송하고, 부정 응답(NAK)이면 앞서 송신했던 블록을 재 전송한다.
Line 78: Line 80:


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

Revision as of 01:06, 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): 통신 경로에서 에러 발생시 수신측은 에러의 발생을 송신 측에 통보하고 송신측은 에러가 발생한 프레임을 재 전송하는 방식

정지-대기 ARQ

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

Go-Back-N ARQ

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

선택적 재전송 ARQ

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

적응적 ARQ

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