nayoungs
항상 끈기있게
nayoungs
  • 분류 전체보기 (274)
    • Cloud (21)
      • AWS (15)
      • Azure (3)
      • NCP (2)
      • GCP (1)
    • DevOps (68)
      • Docker (16)
      • Kubernetes (50)
      • CICD (2)
    • IaC (25)
      • Ansible (17)
      • Terraform (8)
    • Certification (4)
    • 금융 IT (5)
    • AI (3)
    • Linux (47)
    • 미들웨어 (5)
    • Programming (7)
      • GoLang (3)
      • Spring (4)
    • CS (25)
      • 네트워크 (17)
      • 운영체제 (5)
      • Web (1)
      • 개발 상식 (2)
      • 데이터베이스 (0)
    • Algorithm (59)
      • 프로그래머스 (36)
      • 백준 (18)
      • 알고리즘 정리 (5)
    • ETC (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
nayoungs

항상 끈기있게

CS/네트워크

[네트워크] 오류 검출

2022. 2. 11. 17:55
728x90

📌INDEX

  • 오류
  • 오류 복구
  • 오류 검출
    • 패리티 비트 검사
    • 순환중복검사(CRC)

오류

  • 수신 측으로 전송한 데이터는 송신 측의 데이터와 동일해야 하지만, 다양한 원인 때문에 데이터 오류가 발생할 수 있다.
  • 따라서 신뢰할 수 있는 네트워크 통신을 하려면 오류를 검출·수정해야한다.

  • 단일 - 비트 오류(Single-bit Error)
    • 데이터 단위 중 하나의 비트만 변경하는 오류를 말한다. (하나만 오류)
  • 다중 - 비트 오류(Multible-bit Error)
    • 데이터 단위 중 2개 이상의 비연속적인 비트를 변경하는 오류를 말한다.
  • 집단 오류(Burst Error)
    • 데이터 단위 중 2개 또는 그 이상의 연속적인 비트를 변경하는 오류를 말한다.

오류 복구

  • 순방향 오류 복구
    • 오류 복구 코드를 이용해 수신 호스트 스스로 오류를 복구
    • 헤더코드에 오류코드를 넣어 검사
  • 역방향 오류 복구
    • 오류 검출 코드를 이용해 수신 호스트가 송신 호스트에게 오류를 통지
    • 먼저 수신측에서 검사 -> 오류 있으면 재요청

오류 검출

  • 패리티 비트 검사

    • 패리티 비트 검사(Parity Bit Check)는 전송하는 데이터마다 패리티 비트를 하나씩 추가하여 홀수 또는 짝수 검사 방법으로 오류를 검출
    • 추가로 전송되는 1비트를 '패리티 비트'라고 한다.
    • 패리티 비트의 값은 데이터 코드 내에 있는 1의 수를 계산함으로써 결정된다.
    • 홀수 패리티 방식(Odd Parity)
      • 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 것
      • 데이터 비트에서 1의 개수가 짝수면 패리티 비트를 1로 정하여 전송되는 전체 데이터에 있는 1의 개수를 홀수가 된다.
    • 짝수 패리티 방식(Even Parity)
      • 전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 것
      • 데이터 비트에서 1의 개수가 홀수면 패리티 비트를 1로 정하여 전송되는 전체 데이터에 있는 1의 개수는 짝수가 된다.
    • 블록 합 검사(Block Sum Check)
      • 오류 검출 능력을 향상시키기 위해 문자 블록에 수평 패리티와 수직 패리티를 2차원적으로 검사하는 방법
      • 행 단위 패리티에 열 단위의 오류 검사를 수행할 수 있는 열 패리티 문자를 추가하여 이중으로 오류 검출 작업을 수행
      • 추가된 열 패리티 문자를 '블록 검사 문자(BCC, Block Check Character)'라고 한다.
      • 블록 합 검사를 이용하면 한 데이터에서 짝수개의 오류가 발생하더라도 오류를 검출 가능

  • 순환 중복 검사

    • 순환 중복 검사(CRC, Cyclic Redundancy Check)는 정확하게 오류를 검출하기 위해 다항식 코드를 사용하는 방법이다. -> 오류 검출 100% 가능
    • 오류가 없을 때는 계속 발생하지 않다가 오류가 발생하면 그 주위에 집중적으로 오류를 발생시키는 집단 오류를 검출하는 능력이 탁월하고, 구현이 단순하다.
    • CRC 발생코드(다항식 or 2진 코드)를 데이터와 XOR 연산한 나머지를 데이터에 덧붙여 전송, 수신측에서 비교하는 방법
    • 다항식(Polynomial)
      • CRC 발생기는 0과 1의 스트링 보다는 대수 다항식으로 표현하며, 하나의 다항식은 하나의 제수(Divisor)를 표현한다.
    • 다항 코드
      • 생성 다항식
        • ex1) 생성 다항식 = x^5 + x^2 + 1따라서, 다항코드 = 100101다항식 예씨
        • ex2) 그림
        • = x^5 * 1 + x^4 * 0 + x^3 * 0 + x^2 * 1 + x^1 * 0 + x^0 * 1 -> 차수의 계수는 100101
    • 전송 데이터: m 비트 크기의 M(x)
    • 생성 다항식: n+1비트 크기의 G(x)
    • 체크섬
      • 전송 데이터와 생성 다항식을 이용하여 계산
      • n 비트 크기
      • 나누는 과정 XOR 연산 : 두 수가 같으면 0, 다르면 1
      • 계산 예시
      생성 다항식 G(x) = x5 + x2 + 1체크섬: 00010
    • 전송 데이터: 101101001
    • 송신 호스트: "전송 데이터 + 체크섬"을 수신 호스트에게 전송
    • 수신 호스트: "전송 데이터 + 체크섬"을 생성 다항식으로 나누어 결과를 확인
      • 나머지가 0이면 전송 오류가 없는 경우
      • 나머지가 0이 아니면 전송 오류가 있는 경우

1️⃣ 송신 측

a. 데이터 전송

b. 오류 검출코드 계산

c. CRC 추가

2️⃣ 수신 측

a. 데이터 수신

b. 오류 검출 코드 계산

c. 수신된 CRC와 계산된 CRC 비교 검사

d. 동일하지 않으면 오류 검출 신호 발생

728x90
저작자표시 (새창열림)
    'CS/네트워크' 카테고리의 다른 글
    • [네트워크] 서브넷 마스크와 서브넷팅 계산
    • [네트워크] IP(Internet Protocol)
    • [네트워크] OSI 참조모델
    • [네트워크] 이더넷(Ethernet)과 이더넷 프레임(Frame)
    nayoungs
    nayoungs
    안되면 될 때까지

    티스토리툴바