.
1. 주소지정
1.1. 주소지정 (Addressing)
컴퓨터 통신망에서 사용자나 자원(resource)을 식별하기 위한 방법
•
문자나 수를 이용
•
모든 통신 지국이 전용 링크를 가지면 주소가 필요 없지만 실제 컴퓨터 통신망은 자원을 공유하므로 주소지정이 필요
1.2. 주소지정 방식
1.
계층 수
•
단일 계층, 복수 계층
2.
부 네트워크가 제공하는 주소 서비스
•
논리 주소 및 물리 주소
3.
같은 주소를 가지는 지국 수
•
단일 지국
•
복수 지국
◦
복수 목적지 주소, 그룹 주소
◦
broadcasting 주소, flooding 주소
4.
주소 할당 모드
•
정적 주소 할당, 동적 주소 할당
논리 주소와 물리 주소
논리 주소 (Logical Address)
•
논리적으로 부여되는 주소
•
IP 주소, 도메인 주소 등
•
예) 203.232.172.105, www.knou.ac.kr
물리 주소 (Physical Address)
•
네트워크 장치에 고유하게 부여되는 주소
•
하드웨어 기반으로 일반적으로 변경되지 않음
•
NIC(Network Interface Card)에 저장
•
예) MAC Address 00:13:77:52:67:78
단일 주소와 다중 주소
단일 주소 (Unicast Address)
•
하나의 송신자와 하나의 수신자 간 통신 방식
다중 주소
•
여러 수신자를 대상으로 데이터를 전달하는 방식
종류:
•
목적지 그룹 주소(Multicast)
•
방송 주소(Broadcast)
•
Flooding 주소
주소 할당 모드
정적 주소
관리자가 직접 고정적으로 할당하는 주소
•
변경되지 않아 서버 환경에 많이 사용
동적 주소
필요 시 자동으로 주소를 할당하는 방식
•
DHCP 등 사용
•
관리 효율 높음
2. 오류와 오류제어
2.1. 오류(Error)
송신 데이터와 수신 데이터가 서로 다른 상태
•
데이터 비트 변경
•
데이터 손실
•
제한 시간 내 미도착
•
열, 자기장, 간섭, 고장 등
잔류오류율 (RER, Residual Error Rate)
•
오류제어 수행 이후에도 남아있는 오류 비율
오류가 있는 비트(또는 블록) 수
--------------------------------
전체 전송 비트(또는 블록) 수
Plain Text
복사
2.2. 오류제어
잡음이나 고장 등의 영향에도 불구하고 잔류오류율을 허용 범위 이하로 유지하기 위한 통신 기능
후진오류제어 (backward error control)
•
오류 검출 후 재전송 요청
•
ARQ 방식 사용
전진오류정정 (forward error correction)
•
오류 검출 및 수정 가능
•
재전송 없이 복구 가능
3. 오류검출 방식
3.1. 패리티 검사
데이터 비트에 패리티 비트를 추가하여 오류를 검출하는 방식
•
패리티 비트는 데이터 내의 1의 개수 기준으로 설정
•
수신측은 전송받은 데이터의 1개수를 다시 계산해 오류 발생 여부 확인
예시:
데이터: 1011000
Plain Text
복사
현재 1의 개수는 3개(홀수)
짝수 패리티(Even Parity)를 사용하는 경우 전체 1 개수를 짝수로 맞추기 위해 패리티 비트 1 추가
최종 전송 데이터:
10110001
Plain Text
복사
전체 1 개수는 4개(짝수)가 되며 수신측은 데이터를 받은 후 다시 1 개수를 계산
전송 중 비트 오류가 발생하면 1 개수가 달라지므로 오류를 검출할 수 있음
패리티 종류
•
홀수 패리티(Odd Parity)
◦
전체 1의 개수가 홀수가 되도록 패리티 비트 설정
•
짝수 패리티(Even Parity)
◦
전체 1의 개수가 짝수가 되도록 패리티 비트 설정
3.1.1. 단순 패리티 검사
문자 단위로 패리티 비트를 추가하는 방식 [Data][Parity]
•
수신측은 문자 단위로 1 개수를 계산하여 오류 여부를 확인
•
구현 단순하고 1비트 오류 검출 가능
•
짝수 개 오류는 검출 불가능 가능성 존재(두개 동시 변경될 경우 1개수 홀짝 유지)
3.1.2. 2차원 패리티 검사
행과 열 방향 모두 패리티 비트를 추가하는 방식
•
수신측에서 각 행과 열 패리티 모두 검사해 오류 여부 판단해 오류 위치 추정 가능
•
단순 패리티보다 오류 검출 성능 우수
•
다중 비트 오류 검출 가능성 증가하지만 구현 복잡도도 증가
3.2. 검사합(Checksum)
데이터 세그먼트들의 합을 이용하여 오류를 검출하는 방식
•
송신측은 데이터를 일정 크기의 세그먼트(segment)로 나눈 뒤 각 값을 더하여 검사합(checksum)을 생성
•
수신측은 동일한 방식으로 다시 계산하여 오류 여부를 판단
예시:
데이터:
1001
0110
0011
----
10010 (합)
SQL
복사
•
이후 carry bit를 처리하고 결과값의 1의 보수(Complement)를 생성하여 checksum으로 사용
•
수신측에서 수신데이터와 checksum 함께 더한뒤 결과값 비교해 모든 비트가 1이면 정상
검사합 생성 과정
1.
데이터를 세그먼트로 분할
2.
세그먼트들을 2진수로 간주하여 합산
3.
carry bit 포함
4.
결과값의 1의 보수 생성
5.
생성된 값이 checksum
검사합 검사 과정
1.
수신 데이터를 세그먼트 단위로 분할
2.
checksum 포함 전체 합 계산
3.
결과값의 1의 보수 계산
4.
결과가 0이면 오류 없음
특징
•
구현 비교적 단순
•
패리티보다 검출 성능 우수
•
TCP/IP 등 네트워크 프로토콜에서 사용
•
일부 오류 패턴은 검출 실패 가능
3.3. 순환잉여검사(CRC, Cyclic Redundancy Check)
다항식 기반 연산을 이용한 오류검출 방식
•
단순 데이터 합산이 아닌 비트열 자체를 수학적 다항식처럼 처리
•
패리티 검사가 문자 단위 검사라면 CRC는 블록이나 Frame 단위 검사를 수행
•
현재 대부분의 네트워크 프로토콜과 저장장치에서 사용되는 대표적인 오류검출 방식
◦
Wi-Fi, HDD/SDD, 사진, 음성, 영상 데이터 전송 등 활용
CRC 동작 개념
송신측은:
1.
데이터 비트열 준비
2.
생성 다항식(Generator Polynomial) 선택
3.
modulo-2 나눗셈 수행
4.
나머지 값을 CRC 코드로 추가
수신측은 동일한 생성 다항식으로 다시 계산한다.
•
나머지가 0
◦
오류 없음
•
나머지가 존재
◦
오류 발생
CRC 특징
•
높은 오류 검출 성능
•
Burst Error 검출에 강함
•
프레임 단위 오류 검출 가능
•
하드웨어 구현 효율 높음
•
네트워크 프로토콜에서 널리 사용
CRC 구성 요소
•
BCC (Block Check Character)
•
FCS (Frame Check Sequence)
CRC 생성 과정
1.
비트열을 다항식 형태로 변환
2.
생성 다항식 G(x) 선택
3.
데이터 뒤에 0 추가
4.
modulo-2 연산 수행
5.
나머지를 CRC 코드로 추가
예시:
Data: 110101
Generator: 1011
Plain Text
복사
생성 다항식으로 modulo-2 연산 수행 후 생성된 나머지를 데이터 뒤에 추가하여 전송
CRC 검사 과정
수신측은:
•
수신 데이터
•
CRC 코드
전체를 동일한 생성 다항식으로 나누고 나머지 0이면 정상 데이터 판단
3.4. 특징 비교
구분 | 패리티 검사 | 검사합(Checksum) | CRC |
검사 기준 | 1 개수 | 데이터 합 | 다항식 연산 |
처리 단위 | 문자 | 세그먼트 | 블록/프레임 |
검출 성능 | 낮음 | 중간 | 매우 높음 |
구현 난이도 | 매우 단순 | 단순 | 상대적으로 복잡 |
대표 사용 | 간단한 통신 | TCP/IP | Ethernet, 저장장치 |
4. 오류제어 방법
데이터 통신에서는 전송 중 잡음(noise), 간섭(interference), 신호 감쇠 등의 영향으로 데이터 오류가 발생할 수 있다.
오류제어(Error Control)는 이러한 오류를 검출하고 복구하여 데이터 신뢰성을 유지하기 위한 기술이다.
오류제어 방식은 크게 재전송 기반 방식, 수신측 자체 복구 방식으로 구분된다.
4.1. 귀환오류제어 (Backward Error Control)
역방향 채널(Feedback Channel)을 이용하여 오류를 제어하는 방식
•
송신측 → 데이터 전송
•
수신측 ACK/NAK 응답
4.1.2. 결정귀환
오류 검출 위치가 수신측에 존재하는 방식
대표적으로 ARQ(Automatic Repeat reQuest) 방식 사용
수신측은:
•
정상 수신 시 ACK 전송
•
오류 발생 시 REJ 또는 NAK 전송
송신측은 오류 프레임 재전송 수행
4.1.3. 정보귀환
오류 검출 위치가 송신측에 존재하는 방식
수신측은 단순히 수신 상태 정보를 송신측에 전달하고, 송신측이 이를 기반으로 오류 여부를 판단
4.1.4. 복합귀환
둘 이상의 오류제어 방식을 함께 사용하는 방식
예시:
•
결정귀환 + 정보귀환
•
결정귀환 + 전진오류정정(FEC)
4.2. ARQ (Automatic Repeat reQuest)
오류 발생 시 재전송을 요청하는 오류제어 방식
4.2.1. 정지-대기 (Stop-and-Wait) ARQ
한 개의 프레임을 전송한 뒤 ACK 응답을 기다리는 방식
동작 과정
•
프레임 전송
•
ACK 수신 시 다음 프레임 전송
•
REJ 수신 시 동일 프레임 재전송
•
Timeout 발생 시 재전송
특징
•
하나 보내고 확인 받고 다음거 보내는 구조로 구현 단순하고 비용 저렴
•
ACK를 기다리는 동안 회선이 놀게 되어 전송 효율 낮음
4.2.2. 연속적 ARQ
여러 프레임을 연속적으로 전송하는 방식
•
정지-대기 방식의 낮은 효율 문제를 개선하기 위해 나온 방식으로 ACK 기다리지 않고 여러개 먼저 전송
•
송신 가능한 프레임 범위를 윈도우 형태로 관리
Go-Back-N ARQ
오류가 발생한 프레임 이후의 모든 프레임 재전송
1 2 3 4 5 전송 후 3 오류 발생시 → 3 4 5 전부 재전송
•
Sliding Window 사용
•
구현 비교적 단순
•
불필요한 재전송 발생
Selective-Repeat ARQ
오류가 발생한 프레임만 선택적으로 재전송
1 2 3 4 5 전송 후 3 오류 발생시 → 3만 재전송
•
전송 효율 높음
•
메모리 관리 필요
•
프레임 재배열 필요해 구현 복잡
4.2.3. 적응적 ARQ
통신 환경에 따라 프레임 길이를 동적으로 조절하는 방식
•
오류율 높을 때 짧은 프레임 사용
•
오류율 낮을 때 긴 프레임 사용
•
구현이 매우 복잡하고 네트워크 상태 지속 분석 필요함
4.3. 전진오류정정 (FEC, Forward Error Correction)
수신측에서 오류 검출과 동시에 오류 수정까지 수행하는 방식
•
귀환오류제어와 달리 재전송없이 스스로 복구
•
송신 측이 미리 충분한 오류복구 정보를 함께 전송
•
수신측은 이를 이용해 오류 계산하고 수정
특징
•
재전송 불필요
•
실시간 통신에 적합
•
위성통신/스트리밍 등에 사용
•
역방향 채널이 어려운 환경에 적합
•
잉여 비트(Redundant Bit) 추가 필요
•
데이터 오버헤드 증가
•
구현 복잡도 높음
대표 코드
•
해밍(Hamming) 코드
◦
1비트 오류 수정 가능
•
리드-뮬러(Reed-Muller) 코드
•
리드-솔로몬(Reed-Solomon) 코드
◦
CD/DVD
◦
QR 코드
◦
디지털 방송