Book/COMPUTER NETWORKING A TOP-DOWN-APPROACH

6.2 Error-Detection and Correction Techniques

S0LL 2024. 12. 3. 23:41

오류 검출 및 수정의 개요

 

링크 계층은 데이터 전송 과정에서 발생할 수 있는 비트 수준의 오류를 검출하고 수정하는 기능을 제공한다. 이는 데이터의 무결성을 보장하기 위해 매우 중요한 과정이다. 이 섹션에서는 오류를 검출하고 수정하는 몇 가지 기법과, 이러한 기법이 실질적으로 어떻게 동작하는지 살펴본다.

 

Figure 6.3: 오류 검출 및 수정 시나리오

설명

 

그림은 송신 노드와 수신 노드 간의 데이터 전송 시 발생할 수 있는 오류 검출 과정을 보여준다.

 

1. 송신 노드에서 원래 데이터 D에 **오류 검출 및 수정 코드(EDC)**를 추가한다. 이 데이터와 EDC는 프레임에 포함되어 전송된다.

2. 전송 중 비트 오류가 발생하여 수신 노드에서 데이터 **D’**와 EDC’**로 수신될 수 있다.

3. 수신 노드는 수신된 **D’**와 **EDC’**를 검증하여 오류 여부를 판단한다.

 

핵심 포인트

 

이 과정에서 모든 오류를 반드시 검출할 수는 없다.

수신 노드는 오류가 있는지 여부를 결정하지만, 오류가 검출되지 않을 가능성도 존재한다.

 

6.2.1 패리티 검사 (Parity Checks)

 

1. 단일 비트 패리티 (Single-bit Parity)

 

Figure 6.4: One-bit Even Parity

이 그림은 짝수 패리티를 사용하는 단일 비트 패리티 검사의 예를 보여준다.

 

1. 송신자는 데이터 비트 D를 전송하기 전에 패리티 비트를 추가하여, 데이터와 패리티 비트의 1의 개수가 짝수가 되도록 한다.

2. 수신자는 수신된 비트의 1의 개수를 계산하여 오류를 감지한다.

 

제약

 

단일 비트 패리티는 홀수 개의 비트 오류를 감지할 수 있지만, 짝수 개의 비트 오류는 감지할 수 없다.

예를 들어, 그림에서 0111100011010111 데이터는 패리티 비트 1이 추가되었지만, 두 비트가 동시에 오류가 발생하면 검출되지 않는다.

 

2. 이차원 패리티 (Two-dimensional Parity)

 

Figure 6.5: Two-dimensional Even Parity

이 그림은 단일 패리티를 확장한 이차원 패리티 검사를 보여준다.

 

1. 데이터 비트를 행(row)과 열(column)로 배열한 후, 각 행과 열에 대해 패리티 비트를 계산한다.

2. 수신자는 행과 열의 패리티를 사용해 오류가 발생한 비트의 위치를 식별한다.

 

예시:

오류 없는 경우: 모든 행과 열의 패리티 값이 정상이다.

수정 가능한 단일 비트 오류: 그림에서 2행 2열의 비트가 잘못된 경우, 해당 위치를 정확히 찾아 오류를 수정할 수 있다.

 

특징

 

단일 비트 오류는 검출 및 수정 가능하다.

다중 비트 오류는 일부만 감지되거나 수정이 불가능하다.

 

 

6.2.2 체크섬 방법 (Checksumming Methods)

 

작동 원리

 

체크섬은 데이터를 k-비트 정수로 간주하고, 이를 모두 더한 결과를 오류 검출 비트로 사용한다.

Figure 6.4에서 설명된 데이터와 유사하게, 체크섬은 데이터의 무결성을 검증하기 위해 사용된다.

 

특징

 

1. TCP와 UDP에서 널리 사용되며, 16비트 정수를 합산하여 오류를 감지한다.

2. 계산이 간단하지만, CRC에 비해 오류 검출 능력이 약하다.

 

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

 

1. CRC의 작동 원리

 

Figure 6.6: CRC의 구조

1. 송신자는 데이터 D에 **r개의 추가 비트(R)**를 추가하여 D+R을 생성한다.

2. 이 추가된 비트는 생성 다항식 G를 기반으로 계산된다.

3. 수신자는 D+R을 G로 나눠 나머지가 0인지 확인한다.

나머지가 0이 아니면 오류가 발생한 것으로 간주된다.

 

2. CRC 계산 과정

 

Figure 6.7: CRC 계산 예시

데이터 D = 101110, 생성 다항식 G = 1001일 때:

1. 송신자는 D에 R을 추가하여 101110011을 전송한다.

2. 수신자는 이를 G로 나누어 나머지가 0인지 확인한다.

3. 만약 나머지가 0이라면, 데이터가 정확히 전송되었음을 확인할 수 있다.

 

3. CRC의 장점

 

CRC는 긴 버스트 오류와 다중 비트 오류를 감지할 수 있다.

계산이 효율적이며, 네트워크 하드웨어에서 빠르게 처리 가능하다.

 

표준 CRC

 

CRC-32: IEEE 프로토콜에서 널리 사용되며, 생성 다항식은 다음과 같다.

G_CRC-32 = 100000100110000010001110110110111

 

결론

 

이 장에서 다룬 패리티 검사, 체크섬, CRC는 링크 계층에서 오류를 감지하고 수정하는 데 사용되는 대표적인 기술이다.

패리티는 단순하지만 오류 검출 능력이 제한적이다.

체크섬은 계산이 간단하지만 CRC보다 강력하지 않다.

CRC는 고성능과 높은 오류 검출 능력을 갖추고 있어, 네트워크에서 가장 널리 사용된다.

 

이러한 기법은 데이터의 무결성을 보장하며, 네트워크의 신뢰성을 높이는 데 핵심적인 역할을 한다.