[정보통신망] #5. 데이터 통신의 전송기술 (2)

bien·2024년 4월 29일
0

정보통신망

목록 보기
5/13

학습 목표

  • 주소지정 방식의 개념을 설명할 수 있고 분류할 수 있다.
  • 오류의 개념과 오류제어방식을 설명할 수 있다.
  • 다양한 오류검출 방식으로 오류를 검출할 수 있다.
  • 귀환오류제어전진오류정정을 설명할 수 있다.

주소지정

  • 주소지정 (addressing)
    • 명명(naming), 식별(identification)
    • 컴퓨터 통신망에서 사용자(컴퓨터, 파일 등)를 식별하는 방법
    • 문자 또는 수를 이용
    • 배경
      • 모든 통신 지국의 쌍이 전용 링크(선)를 갖고 있으면 주소지정은 필요 없음.
      • 그러나 컴퓨터 통신망은 ICT 자원(resource)을 공유함.
      • 따라서 ICT 자원의 공유를 위해 주소지정이 필요함.

주소 지정 방식

주소 지정 방식을 분류하는 4가지 방법을 알아보자.

  1. 계층의 수
    • 단일 계층, 복수 계층
  2. 부 네트워크가 제공하는 주소 서비스
    • 논리 주소 및 물리 주소
  3. 같은 주소를 갖는 지국의 수
    • 단일 지국
    • 복수 지국
      • 복수 목적지 주소, 그룹 주소
      • broadcasting 주소(단톡방에 모두 전송), flooding 주소 (송신자 빼고 모든 수신자에게 전송)
  4. 주소 할당 모드 (ex. 고정 IP-정적주소, IP가 부분적으로 변경-동적주소)
    • 정적 주소, 동적 주소

논리주소 및 물리주소

  • 예: 한국방송통신대학교
    • 논리주소: 203.232.172.106 // 32비트. 10진수 (4byte)
      • domain name: www.knou.ac.kr
    • 물리주소: 00:13:77:52:67:78 // 48비트, 16진수 (6byte)

오류제어

1. 오류와 오류제어

오류

  • 오류 (error)
    • 송신 데이터 != 수신 데이터
    • 송신 데이터가 조어진 시간 안에 수신측에 도착하지 못한 경우
  • 오류 발생 이유
    • 열, 자기장, 간섭, 고장 등
  • 잔류오류율(RER: Resicual Error Rate)
    • 오류가 있는 비트[문자, 블록] 수 / 전송된 총 비트[문자, 블록] 수
    • 100개중 1개 = 1%

오류제어

  • 오류제어
    • 잡음, 고장 등의 영향에 대비하여 잔류요류율(RER)을 주어진 한계 이내로 유지하는 통신 기능
  • 오류 제어 방식
    • 후진오류제어(backward error control)
      • 오류 검출 후 재전송 요청
    • 전진오류정정(forward error correction)
      • 오류 검출 및 수정

2. 오류 검출 방식

  • 패리티(parity) 검사
  • 검사합(checksum) 검사
  • 순환잉여검사(CRC: Cyclic Redundancy Check)

패리티(parity) 검사

  • 패리티(parity) 전략: 데이터 전송 시 페리티 비트를 하나 더 추가한다.
    • 홀수 패리티(odd parity) 전략
      • 내가 보내는 비트를 포함해 모든 비트의 1의 개수가 홀수
    • 짝수 패리티(even parity) 전략
      • 내가 보내는 비트를 포함해 모든 비트의 1의 개수가 짝수
  • 단순(1차) 패리티 검사 (홀수 패리티 이용)
    • 단, 동시에 짝수개의 비트 오류가 있는 경우 오류를 검출하지 못함.
  • 2차원 패리티 검사 (짝수 패리티 이용)
    • 수평, 수직 2종류의 패리티 비트를 전송.
    • 수평, 수직 모두 짝수개여야 하므로, 짝수개의 비트오류도 검출 가능
    •   

검사합(Check Sum) 검사

  • 검사합 생성 ==> 검사합 검사

검사합 생성기

  • 데이터를 세그먼트로 분할
  • 세그먼트들을 2진수로 간주하고 합함
  • carry bit도 합함
  • 합한 결과를 1의 보수로 만듦(==> check sum)
  • 예: 데이터 Networs의 전송
    • 4개의 세그먼트로 나누고, 각 2진수들을 모두 더한다. (carrybit가 생기면 그것도 같이 더해준다.)
    • 이후 1의 보수를 취해준다.

