코드네임 :

📡 데이터통신네트워크 12 - Link Layer : Error Detection/Correction 본문

🛜Network/데이터통신네트워크

📡 데이터통신네트워크 12 - Link Layer : Error Detection/Correction

비엔 Vien 2024. 5. 29. 11:38

Link Layer

- 사물인터넷 덕분에 관심 up

- 링크레이어는 LAN 카드 (Network Interface card)에 내장되어있음

 

Link Layer : services

- 프레이밍 (데이터그램을 프레임으로 바꿈)

- channel 접근 권한

- 노드간 신뢰성 있는 전송

- 흐름제어

- 에러 감지

- 에러 수정(correction)

- half-duplex(단방향) & ful-duplex(양방향)

 


 

[ Error detection ]

: 네트워크 계층에서 보내는 datagram에 EDC (Error Detection and Correction bits) 라는 추가 정보를 만들어서 보냄

- EDC(Error detection and correction bits) 와 D(Data protected by error checking)

- 이 EDC를 가지고 오류를 감지해 낼 수 있음

- 100% 신뢰 보장은 아니나 EDC가 커질수록 성능 up

 


 

< Parity checking >

: 가장 단순하게 오류를 감지하는 방법은 패리티 체크 방식

- 데이터의 끝에 패리티 비트 (parity bit)를 추가함

 

1. Single bit parity

 


: 1비트의 패리티 비트를 사용

- 전체 데이터 비트의 1 개수를 확인 후, 0 또는 1을 추가하여 전체 1의 개수를 짝수 개로 만듦

- 만약 전송하는 과정에서 비트가 변해서 홀수 개가 되었다면 오류가 발생한 것이라고 판정

<단점>

- 어느 비트가 바뀌었는지 알 수 없음

- 짝수 개의 비트가 바뀌는 오류가 발생했다면  오류를 감지할 수 없음

 

 

2. two-dimensional bit parity

 

 

two dimensional, 2차원 패리티 비트를 사용하는 방법

- 각 row, column별로 각각 패리티 비트를 붙여 오류를 검증

- 이 방식은 single bit error 에서 어느 비트가 바뀌었는지도 알 수 있다.
- 만약 2행과 2열이 동시에 패리티 에러가 발생하면 2행 2열에 해당하는 비트가 반전되어 있다는 뜻

<단점>

single bit parity와 비슷하게, 같은 행/열에 여러 에러가 발생한 경우 에러 감지를 할 수 없다. 

 


 

[ Cyclic Redudancy Check (CRC) ]

: 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식

- 원래 데이터의 값에 따라 CRC 값을 계산하여 데이터에 붙여 전송 후,

   데이터 전송이 끝난 후 받은 데이터의 값으로 다시 CRC 값을 계산한다.

- 두 값을 비교했을 때 두 값이 다르면 데이터에 오류가 발생했다는 것을 알 수 있다.

 

R : CRC 비트의 길이

- 길면 길수록 오류 검증 성능이 강력함

 

D : 보내야 하는 원본 데이터

- 위 예시에서는 101110 이다. 

 

G : 송수신자 모두 알고 있는, 사전에 정의된 값

- 원본 데이터를 나눗셈 하는 데 사용됨

- CRC 값보다 1비트만큼 길다.

 

 

 

 

 

먼저 원본 데이터에 2^r을 곱하여 r비트만큼 공간을 마련해 준다.

그리고 G로 XOR 연산을 반복하여 수행한다.

그러면 더이상 연산을 할 수 없는 나머지가 발생할 것이다. (물론 나머지가 없을 수도 있음) 여기서 발생한 나머지 (위 그림에선 011 )이 CRC 값이다.

나머지만큼 원본 데이터에 2^r을 곱한 수에다가 더해주면 나머지가 없게 된다. 

그리고 CRC 값을 원본 데이터 앞에 붙인 값인 101110011 을 보낸다. 즉 나머지가 0이 되게끔 하여 보낸다.

수신자는 받은 데이터와 1001을 가지고 XOR 연산을 수행한다.

그 결과가 딱 맞아 떨어지지 않으면 에러가 발생했다는 것을 알 수 있다.