Data Link Layer

Updated:

잡음이 있는 인접 노드 간의 물리적인 회선을 상위 망계층(3 layer)이 사용할 수 있도록 전송 에러가 없는 통신 채널로 변환시키는 계층

Parity Bit(패리티 비트)

패리티 비트(Parity bit)는 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트이다. 전송하고자 하는 데이터의 각 문자에 1 비트를 더하여 전송하는 방법으로 2가지 종류의 패리티 비트(홀수, 짝수)가 있다. 패리티 비트는 오류 검출 부호에서 가장 간단한 형태로 쓰인다.

Example

7 bit 데이터

0000000 짝수 : 00000000	홀수 : 10000000
1010001 짝수 : 11010001	홀수 : 01010001
1101001 짝수 : 01101001 홀수 : 11101001

7비트의 0010110라는 데이터에서 짝수 패리티가 되게 하기 위해서는 1의 패리티 비트를 붙여 10010110로 한다. 또 같은 데이터에 대해 홀수 패리티 비트가 되게 하려면 0의 패리티 비트를 붙인다.

이렇게 패리티 비트를 정하여 데이터를 보내면 받는 쪽에서는 수신된 데이터의 전체 비트를 계산하여 패리티 비트를 다시 계산함으로써 데이터 오류 발생 여부를 알 수 있다. 그러나 패리티 비트는 오류 발생 여부만 알 수 있지 오류를 수정할 수는 없다.

Hamming Code(해밍 코드)

해밍 코드는 이진 선형 블록 오류 정정 부호의 일종이다. 해밍 코드를 이용하여 전체 데이터 비트의 어느 지점에서 오류가 발생했는지 검출할 수 있다.

해밍코드 생성 규칙

20 bit Example

짝수 패리티비트로 오류가 없는 예제와 발생한 예제를 보여드리겠습니다.

Example 1 오류 X

index : [1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12]
bit   : [0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0]

12bit이므로 체크해야하는 패리티 비트는 총 4가지 입니다.

p1 = 1, 3, 5, 7, 9, 11

0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 = 0

p2 = 2, 3, 6, 7, 10, 11

0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 = 0

p4 = 4, 5, 6, 7, 12

1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 = 0

p8 = 8, 9, 10, 11, 12

1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 0

p1p2p4p8 0000으로 오류가 발생하지 않았습니다.

Example 2 오류 O -> 5번 비트

index : [1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12]
bit   : [0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0]

p1 = 1, 3, 5, 7, 9, 11

0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 1

p2 = 2, 3, 6, 7, 10, 11

0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 0 = 0

p4 = 4, 5, 6, 7, 12

1 ⊕ 0 ⊕ 0 ⊕ 0 ⊕ 0 = 1

p8 = 8, 9, 10, 11, 12

1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 0

p1p2p4p8은 0101으로 오류가 발생했습니다. 오류가 난 비트는 2진법으로 계산했을때 5번비트라고 표시를 하게됩니다. 해밍코드를 이용하여 이와같은 방식으로 오류를 검출하고 정정할 수 있습니다.

Leave a comment