검사합 검사기

  • 비트열을 수신하여 세그먼트로 분할
  • 세그먼트들을 2진수로 간주하고 합함
  • carry bit도 합함
  • 합한 결과를 1의 보수로 만듦
  • 이 결과가 0이면 오류 없음
  • 예: 데이터 Networs의 수신

    • 수신측에서는 4개의 세그먼트와 checksum(검사합)까지 더한다. 그리고 1의 보수를 취하면, 결과가 0이 나오게 된다.이 경우 결과가 오류 없다고 판단할 수 있다.
  • 검사합 검사기

    • 8비트 데이터를 4비트 사이즈로 쪼갠다. (0010, 0110)
    • 둘을 더한다 (0010 + 0110): 초록색
    • 보수를 취한다 (0111): 주황색
    • 보내는 쪽은 초록색과 오랜지색 3개를 보낸다.
    • 받는 쪽은 주황색과 초록색 2개를 더한 뒤, 보수를 취한다
      • 0이 전송되어야 적절하게 전송된 것.

순환 잉여 검사(Cyclic Redundancy Check)

  • 패리티 검사: 문자 단위 검사
  • 순환 잉여 검사: 비트의 블록(block) 단위 검사
    • 사진, 소리, 영상 등의 데이터 전송에서 활용
    • block [또는 frame] 끝에만 오류제어정보 첨가
      • BCC (Block Check Character)
      • FCS (Frame Check Sequence)
        • 두개 같은거. Block이란 표현을 사용하면 BCC, Frame이란 표현을 사용하면 FCS라고 부름.

BCC 생성 과정

  1. 비트의 다항식 표현 ==> M(X) (m(x) = ax^3 + bx^2 + cx + d)
    • 비트랑 1:1로 대응되는 다항식으로 표현한다.
  2. 생성다항식 (G(X))에 의한 부호(code)화
    1. M'(X) = M(X) * X^m (m은 G(X)의 최상위 차수)
      • 기존의 다항식에 최상위 차수를 곱해준다.
    2. M'(X)를 G(X)로 나누어 나머지 R(X)를 구함
      • M'(X) / G(X) = M''(X) ... R(X)
      • ==> M'(X) = G(X) * M''(X) + R(X)
    3. F(X) = M'(X) + R(X) <= BCC
    • 단, 모듈로-2 연산 사용

참고: 생성다항식

참고: 모듈로-2 연산

  • 서로 다를때만 1이 되는 연산

오류 검사 과정

  • 수신된 BCC(F(X))를 이용한 오류 검사
    • BCC를 동일한 생성다항식(G(X))으로 나누어
      • 나머지가 없으면 ==> 오류 없음
      • 나머지가 있으면 ==> 오류 있음
    • 이유
      • F(X) / G(X) = {M'(X) + R(X)} / G(X)
        = {G(X) M''(X)) + R(X) + R(X) } / G(X)
        - R(X) + R(X)는 0 (모듈러-2 연산에 의해 같은걸 더하는 경우 0이 됨)
        = {G(X)
        M''(X)} / G(X)
        = M''(X) (나머지 없음)

예시

  • BCC 생성

    • M(X)에 G(X)의 가장 큰 차수(m)만큼 X^m을 곱해준다.
    • M'(X)를 G(X)로 나누어 나머지 R(X)를 구한다.
    • M'(X) + R(X)로 F(X)를 만들어 BCC를 만든다.
  • 오류 검사 과정 (파란 부분은 오류 부분)

    • 수신된 BCC를 기반으로, 수신측에서 F(X)를 만들어 본다. (아직 수신 정보의 정확성은 알지 못한다.)
      • 나머지가 존재하므로 전송에 오류가 있었음을 알 수 있다.

3. 귀환 오류제어

오류제어 방법의 분류

    • 귀환오류제어: 오류 검출 시 재전송 요청
    • 전진오류정정: 오류 검출 시 어떻게든 정정까지 수행

귀환 오류 제어

  • 지국 사이의 역방향 채널을 이용하는 오류제어 방법
  • 귀환오류제어의 분류(오류 검출 위치)
    • 오류가 발생되었다는 결정 장치가 송신측인지, 수신측인지에 따라 이름이 바뀐다.

결정 귀환

  • 오류 검출의 위치가 수신측에 있는 경우
  • ARQ (Automatic Repetition reQuest) 자동으로 반복적으로 요청
    -
    • 데이터를 문제없이 받았으면 ACK, 수신 오류시 REJ("다시 보내")를 전송

