🥕
TIL
  • [TIL] Studying tech / computer science knowledge
  • KeyMap
  • 알고리즘
    • 복잡도 계산 ( Computational Complexity )
    • DisjointSet-unionFind
    • Bellman-ford Algorithm
    • Dijkstra's Algorithm
    • DP ( Dynamic Programming , 동적 계획법 )
    • 플로이드-워셜 알고리즘 (Floyd-Warshall algorithm)
    • Kruskal's Algorithm
    • 최장 증가 수열 (Longes Increasing Subsequence)
    • Prim's Algorithm
    • 정렬
    • 시간복잡도 와 공간복잡도 ( Time Complexity & Space Complexity )
    • Topological Sort (위상 정렬)
  • 책 읽고난 후 요약
    • 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략
    • cleancode
    • 도메인 주도 설계로 시작하는 마이크로서비스 개발
    • 오브젝트
  • CDC
    • debzium
    • kafka
  • 개발 상식
    • asciidoctor
    • 컴파일러
    • ELK 스택
    • 엔디안
    • git
    • Gitmoji
    • 테스트 종류
    • 라이브러리와 프레임워크
    • 정규 표현식
    • REST API
    • 동기와 비동기 / Blocking과 NonBlocking
    • Transaction Script와 Domain Model
    • 디자인 패턴
      • 행동 패턴
      • 객체 생성 패턴
        • 추상 팩토리 패턴
        • 빌더 패턴
        • 팩토리 메서드 패턴
        • [생성 패턴] 프로토 타입 (Prototype Parttern)
        • 싱글톤
      • 구조 패턴
        • 어댑터 패턴
        • 브릿지 패턴
        • 컴포짓(Composite) 패턴
        • 데코레이터
        • 프록시
    • refactoring
      • 중복 코드
      • 전역 데이터
      • 긴 함수
      • 긴 매개변수 목록
      • 가변 데이터
      • 이해하기 힘든 이름
  • 자료구조
    • AVL Tree
    • Splay Tree
    • aaTree
    • array-list
    • 자료구조 시간/공간 복잡도
    • 그래프
    • 힙
    • Red Black Tree
    • stack-queue
    • 트리 ( Tree )
  • DevOps
    • MSA
    • Kubernetes
      • AccessingAPI
      • controller
      • dashboard
      • kubernetes
      • object
      • pod
      • service
      • volume
  • Java
    • 어노테이션
    • 제어문
    • 데이터 타입
    • Enum
    • jvm
    • 연산자
    • thread
    • Java8
      • CompletableFuture
      • Date/Time
      • 어노테이션과 메타스페이스
      • 인터페이스
      • 람다식
      • Optional
      • 스트림
  • JavaScript
    • moduleProject
    • webpack-babel
    • 코어 자바스크립트
      • array
      • 함수 바인딩
      • 데코레이터와 포워딩
      • Class
      • 비교 연산자
      • Date 내장 객체
      • destructuring-assignment
      • function
      • 함수의 prototype 프로퍼티
      • 가비지 컬렉션 ( Garbage Collection )
      • JSON (JavaScript Object Notation)
      • map-set
      • 내장 프로토타입
      • new연산자와 생성자 함수
      • 객체
      • Object.keys, values, entries
      • 옵셔널 체이닝 '?.'
      • 프로퍼티 플래그
      • 프로퍼티 종류
      • 프로토 타입
      • 호출 스케줄링 ( scheduling a call )
      • scope
      • this
      • type-conversions
      • type
      • 함수의 자료형
      • var_let_const
  • Linux
    • 기본 명령어
    • 파일 종류
    • 리눅스
  • 네트워크
    • 응용 계층 ( Application Layer )
    • 오류 검출과 오류 정정
    • Http
    • Http Header
    • 컴퓨터 네트워크란
    • 네트워크 계층
    • 네트워크 제어 영역
    • 전송 계층 ( Transport Layer )
  • PHP
    • Facade
    • composer
    • scopeResolutionOperator
    • Laravel
      • SocialProvider
      • architecture
      • blade
      • controller
      • db
      • dbArchitecture
      • debug
      • eloquent
      • email
      • event
      • exceptionHandling
      • middleware
      • model
      • modelFactory
      • pagingLoading
      • queryBuilder
      • route
      • scout
      • seeding
      • tntsearch
      • validate
      • view
  • React
    • Next.js
    • React 란?
  • Spring
    • Controller
    • 요청이 들어왔을때 스프링이 처리하는 방법 ( 내부구조 )
    • ConfigurationProperties
    • Entity / DTO / VO
    • Maven
    • Repository와 DAO
    • 스프링 빈
    • Spring Framework
    • MVC 패턴
    • 도메인 입력값 검증
    • Spring Cloud
      • Spring Cloud
      • Eureka
    • Spring Data
      • JPA
      • JPA 어노테이션
      • 엔티티 비교
      • 복합 키와 식별 관계 매핑
      • JPA 예외처리
      • 객체지향 쿼리
      • EntityManagerFactory와 EntityManager
      • JPA 최적화
      • 프록시와 연관관계 맵핑
      • 연관관계
      • 상속관계 맵핑
      • 트랜잭션 범위와 영속성 컨텍스트
      • 데이터 타입
      • MySQL 연결
      • Pageable
    • Spring Project들과 library
      • Custom Serialize
      • Elasticsearch Index API
      • Spring HATEOAS
      • lombok (롬복)
      • Model Mapper
      • Object Mapper
      • Representation Model
      • Spring REST Docs
      • Spring Boot
    • Spring Security
      • Spring Security
      • Authentication
      • Authentication Filter
      • Authorization Filter
      • Filter Chain
      • SecurityContext
      • Spring OAuth2.0
    • Spring Test
      • AssertJ
      • Junit5
      • JunitParams
      • Mock Object
  • DataBase
    • ALIAS
    • CONCAT
    • CTE
    • Group By
    • HAVING
    • IFNULL
    • 인덱스
    • JOIN
    • ORDER BY
    • ROLLUP
    • SELECT
    • SELECT DISTINCT
    • SQL
    • WHERE
  • Web 상식
    • OAuth
    • WAS
    • HTTP통신 기반 인증
    • 브라우저
    • CSR 과 SSR
    • HTTPS
    • Web
