Transcript 강의자료 10장
Part 3. 데이터 링크 계층
10장: 오류 검출과 정정
11장: 데이터 링크 제어
12장: 접근 제어
13장: 유선 LAN
14장: 무선 LAN
15장: 연결 장치
16장: 무선 WAN
17장: SONET
18장: Frame Relay & ATM
1
10장 오류 검출과 정정
10.1
10.2
10.3
10.4
10.5
개요
블록 코딩 (생략)
선형 블록 코드 (생략) -> Parity Check
CRC
Checksum
10.1 개요
오류 종류
단일 비트 에러
폭주 오류 (burst error)
3
오류 검출 기본 개념
중복
오류 검출은 목적지에서 오류를 검출하기 위해서 여분의 비트
들을 추가하는 중복(잉여)개념을 이용
4
복구 방법
오류 정정 (forwarding error correction)
오류(손상)된 비트의 개수와 위치를 알아야 함
검출 코드와 보다 큰 크기의 오류 검출 코드 전송이 필요
대표적인 오류정정 코드: 해밍 코드 (생략)
재전송
오류 검출 코드에 의해 오류의 유/무만 판단
오류가 발생된 패킷(프레임)을 재전송
데이터 통신에서 가장 널리 사용되는 방법
5
Dataword & Codeword
Dataword (k bits)
전송할 메시지를 k 비트로 구성된 데이터워드로 나눔
Codeword (n bits = k + r bits)
데이터워드에 중복 개념의 r 개의 비트들을 붙여서 n bit개의 코
드워드로 구성
6
Parity Check
Simple Parity Check
k bit개의 데이터를 n = k + 1인 n bit의 코드워드 생성
추가된 1 비트는 패리티 비트로 불리며 코드워드의 1의 개수가
짝수가 되도록 구성
홀 수개의 비트 오류만 검출 가능
7
2차원 Parity Check Code
8
10.4 Cyclic Redundancy Check (CRC)
CRC 예
데이터워드 (k = 4 bits), 코드워드(n = 7 bits), 중복비트 (r = 3
bits)로 구성
CRC는 주어진 제수(나누는 수)에 의해 데이터워드를 나눈 후(
모듈로 2 연산), 나머지 결과를 오류 검출 코드로 생성한다.
9
모듈 연산
법(modulus) N 이라는 제한된 정수를 사용
0 부터 N-1까지 정수 사용
예: 모듈로-2 연산에서 덧셈과 뺄셈
덧셈: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 1
뺄셈: 0 – 1 = 0 0 – 1 = 1 1 – 0 = 1 1 – 1 =0
모듈로 2 연산: 덧셈, 뺄셈 모두 XOR 연산과 동일
10
CRC 부호화기 (Sender)
11
CRC 복호화기 (Receiver)
12
예제
데이터워드가 11010 이고, 제수가 1011일 경우, 코드워드는
어떻게 구성되는가?
13
다항식에 의한 표현
14
CRC의 표준 제수
CRC의 성능은 제수(나누는 수)에 따라 달라지며, 성능 측정
의 교재의 범위를 벗어남으로 생략
CRC가 채택한 표준 다항식
15
10.5 Checksum (검사합)
전반적인 오류 검출 성능
CRC > Checksum
CRC는 Shift 레지스터와 XOR 게이트로 H/W 구현이 용이하고
오류 검출이 뛰어나 데이터링크 계층에서 주로 활용
Checksum은 S/W 구현이 용이하여, TCP/IP 등의 오류 검출
코드로 많이 사용되고 있지만, 검출 능력에 따라 CRC가 많이
선호되는 추세임
16
Checksum 개념
데이터의 합도 함께 전송하는 개념
5개의 4비트 숫자 (7, 11, 12, 0, 6) 전송 시에
(7, 11, 12, 0, 6, 36) 도 함께 전송
수신 시에 수신한 5개의 숫자 합과 전송 받은 합을 비교
수정: 합계 값을 음수(보수)로 보냄
(7, 11, 12, 0, 6, -36) 을 전송
수신 시에 모든 값을 더해 0 이면 오류 없음
문제점: 36이나 -36은 4비트 숫자로 표현이 불가능 함
캐리가 발생하는 왼편의 비트들을 다시 오른쪽 비트로 더함
예) 21을 4비트로 표현
21: 10101에서 제일 왼쪽 1을 0101에 더함 => 0110 (6)으로 표현
17
Checksum 예
1 1 1 1
0 0 0 0
1
18
TCP/IP Checksum 기법
Sender site:
1. 메시지를 16-bit 워드 단위로 나눔
2. 초기 checksum 값은 0 으로 지정.
3. 모든 워드들을 1의 보수 연산으로 더함
4. 더한 결과 값을 1의 보수를 취한 다음 checksum 으로 설정하여 전송
Receiver site:
1. 메시지를 16-bit 워드 단위로 나눔
2. 모든 워드들을 1의 보수 연산으로 더함
3. 더한 결과 값을 1의 보수로 취한 경우 0 이면 에러가 없는 것, 0 이 아니면
에러가 발생한 것으로 판단
19
예제 10.23
8 개의 문자로 구성된 Forouzan 메시지의 checksum 연산 예
20