모듈화
- 복잡하고 큰 시스템은 기능을 모듈로 분리하여 설계
- 시스템 구조가 단순해짐
- 모듈은 독립적으로 동작하게 되지만 상호 유기적으로도 통합되어 사용되어야 하므로 모듈간의 적절한 인터페이스가 필요하게 됨
하드웨어 특면의 모듈화
- 컴퓨터 하드웨어는 CPU, 메모리, 하드디스크, LAN 같이 작은 부품들이 모여 한 시스템을 구성
- 모듈화 각 단위가 독립적 기능을 수행하고 있기에 만약 시스템에 문제가 발생하더라도 고장이 발생한 부분을 쉽게 찾아내고 수리가 용이
소프트웨어 측면의 모듈화
- 프로그래밍 언어에서는 함수 개념을 사용해 전체 프로그램을 모듈화
- 함수 별로 특정 기능이 독립적으로 수행되어, 각각의 함수가 개별적으로 설계되고 구현되는 장점이 있음
- 전체 시스템 이해가 쉽게 가능해짐
프로그래밍 언어에서의 모듈화
- 프로그래밍 언어로 프로그램을 제작 시 생산성과에 최적화
- 관리에 용이하게 모듈(기능) 단위로 분할
일반적인 계층 구조 모듈화
- 계층 구조에서는 상위 계층이 하위 계층에 구현된 특정 서비스를 요청하는 방식으로 이동
- 하위 계층은 서비스를 직접 실행한 후 그 결과를 상위 계층에 제공
- 하위 계층의 실행 결과는 상위 계층에게 결과값을 직접 전달하거나 주변 환경 값을 변경하는 간접 방식으로도 진행됨
- 상하 계층에 인접한 모듈 인터페이스는 단순하게 구현해 모듈이 독립성을 지니고 전체 시스템의 구조를 단순화
계층 구조
- 특정 모듈이 다른 모듈에 서비스를 제공하는 형식의 계층 구조
- 네트워크에서도 독립적인 고유 기능을 수행하는 모듈들이 상위, 하위의 계층 구조로 연결되어 동작
- 상위 계층: 서비스 요청
- 하위 계층: 서비스 제공
계층 구조의 장점
- 전체 시스템을 이해하기 쉽고, 설계 및 구현 용이
- 모듈 간의 표준 인터페이스가 단순하면 모듈의 독립성을 향상시킬 수 있음 (시스템 구조를 단순화시키기 쉬워짐)
- 대칭 구조에서 동일 계층 간의 인터페이스인 프로토콜을 단순화시킬 수 있음
- 특정 모듈의 외부 인터페이스가 변하지 않으면 내부 기능의 변화가 전체 시스템의 동작에 영향을 미치지 않음
통신 프로토콜의 전송 방식
BSC: 문자 방식
- IBM에서 개발
- 컴퓨터와 단말기 간에 일정한 전송 제어 문자를 사용하여 오류 없이 전송해주는 프로토콜
- 문자 방식의 프로토콜
- 전송 데이터의 처음과 끝에 동기를 위한 SOH, STX, ETX 등의 특수 문자를 포함시켜 전송하는 방식
- 반이중 통신 방식만 지원
- 포인트 투 포인트, 멀티포인트 접속 방법 지원
- 직렬 전송, 병렬 전송 지원
- 전용 회선 형식과 교환 회선 형식 지원
- Stop-and-wait ARQ의 에러 제어 방식
SDLC: 비트 방식
- 비트 방식의 프로토콜
- 전송 데이터의 처음과 끝에 특수 플래그 문자를 포함시켜 전송하는 방식
- 대표적인 프로토콜: SDLC, HDLC 프로토콜
- 데이터 전달 방식: 단방향, 전이중, 반이중 통신 방식 지원
- 단방향: 데이터를 한쪽 방향으로만 전송
- 전이중: 데이터를 양쪽에서 동시 전송
- 반이중: 양방향으로 전송할 수 있지만, 특정 시점에서는 한쪽 방향으로만 전송
- 포인트 투 포인트, 멀티포인트 접속 방법 지원
- 전용 회선 형식과 교환 회선 형식 지원
- Stop-and-wait ARQ의 에러 제어 방식
HDLC: 비트 방식
- 전이중, 반이중 통신 방식 지원 및 고속 전송 가능
- 포인트 투 포인트, 멀티포인트, 루프 등 다양한 접속 방법 지원
- 전송 효율의 향상, 신뢰성의 향상
- IBM의 SDLC 프로토콜을 토대로 OSI에서 개발
- 신뢰성이 높음
- X.25, ISDN의 D 채널 방식 등에 이용됨
- CCITT에서는 거의 유사한 LAPB(Link Access Procedure Balanced)를 개발하여 X.25 패킷 교환망 표준 중 일부에 채택하여 사용
- HDLC는 가장 대표적인 데이터 링크 프로토콜
HDLC 프레임의 구성
- Flag - Address - Control - Data - FCS - Flag
- 시작 플래그 - 주소 - 제어 - 실제 데이터 - 검사 순서 - 종료 플래그
- 플래그: 8비트, 시작/종료 플래그가 있음, 프레임의 동기화를 맞추기 위해 사용
- 주소: 1개 이사으이 8비트로, 전송할 목적지의 주소 가리킴
- 제어: 8 또는 16비트로 구성, 프레임의 종류를 나타냄
- I 프레임 (정보 프레임): 데이터와 제어 정보가 들어있는 프레임
- S 프레임 (감독 프레임): 정보 프레임에 대한 응답 기능을 하는 프레임
- U 프레임 (비번호 프레임): 연결 제어 기능을 수행하는 프레임
- 실제 데이터: 가변 길이의 전송 데이터가 실리는 부분
- 프레임 검사 순서 (FCS): 16비트 또는 32비트로 구성, 오류 검출 등에 사용
X.25
- 패킷 교환망에서 DCE(회선 종단 장치)와 DTE(데이터 단말 장치) 사이에 이루어지는 상호작용을 규정한 프로토콜
- 가장 일반적으로 사용되고 있음 (세계적인 표준)
- 네트워크 계층의 대표 프로토콜
오류 제어
- 정보 통신 분야에서의 오류 제어는 자료 처리 시스템에서 중앙 처리 장치 내부, 데이터 전송 회선 따위에서 발생하는 오류를 검사하거나 자동으로 정정하는 방법을 통틀어 이르는 말
- Error Control System
- 오류 제어 기능은 통신 프로토콜의 가장 기본적인 기능
오류의 원인
- 통신 회선의 순간적인 절단 현상, 통신 회선의 잡음과 감쇄, 혼선, 군 지연(Group Delay), 찌그러짐, 펄스성 잡음, 에코 현상, 장치의 기계적·구조적 원인, 전원 중단 등 전기적 원인 때문에 발생
- 물리 계층에서는 데이터를 주고 받기만 할 뿐 오류 여부는 검사하지 못함
오류 형태
- 데이터 변형 오류: 데이터가 깨져서 도착
- 데이터 분실 오류: 데이터가 도착하지 못함
오류 발생 유형
- DTE에서 발생하는 오류
- 통신 제어 장치에서 발생하는 오류
- 정보 전송 회선에서 발생하는 오류
- 정보 전송 장치에서 발생하는 오류
- 정보매체로 변화할 때 발생하는 오류
- 정보 발생지에서 발생하는 오류
오류 제어 방식의 종류
- 오류 무시
- 반향 검사
- 검출 후 재전송 (ARQ)
- 패리티 검사
- 블록 합 검사
- 순환 중복 검사 (CRC)
- 전진 오류 수정 (FEC)
검출 후 재전송 (ARQ)
- Automatic Repeat reQuest
- 오류가 발생하면 수신 측은 송신 측에 오류가 발생한 사실을 알리고 오류가 발생한 프레임을 재전송할 것을 요구
- 송신 측은 전송 중인 프레임을 기억해야 하므로 버퍼가 필요
- 후진 오류 수정(BEC, Backward Error Correction) 방식 또는 자동 반복 요청 방식이라고도 함
전진 오류 수정 (FEC)
- Forward Error Correction
- 수신 측에서 오류가 있음을 발견하면 해당 오류를 검출할 뿐만 아니라 오류 수정도 가능한 방식
- 자기 정정 방식이라고도 함
- 장점: 연속적인 데이터 전송 가능, 역채널을 사용하지 않음
- 단점: 잉여 비트에 의한 전송 채널 대역이 낭비, 기기와 코드 방식 복잡함
- FEC 코드는 크게 블록 코드와 콘볼루션 코드로 구분
- 블록 코드: 선형 코드의 가장 대표적인 순회 코드 (해밍 코드, CRC 코드, BCH 코드)
- 콘볼루션 코드: 무선 채널 상에서 에러 발생 확률이 높아 이를 제어하기 위한 부호화 방식
- 시프트 레지스터를 사용하여 현재 및 과거 데이터를 이용하는 방식
- 음성 같이 전송 속도가 저속인 경우 많이 사용하는 방식 (고속은 터보 코드 사용)
ARQ 방식의 종류
정지 대기(Stop and Wait) ARQ
- 형태가 가장 단순한 ARQ
- 수신 측에서 응답을 받아야 전송할 수 있는 방식이라 다른 방식보다 전송 효율 떨어짐
- 데이터 전송 시 송신 측에서는 한번에 프레임 1개만 전송할 수 있으며, 수신 측에서는 다음 프레임을 맞게 전송하였는지 결정하여 송신 측에 통보
- 프레임을 몇 개의 '큰 단위'로 전송할 때 효율적
- 오류 복구할 때 정지 대기 방식과 하나의 메커니즘으로 구현
슬라이딩 윈도우(Sliding Window) 방식
- 데이터를 전송할 때 송신 측은 한 번에 윈도우 크기만큼 프레임을 연속해서 전송할 수 있음
- 수신 측은 적절한 간격으로 이 윈도 크기의 개수만큼 크기를 조절하여 송신 측에 통보
- 흐름 제어 방식 중 가장 대표적
- 오류 복구할 때 연속적 ARQ 방식과 하나의 메커니즘으로 구현
- 슬라이딩 윈도우 방식의 동작 과정
- n개를 수신할 수 있도록 수신 측 DTE에 버퍼를 할당
- 송신 측 DTE가 ACK 신호를 기다리지 않고도 프레임을 n개 전송할 수 있음
- 각 프레임에는 순서 번호가 할당됨
- 수신 측 DTE가 ACK 신호를 전송하므로 송신 측 DTE에서는 이 프레임의 순서 번호를 기준으로 해당하는 프레임을 전송
- 프레임의 순서 번호는 크기가 제한되어 있는데 k비트일 때 순서 번호의 범위는 0부터 2k-1까지임
- 그 이후부터는 다시 0부터 시작, 이때 2k-1을 윈도우의 크기라 함
연속적(Continuous) ARQ
- 정지 대기 ARQ 방식에서 생기는 단점을 줄이기 위해 데이터 블록을 연속해서 보내는 방식을 이용
- Go-Back N ARQ: 송신 측에서는 프레임을 연속해서 송신하고, 수신 측에서는 오류가 발생하면 송신 측에 NAK와 함께 오류 프레임 번호를 통보, 송신 측에서는 오류를 확인한 후 해당 프레임부터 나머지 프레임까지 계속 송신
선택적(Selective) ARQ
- (3세대(SR ARQ), 4세대(LTE) HARQ, 5G 적용)정상 프레임도 재전송하는 문제점이 있는 Go-Back N ARQ 방식의 단점을 오류가 발생한 프레임만 재전송하도록 개선한 것
- 실제로는 Go-Back N ARQ 방식을 더 많이 사용
오류 검출 방식
패리티 비트 검사 (Parity Bit Check)
- 전송되는 문자마다 패리티 비트를 하나씩 추가해 짝수나 홀수 여부를 검사하는 방법
- 홀수 패리티 방식 : 패리티 비트를 포함한 전송문자 1의 비트수를 항상 홀수 개로 유지
- 짝수 패리티 방식 : 패리티 비트를 포함한 전송문자 1의 비트수를 항상 짝수 개로 유지
- 패리티 비트 검사의 특징
- 정보 비트수가 적고, 오류가 발생할 확률이 낮을 때 사용
- 비동기 전송이나 문자 지향 동기 전송에 적합한 방식
- 7비트나 8비트로 구성된 문자에 패리티 비트를 추가
- 오류 비트가 홀수 개 발생하면 오류를 검출하기 쉬우나, 짝수 개 발생하면 오류를 검출하기 어려움
블록 합 검사(Block Sum Check)
- 짝수개 비트 오류를 검출할 수 없는 패리티 비트 검사를 개선한 방법
- 동작 원리 : 데이터 블록의 수평과 수직에 각각 패리티 비트를 추가하여 다수의 비트 오류를 검출
- 단점 : 오버헤드가 심함
해밍 부호 검사(Hamming Code Check)
- 1비트의 오류를 검출하여 자동으로 정정해 주는 코드
- 장점: 처리 속도가 빨라 실시간으로 처리할 수 있고, 오류 검출뿐만 아니라 정정도 가능
- 단점: 중복 비트가 많이 필요해 전송 효율이 낮고, 계산량이 많이 요구됨
서비스 프리미티브
- OSI 기본 참조 모델에서, 특정 계층의 상위 경계에서 사용자가 그 계층에 대해 서비스를 요청하고 제공받는 수단에 대한 추상적인 모형
- 추상적 개념, 요구, 지시, 응답, 확인의 4종류가 있음
- 계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류
- ① 연결형 서비스
- 연결형(Connection-oriented) 서비스를 이용하는 3단계 구성
- 연결형 서비스의 프리미티브 종류 3가지 포함
- ② 비연결형 서비스
- 전송할 데이터가 있으면 각 데이터를 독립적으로 목적지 호스트로 전송
- 서비스 프리미티브의 기능: 연결 설정 요청, 데이터 전송, 연결 해제 기능