Powered by GitBook
On this page
  • 오류 검출
  • 오류 검출 방법
  • 오류 정정
  • 오류 정정 방법
  1. 네트워크

오류 검출과 오류 정정

오류 검출

데이터 전송 과정중 데이터 손실이나 오류가 생겼는지 검사하는 것

오류 검출 방법

패리티 비트


후진 오류 수정(BEC)방법중에 하나로 송신측에 재전송 요청을 통해 수정하는 방법

데이터 비트에 패리티 비트라는 검사를 위한 비트 1개를 추가하여 오류가 있는지 검사하기 위한 비트

  • 종류

    • 짝수 패리티 전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 추가 하는 것 (1의 개수가 홀수라면 1을 추가, 짝수라면 0을 추가)

    • 홀수 패리티 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 추가 하는 것 (1의 개수가 짝수라면 1을 추가, 홀수라면 0을 추가)

빅엔디안방식이라면 앞에 리틀 엔디안방식이라면 데이터 비트 처음에 추가하게 된다.

예를 들어 리틀엔디안 방식으로 1111111의 비트셋을 갖는 데이터를 전송한다면, 짝수 패리티는 11111111, 홀수 패리티는 11111110을 전송하게 된다.

수신측은 이 데이터를 받고 패리티 비트 값과 데이터의 1의 개수를 비교하여 값에 오류가있는지 없는지 검사하는 방법이다.

패리티 비트는 대게 아주 먼 거리 통신시 사용하고있고, 근거리 통신시에는 체크섬을 이용한다.

체크섬 ( Check Sum ) = 검사합


후진 오류 수정(BEC)방법중에 하나로 송신측에 재전송 요청을 통해 수정하는 방법