정보 귀환

  • 오류 검출의 위치가 송신측에 있는 경우
    • 수신측에서 BCC를 붙여서 송신측으로 보낸다. 보낸쪽에서 오류 검출을 확인. 정상인 경우메나 다음 블럭(B)를 보낸다.
    • 송신측에서 오류 검사 후, 오류 발생시 다시 B를 보낸다.

복합 귀환

  • 오류율을 줄이기 위해 오류제어방법을 복합적으로 이용
    • 결정귀환 및 정보귀환을 이용 (동시에 같이 사용)
      • 수신측에서 오류 검출하면 => REJ 송신
      • 수신측에서 오류 검출 못하면 => 정보귀환 방식으로 BCC 송신
    • 결정귀환 및 전진오류정정(FEC)을 이용
      • 수신측에서 오류 검출하면 => REJ 송신
      • 송신측에서는 전진오류정정 방식으로 송신
        • 전진오류정정 방식: 오류 발생시 받은 수신측에서 직접 고치도록 하는 것.

ARQ

- ARQ: Automatic Reqpeat reQuest

  1. 정지-대기 (stop-and-wait) ARQ
  2. 연속적 (continuous) ARQ
    • N-프레임 후퇴 (go-back-N) ARQ
    • 선택적 반복 (selective-repeat) ARQ
  3. 적응적 (adaptive) ARQ
  1. 정지-대기 (stop-and-wait) ARQ
    • 1개의 데이터 프레임을 송신하고 기다림
      • (하나의 전송 단위만큼 기다린다: ACK, REJ, 대기시간)
      • ACK를 수신하면 다음 프레임을 송신 후 기다림
      • REJ를 수신하면 처음 프레임을 재송신후 기다림
      • 대기시간을 초과하면 처음 프레임을 재송신 후 기다림
    • 특징
      • 구현이 단순, 비용(버퍼)이 저렴
      • 전송효율이 떨어짐 (기다리는 시간)
  1. 연속적 ARQ (전송 효율을 높이기 위해 데이터를 많이 보냄)
    • 여러 개의 데이터 프레임을 송신하고 기다림
    • 1) go-back-N ARQ
      • window size만큼 보내고, 오류 발생시 그 사이즈(n)만큼 뒤(back)로 돌려 다시 window size만큼 전송한다. NAK(4)로 왔으면 4부터 다시 전송
      • sliding window
    • 2) Selective-Repeat ARQ
      • NAK(1)로 오면 거의 window size를 전부 다시 보내야 함.(비효율적) 그래서 선택적으로 "오류가 발생한 애"만 다시 보내자는 생각으로 사용
      • 여러 개의 데이터 프레임을 송신하고 기다림
        • REJ가 수신된 프레임만 재전송
      • 특징
        • 전송 효율이 go-back-N ARQ 보다 높음
        • 프레임의 송수신 순서가 달라 재배열이 필요한 문제 등 복잡
    • 3) 적응적(Adaptive) ARQ
      • 프레임의 길이를 동적으로 변경시키는 방법
        • 수신측에서 받을 수 있는 window size를 확인하고, 거기서 수용 가능한 사이즈만큼 유동적으로 늘리고 줄여가며 전송하는 방식
        • 수신측은 통신오류발생률을 송신측에 통보
        • 송신측은 그에 적합한 프레임 길이로 전송함
      • 전송 효율을 높이기 위해
        • 오류발생률이 높을 때 짧은 프레임으로 전송
        • 오류발생률이 낮을 때 긴 프레임으로 전송
      • 구현이 매우 복잡한 단점

4. 전진 오류 정정

  • 전진오류정정 (Forward Error Correction)
    • 수신측에서 오류 검출 및 정정까지 할 수 있는 방식
    • 연속적인 데이터의 흐름이 필요하고 역방향 채널의 제공이 어려울 때 많이 사용 예) 화성에 데이터 보낼때. 화성에서 다시 보내오는 역방향이 너무 힘드니, 오류 정정 정보까지 같이 전송한다.
    • 오류정정 코드를 전송
      • 데이터 프레임에 잉여 비트를 추가하여 만ㄷ름
        • 헤밍(Hamming) 코드
        • 리드-뮬러(Read-Muller) 코드
        • 리드-솔로몬(Read-Solomon) 코드 등
      • 잉여 비트의 크기만큼 전송효율이 떨어지는 단점

Reference

  • 한국방송통신대학: 정보통신망 - 손진곤
profile
Good Luck!

2개의 댓글

comment-user-thumbnail
2024년 6월 1일

너무 정리를 잘하셨네요. 저도 이번에 시험 보는데 화이팅입니다~

1개의 답글