목차
- 오류제어란?
- 오류 검출 방법
- 패리티 검사 (Parity Bit Check)
- 블록 합 검사 (2d Parity Bit Check)
- CRC
- 체크썸
- 오류 복구 방법
- Automatic Repeat reQuest (ARQ)
- Forward Error Correction (FEC)
1. 오류제어란?
데이터링크 계층은 OSI 7계층 중 물리 계층 다음인 2계층에 해당하며, 전기적 신호로부터 변환된 데이터에 에러가 존재하는지 확인한다. 따라서 오류제어와 흐름제어 기능을 제공해 포인트 투 포인트 간의 신뢰성을 보장한다. 에러를 확인하는 방법에는 패리티 검사, 블록 합 검사, CRC, 체크썸 등이 존재하며, 그중 CRC 기반 오류제어를 채택해 사용 중이다.
** 데이터링크 계층에서 전송 단위(PDU) : 프레임
2. 오류 검출 방법
1) 패리티 검사 (Parity Check)
: 1의 개수를 짝수로 맞춰 보낼지, 혹은 홀수로 맞춰 보낼지에 대해 수신 측과 정하고, 블록의 끝에 비트를 추가하는 방식의 아주 간단한 방법이다. 하지만 기존 데이터가 짝수 개의 비트를 가지고 있을 경우, 오류를 검출할 수 없는 단점을 가진다.
2) 블록 합 검사
: 2차원 패리티 검사라고도 하며, 수평과 수직으로 1의 개수를 카운팅하는 방식으로 오류를 검출할 수 있다. 하지만 수평과 수직으로 짝수 개씩 똑같이 바뀐다면 오류를 검출할 수 없는 단점을 가진다.
3) CRC 검사
: 현대 네트워크 상에서 사용 중인 에러 검출 방법이며, 이진 나눗셈을 기반으로 전체 블록을 검사한다. 송신 측에서는 CRC 비트를 발생시키며, 수신 측에서 동일한 CRC 비트로 데이터를 나눠 나머지가 0이 아니면 에러가 발생해 재전송을 요청한다.
4) 체크썸
: 전송할 데이터의 맨 끝에 앞서 보낸 데이터의 합계를 보수화하여 전송하고, 수신 측에서 값을 확인하여 오류를 검출할 수 있다. 수신 측에서 검사 합을 포함해 모든 세그먼트를 더했을 때, 모든 비트가 1이 나오지 않으면 오류로 판단한다.
3. 오류 복구 방법
오류 복구 방법에는 ARQ 방식과 FEC 방식이 있다. ARQ 방식은 송신 측에서 수신 측에서 보낸 확인 응답을 받아 재전송함으로써 오류를 복구하는 방법이며, FEC 방식은 오류 정정 코드를 이용해 수신 측에서 직접 오류를 복구하는 방법이다.
ARQ는 Automatic Repeat reQuest의 약자로, 데이터에 에러가 검출되면 재전송을 요청하는 일련의 과정을 의미한다.
1) Stop And Wait ARQ
: 송신 측에서 프레임을 전송 후, 수신 측으로부터 확인 응답을 통해 에러 유무를 판단한다. 오류가 없으면 송신 측에 ACK을 전송하고, 오류가 있으면 NAK을 전송하여 재전송을 요청한다. 오류 복구 방법 중 가장 간단한 형태이나, 송수신 측의 거리가 멀수록 응답 대기 시간이 길어지기 때문에 효율이 떨어진다.
2) Go Back N ARQ
: Stop And Wait ARQ 방식에서 송신 측에서 수신 확인 응답을 위해 발생하는 오버헤드를 줄이는 방법이다. 프레임에 순서를 담아 오류가 발생한 프레임부터 모두 재전송하기 때문에, 불필요한 재전송이 발생할 가능성이 크다.
3) Selective Repeat ARQ
: Go Back N ARQ 방식에서 불필요한 재전송을 줄이기 위해 오류가 발생한 프레임만 재전송하는 방법이다. 프레임의 순서에 영향을 받지 않으며, 수신 측에서 버퍼를 사용해 확인하기 때문에 구현이 까다롭다.
FEC는 Forward Error Correction의 약자로, 미리부터 오류에 대한 대비를 해두어 오류를 복구할 수 있도록 돕는다. FEC는 단일 비트 오류 정정, 해밍코드, 상승코드 등과 같은 방법이 있다.
ARQ | FEC | |
대상 | 송신 측 에러 복구 | 수신 측 에러 복구 |
특징 | 오류 발생 시 프레임 재전송 | 오류 정정 코드로 오류 복구 |
장점 | 간단한 구현 | 수신 측에서 오류 복구 가능 |
단점 | 재전송에 드는 비용이 큼 | 복잡한 구현 오류 정정 코드로 프레임 크기 증가 |
종류 | Stop And Wait ARQ Go Back N ARQ Selective Repeat ARQ |
단일 비트 오류 정정 해밍코드 상승코드 |
댓글