컴퓨터 네트워크의 CRC 계산에 대하여
우리는 한 호스트가 다른 호스트에 메시지를 보낼 때 마지막 계층(4계층 프로토콜의 네트워크 인터페이스 계층)에 도달하려면 자체 프로토콜 스택을 통해 계층별로 데이터를 캡슐화해야 한다는 것을 알고 있습니다. ) 프레임 끝에 FCS 체크 코드(CRC 알고리즘을 통해 얻은)를 추가해야 합니다. Peer 호스트가 이를 수신하면 수신단에서도 CRC 알고리즘으로 검증하여 전송 과정에서 오류가 있는지 확인합니다. 프레임에 비트 오류가 있는지 여부만 확인할 수 있을 뿐 해결책을 제공하지는 않습니다.
순환 중복 검사의 원리
송신 측에서는 먼저 데이터를 그룹(예: 하나의 프레임)으로 나눕니다. 그룹당 k 비트를 가정합니다.
각 그룹 뒤에는 오류 감지를 위한 n비트 중복 코드가 추가되어 함께 전송됩니다. 즉, 실제 전송 길이는 k+n 비트입니다.
양 당사자는 전송하기 전에 n+1 자리 제수 P를 협상하여 수신자가 수신 후 이를 확인할 수 있도록 합니다.
K비트 데이터에 제수 빼기 0(P-1)을 피제수로 추가하고, 세 번째 단계에서 결정된 제수로 '모듈로 2 나눗셈'을 수행한다. 결과 나머지는 FCS 검사 순서이며 자릿수도 (P-1)이어야 합니다.
K 비트 끝에 FCS 체크 시퀀스를 추가하여 전송합니다.
수신자는 수신된 각 프레임을 확인하여 나머지 R = 0이면 해당 프레임에 오류가 없다고 판단하여 수락합니다. 나머지 R ≠ 0이면 해당 프레임에 오류가 있는 것으로 판단하여 폐기됩니다.
'모듈로 2 나눗셈'에 대한 설명:
'모듈로 2 나눗셈'은 '산술 나눗셈'과 유사하지만, 비트를 차용하지도 않고 제수와 피제수를 비교하지도 않습니다. 같은 자릿수로, 같은 자릿수로 나누면 됩니다. 모듈로 2 덧셈 연산은 1+1=0, 1=1, 0=0, 캐리 또는 빌림이 없습니다. 모듈로 2 뺄셈 연산은 1-1=0, 0-1=1, 1입니다. -0=1, 0-0=0, 캐리나 빌림이 없습니다. 바이너리의 논리적 XOR 연산과 동일합니다.
계산 예시
그러면 수신자가 얻는 것은 101001001입니다. 그런 다음 피제수로 사용하고 1101을 제수로 사용하여 "모듈로 2 나눗셈"을 수행합니다.