오류 발생, 오류 제어 방식(2)

2020-04-11

해당 Post는 backward 방식과 forward 방식을 간단히 정리한 파일이다.


오류 제어 기법

오류 제어기법은 크게 2가지로 분류할 수 있습니다.

전진 오류 수정 (Forward Error Correction, FEC)

: 수신 측에서 오류를 스스로 검출/정정할 수 있는 방법으로, 송신시 오류 복구를 위한 잉여 비트을 추가하여 전송하는 방식

1. 전진 오류 수정의 종류

  • 해밍 코드

    수신측에서 오류가 발생한 비트를 찾아 재전송을 요구 하지않고 자신이 직접 오류를 수정하는 방식

  • 상승 코드

    여러 개의 비트의 오류가 있더라도 한계 값(경계 값), 순차적 디코딩을 이용하여 모두 수정할 수 있는 방식

후진 오류 수정 (Backward Error Correction, BEC)

: 전송된 데이터에 오류가 발생된 경우, 송신 측에 오류 사실을 알려서 재전송으로 복원하는 방식.

2. 후진 오류 수정의 종류

2.1. 오류 검출 방식

  1. 패리티 검사 (Parity Check)

    가장 간단한 오류검출 방식으로, 송신측에서 전송될 프레임에 오류검출을 위한 특수한 비트
    (패리티 비트)를 추가하여 전송하고, 수신측에서 수신된 문자의 비트와 이 패리티 비트를 합하여
    1의 총계를 계산하는 방식

  2. 블록합 검사 (Block Sum check)

    패리티 검사의 단점을 보완하는 방식으로, 각 문자 당 패리티 체크 비트(수평 패리티 체크)와
    전송 프레임의 모든 문자들에 대한 패리티 문자 (블럭합 체크문자, 또는 수직 패리티 체크)를
    함께 전송하는 방식

  3. 순환잉여검사(CRC : Cycle Redundancy Check)

    오류가 한꺼번에 많이 발생하는 비트들(burst error)에 대한 블록합 검사의 단점을 해결할 수
    있도록 하는 방식이다. 즉, 집단 오류를 해결하기 위한 오류제어 방식이다.

2.2. (검출 후) 재전송 방식 (Automatic Repeat Request)

1. Stop and Wait ARQ방식

송신측에서 한 번에 한 개의 프레임을 송신하고 수신측에서는 수신된 이 프레임의 오류 유무를 판단하여
송신측에 ACK 또는 NAK로 응답하는 방식이다. 이때 송신측은 이 ACK 또는 NAK를 받기 전에는 다음 프레임을 송신할 수 없다.
수신측의 응답을 받은 송신측에서 ACK를 받으면, 다음 프레임을 전송하고, NAK를 받으면 해당 프레임을 재전송한다.

  • 장점
  1. 구현 방법이 간단하다.

  2. 송신측내의 최대 프레임 크기의 버퍼를 하나만 가지고도 구현이 가능하다.

  • 단점
  1. 송신측이 ACK(또는 NAK)를 수신할 때까지 다음 프레임을 전송할 수 없으므로 전송 효율이 떨어진다.

2. Go-back-N방식

송신측은 송신 또는 수신 가능한 프레임의 개수 감시표시자(“윈도우”라고도 함)크기 만큼의 프레임들에 “순서번호”를 부여하여 전송한다.

수신측에서는 수신된 프레임의 오류 검출후,”NAK+오류 프레임의 순서번호”를 송신측에 송신한다.

송신측에서 NAK를 수신하면, “해당 순서번호의 프레임부터 그 이후에 보낸 프레임들을 다시 전송”한다.

보통, Go-back-N 방식이 많이 사용된다.

3. Selective-Repeat ARQ 방식

오류검출 이후의 프레임들을 모두 보내는 Go-back-N방식과는 달리, NAK에 해당되는 프레임만 재전송하는 방식이다.

  • 단점

전송효율은 좋으나, 송신측에서는 수신측의 수신상태에 따라 전송해야 하므로,

“송신순서를 벗어난 전송이 많이 발생”할 수 있다. 그러므로 구현방법이 복잡하다.

4. 적응성(Adaptive)ARQ 방식

전송효율을 최대로 하기 위해서 프레임의 길이를 동적으로 변경할 수 있는 방식이다.

수신측은 통신회선의 오류발생율을 검사하여 송신측에 알려주고, 송신측은 이를 이용하여

“가장 적절한 프레임의 길이” 를 결정하여 송신하는 방식