중복 검사의 한가지 형태로 통신중에 데이터의 에러를 검출하는 방법중 하나이다. 어렸을때 수학시간에 배웠던 검산하는 방법과 같은 원리이다.

  • 방법

    1. 송신자는 전송할 모든 데이터를 16비트 단위로 구분하고 이 값을 모두 더한다. 더하는 과정에서 캐리값이 발생하면 이는 버리지 않고 값에 더해준다.

    2. 더한 값을 1의 보수를 취해준다.

    3. 위의 결과로 나온 값을 체크섬이라하며, 이를 데이터와 같이 전송해준다.

    4. 수신자는 받은 데이터를 1,2의 과정을 통해 나온 값과 데이터와 같이 전송 받은 체크섬값을 확인하여 전달받은 데이터에 오류가 있는 지 검사하게 된다.

CRC(순환 중복 검사)와 같다고 오해할 수 도 있지만, CRC는 나눗셈을(가환환의 나눗셈 (XOR))에 기반해 얻어지는 값이기에 엄밀히 말하면 다르다고 할 수 있다.

순환 중복 검사 (CRC)

블록합 (Block Sum)

오류 정정

오류를 감지하고 원본 데이터를 다시 복원하는 것.

오류 정정 방법

반복을 통한 정정


같은 값을 여러번 보내어 각 자리수마다 가장 많이 전송받은 값을 원본데이터라고 통계적으로 추측할 수 있다는 점을 이용한 방법.

  • 문제점

    1. 누군가가 의도적으로 오류를 발생시킬시 잘못된 데이터를 인식할 수 있다.

    2. 데이터의 양이 커지면 비용이 많이 커지게 된다.

리더던시 (Redundancy)


데이터의 신뢰도를 높이기 위해 잉여 정보를 보내는 방법. 이때, 잉여 정보를 리더던시라 한다.

  • 방법

    • 송수신측은 데이터와 맵핑시킬 코드 워드들을 미리 약속한다.

    • 이 약속에 따라 데이터를 변환하여 전송한다.

    • 데이터를 수신후 오류가 발생했다고 한다면, 해석 할 수 없는 코드를 약속에 근거해 가장 근접한 코드로 해석한다.

해밍 코드


전진오류수정(FEC)방법중 하나로 수신 측에서 수정하는 방법.

데이터 전송/메모리 액세스 등 경우에 최대 2비트 오류를 감지하거나 1비트 오류를 수정할 수 있는 방법

패리티 비트를 여러개 끼워넣어 오류를 검출/정정 하는 방법

이때도 패리티 비트는 짝수 or 홀수 패리티 비트를 이용할 수 있다. 이는 송수신자가 서로 약속하에 사용을 하면된다.

  • 방법

    1. 2^p >= P + M +1 을 만족하는 p를 찾는다. 이때 p는 패리티 비트의 개수, m은 데이터의 비트 개수이다.

    2. 데이터의 비트 단위 중 2의 거듭제곱에 위치한 모든 비트를 패리티 비트로 사용한다.

    3. 각 패리티 비트는 각자 할당된 공간의 데이터를 검사후 짝수/홀수 패리티 비트 규칙에 맞게 체크 비트를 설정한다.

    4. 1,2,3에 의해 생성된 데이터+체크 비트를 전송 후 수신자는 다시 검사해보며, 오류가 있는지 검출 하고 오류가 난 자리를 확인하여 수정한다.

상승 코드


전진오류수정(FEC)방법중 하나로 수신 측에서 수정하는 방법.

정지 후 대기(Stop and Wait)


후진 오류 수정(BEC)방법중에 하나로 송신측에 재전송 요청을 통해 수정하는 방법

GBN ( Go Back N )


후진 오류 수정(BEC)방법중에 하나로 송신측에 재전송 요청을 통해 수정하는 방법

선택적 반복 (Selective Repeat)


후진 오류 수정(BEC)방법중에 하나로 송신측에 재전송 요청을 통해 수정하는 방법

Previous응용 계층 ( Application Layer )NextHttp

Last updated 3 years ago

( 패리티 비트가 검사하는 공간의 데이터 규칙과, 자세한 설명은 여기를 하자)

참고