오류 발생, 오류 제어 방식(2)
해당 Post는 backward 방식과 forward 방식을 간단히 정리한 파일이다.
오류 제어 기법
오류 제어기법은 크게 2가지로 분류할 수 있습니다.
전진 오류 수정 (Forward Error Correction, FEC)
: 수신 측에서 오류를 스스로 검출/정정할 수 있는 방법으로, 송신시 오류 복구를 위한 잉여 비트을 추가하여 전송하는 방식
1. 전진 오류 수정의 종류
- 해밍 코드
수신측에서 오류가 발생한 비트를 찾아 재전송을 요구 하지않고 자신이 직접 오류를 수정하는 방식
- 상승 코드
여러 개의 비트의 오류가 있더라도 한계 값(경계 값), 순차적 디코딩을 이용하여 모두 수정할 수 있는 방식
후진 오류 수정 (Backward Error Correction, BEC)
: 전송된 데이터에 오류가 발생된 경우, 송신 측에 오류 사실을 알려서 재전송으로 복원하는 방식.
2. 후진 오류 수정의 종류
2.1. 오류 검출 방식
- 패리티 검사 (Parity Check)
가장 간단한 오류검출 방식으로, 송신측에서 전송될 프레임에 오류검출을 위한 특수한 비트
(패리티 비트)를 추가하여 전송하고, 수신측에서 수신된 문자의 비트와 이 패리티 비트를 합하여
1의 총계를 계산하는 방식 - 블록합 검사 (Block Sum check)
패리티 검사의 단점을 보완하는 방식으로, 각 문자 당 패리티 체크 비트(수평 패리티 체크)와
전송 프레임의 모든 문자들에 대한 패리티 문자 (블럭합 체크문자, 또는 수직 패리티 체크)를
함께 전송하는 방식 - 순환잉여검사(CRC : Cycle Redundancy Check)
오류가 한꺼번에 많이 발생하는 비트들(burst error)에 대한 블록합 검사의 단점을 해결할 수
있도록 하는 방식이다. 즉, 집단 오류를 해결하기 위한 오류제어 방식이다.
2.2. (검출 후) 재전송 방식 (Automatic Repeat Request)
1. Stop and Wait ARQ방식
송신측에서 한 번에 한 개의 프레임을 송신하고 수신측에서는 수신된 이 프레임의 오류 유무를 판단하여
송신측에 ACK 또는 NAK로 응답하는 방식이다. 이때 송신측은 이 ACK 또는 NAK를 받기 전에는 다음 프레임을 송신할 수 없다.
수신측의 응답을 받은 송신측에서 ACK를 받으면, 다음 프레임을 전송하고, NAK를 받으면 해당 프레임을 재전송한다.
- 장점
-
구현 방법이 간단하다.
-
송신측내의 최대 프레임 크기의 버퍼를 하나만 가지고도 구현이 가능하다.
- 단점
- 송신측이 ACK(또는 NAK)를 수신할 때까지 다음 프레임을 전송할 수 없으므로 전송 효율이 떨어진다.
2. Go-back-N방식
송신측은 송신 또는 수신 가능한 프레임의 개수 감시표시자(“윈도우”라고도 함)크기 만큼의 프레임들에 “순서번호”를 부여하여 전송한다.
수신측에서는 수신된 프레임의 오류 검출후,”NAK+오류 프레임의 순서번호”를 송신측에 송신한다.
송신측에서 NAK를 수신하면, “해당 순서번호의 프레임부터 그 이후에 보낸 프레임들을 다시 전송”한다.
보통, Go-back-N 방식이 많이 사용된다.
3. Selective-Repeat ARQ 방식
오류검출 이후의 프레임들을 모두 보내는 Go-back-N방식과는 달리, NAK에 해당되는 프레임만 재전송하는 방식이다.
- 단점
전송효율은 좋으나, 송신측에서는 수신측의 수신상태에 따라 전송해야 하므로,
“송신순서를 벗어난 전송이 많이 발생”할 수 있다. 그러므로 구현방법이 복잡하다.
4. 적응성(Adaptive)ARQ 방식
전송효율을 최대로 하기 위해서 프레임의 길이를 동적으로 변경할 수 있는 방식이다.
수신측은 통신회선의 오류발생율을 검사하여 송신측에 알려주고, 송신측은 이를 이용하여
“가장 적절한 프레임의 길이” 를 결정하여 송신하는 방식