01. 운영체제의 특징
운영체제(OS; Operating System)
사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해주는 소프트웨어
한정된 시스템 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공한다.
운영체제의 특징
- 사용자 편리성 제공 : 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영
- 인터페이스 기능을 담당 : 컴퓨터 시스템과 사용자를 연결
- 스케줄링 담당 : 다중 사용자와 다중 응용 프로그램 환경하에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링을 담당
- 자원 관리 : CPU, 메모리 공간, 기억 장치, 입출력 장치 등의 자원을 관리
- 제어 기능 : 입출력 장치와 사용자 프로그램을 제어
운영체제에서의 커널 기능
운영체제는 크게 인터페이스(쉘) + *커널의 구조
운영체제의 핵심적인 기능들이 커널에 모여있다면, 인터페이스(GUI)는 커널을 사용자가 편리하게 사용할 수 있도록 도와준다.
* 커널 : 운영체제의 핵심이 되는 기능들이 모여 있는 컴퓨터 프로그램
그렇다면 쉘(Shell)가 커널(Kernel)의 차이는 무엇일까? 🤔
쉘(Shell)은 운영체제의 가장 바깥 부분에 위치하여 사용자 명령에 대한 처리를 담당하는 역할을 수행하며,
커널(Kernel)은 하드웨어와 관련된 내부적인 역할을 담당한다.
커널(Kernal)의 기능
- 프로세스 관리 : 프로세스 스케줄링 및 동기화 관리 담당
- 기억장치 관리 : 프로세스에게 메모리 할당 및 회수 관리 담당
- 주변장치 관리 : 입 · 출력 장치 스케줄링 및 전반적인 관리 담당
- 파일 관리 : 파일 관리 파일의 생성과 삭제, 변경, 유지 등의 관리 담당
운영체제의 종류
윈도즈(Windows) 운영체제
MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 마이크로스프트사가 개발한 운영체제
윈도즈(Windows) 운영체제 특징
- 그래픽 사용자 인터페이(GUI) 제공 : 키보드 없이 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 기반의 인터페이스 방식
- 선점형 멀티태스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서 운영체제가 각 작업의 CPU 이용시간을 제어
- 자동감지 기능 제공 : 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능 제공
- OLE(Object Linking and Embedding) 사용 : 개체를 현재 작성중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공
유닉스(Unix) 운영체제
90% 이상 C언어로 구현되어 있는 운영체제로 범용 다중 사용자 방식의 시분할 운영체제
유닉스(Unix) 운영체제 특징
- 대화식 운영체제 기능 제공 : 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공
- 다중 작업 기능 제공 : 다수의 작업(프로세스)이 중앙처리장치(CPU)와 같은 공용 자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공
- 다중 사용자 기능 제공 : 여러 대의 단말(키보드와 모니터)이 하나의 컴퓨터에 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공
- 이식성 제공 : 90% 이상 C 언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능
- 계층적 트리 구조 파일 시스템 제공 : 유닉스는 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이
유닉스 운영체제 아래, 리눅스, 맥(Mac) 등등이 존재한다.
(1) 리눅스(Linux) 운영체제
유닉스를 기반으로 개발되고, 소스 코드가 공개된 오픈 소스 기반의 운영체제
(데비안, 레드햇, Fedora, Ubuntu, CentOS와 같이 다양하게 출시되고 있음)
리닉스 운영체제는 유닉스 운영체제의 특징을 그대로 빼닮는다.
(2) 맥(Mac) 운영체제
애플이 유닉스를 기반으로 개발한 그래픽 사용자 인터페이스 기반의 운영체제
(3) 안드로이드(Android) 운영체제
휴대 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹 브라우저, 이메일 클라이언트 등)을 포함하고 있는 운영체제이다.
안드로이드(Android) 특징
- 리눅스 기반 : 안드로이드는 리눅스 커널 위에서 동작
- 자바와 코틀린 언어 : 고수준 언어를 사용해 응용 프로그램을 작성
- 런타임 라이브러리 : 컴파일된 바이트 코드 구동 가능
- 안드로이드 소프트웨어 개발 키트(SDK) : 응용 프로그램을 개발하는 데 필요한 각종 도구와 API를 제공
운영체제 제어를 하기 위한 방법은 CLI와 GUI가 있다.
CLI(Command Line Interface) : 사용자가 직접 명령어를 입력, 컴퓨터에 명령을 내리는 방식
GUI(Graphic User Interface) : 마우스로 화면을 클릭하여 그래픽 위주로 컴퓨터를 제어하는 방식
리눅스/유닉스 파일 접근 제어 매커니즘
* 유닉스에서는 프로세스가 파일을 읽거나 실행하면 각 파일의 정보에 저장된 i-node 값을 읽게된다.
(i-node에는 각 파일의 물리적 위치, 생성 · 수정 · 사용 날짜 등의 정보와 더불러 파일 소유자 · 그룹, 접근 권한 등의 파일 접근제어와 관련된 정보가 수록된다, 이를 이용하여 DAC 기반 접근제어를 수행한다)
접근 권한 유형(설정 명령어 : chown, chgrp)
접근권한 | 설명 |
User | 파일을 사용하고 있는 사용자(Owner) |
Group | 소유자를 제외하고 파일과 같은 그룹에 속해있는 모든 사용자 모임 |
Other | 그 밖의 사용자 |
파일 접근 모드(설정 명령어 : chmod)
User | Group | Other | ||||||
R | W | X | R | W | X | R | W | X |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
파일이 'rwx'를 지원한다는 것은 파일을 읽고(Read), 쓰고(Write), 실행(EXcute) 할 수 있다는 것을 의미한다.
접근 권한을 변경하는 방법 (chmod)
(1) 명령어 사용
chmod 명령어는 기존 파일 또는 디렉토리에 대한 접근 권환을 변경할 때 사용
명령어 | 설명 |
옵션 -R | 하위 디렉토리와 파일의 권한까지 변경 |
permission | 기호나 8진수로 접근 권한을 지정 |
(예) chmod o-w yoom.c : yoom.c에 대하여 other의 쓰기(Write) 권한을 제거
(예) chmod 664 yoom.c : yoom.c의 접근 권한은 rw-rw-r--
(2) 접근 권한을 기호로 기술하는 방법
구분 | 기술 방법 |
대상 | u(user), g(group), o(other), a(all) |
연산자 | +(추가), -(제거), =(지정) |
접근 권한 | r(읽기), w(쓰기), x(실행) |
(예) chmod go-w yoom.c : yoom.c의 group, others에 w(쓰기) 권한 제거
(예) chmod a=rw yoom.c : yoom.c의 모든 사용자에 r(읽기), w(쓰기) 권한 지정
(예) chmod g+w, o-x yoom.c : yoom.c의 group에 w(쓰기) 권한을 추가하고, others에 x(실행) 권한 제거
(3) 접근 권한을 숫자로 기술하는 방법
구분 | 기술 방법 |
r(읽기) | 4 |
w(쓰기) | 2 |
x(실행) | 1 |
(예) chmod 777 yoom.c : yoom.c의 모든 사용자에게 r(읽기), w(쓰기), x(실행) 권한 부여
(예) chmod 664 yoom.c : yoom.c의 User과 Group에 rw 권한을, Other에 r 권한 부여
(예) chmod 600 yoom.c : yoom.c의 User에 rw권한 부여, 나머지는 권한 없음
운영체제 핵심 기능
(1) 메모리 관리 기법(반배할교)
반입 기법 : 주기억장치에 적재할 다음 프로세스의 반입 시기를 결정하는 기법 (When)
- 요구 반입 기법
- 예상 반입 기법
배치 기법 : 디스크에 있는 프로세스를 주기억장치의 어느 위치에 저장할 것인지 결정하는 기법 (Where)
- 최초 적합(First-fit) : 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식
- 최적 적합(Best-fit) : 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 적재하는 방식
- 최악 적합(Worst-fit) : 프로세스의 가용 공간들 중에서 가장 큰 공간에 할당하는 방식
할당 기법 : 실행해야 할 프로세스를 주기억장치에 어떤 방법으로 할당할 것인지 결정하는 기법 (How)
- 연속 할당 기법
- 분산 할당 기법
교체 기법 : 재배치 기법으로 주기억장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지를 결정하는 기법 (Who)
- 프로세스의 Swap In/Out
- FIFO, Optimal, LRU, LFU, 시계 알고리즘, MFU
(2) 프로세스 관리
프로세스 상태
하나의 프로세스는 여러가지 이벤트에 의해 일련의 서로 구분되는 상태변화를 겪는다.
(1) 생성(Create) 상태 : 사용자에 의해 프로세스가 생성된 상태
(2) 준비(Ready) 상태 : CPU를 할당받을 수 있는 상태
(3) 실행(Running) 상태 : 프로세스가 CPU를 할당받아 동작 중인 상태
(4) 대기(Waiting) 상태 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리가 완료까지 대기 리스트에서 기다리는 상태
(5) 완료(Complete) 상태 : 프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료한 상태
* 완료(Complete) 상태는 종료(Terminated, Exit) 상태라고도 한다.
프로세스 상태 전이
하나의 작업이 컴퓨터 시스템에 입력되어 완료되기까지 프로세스의 상태가 준비, 실행 및 대기 상태로 변하는 활동
(1) 디스패치(Dispatch) : 준비 상태에 있는 여러 프로세스(Ready List) 중 실행될 프로세스를 선정(Scheduling)하여 CPU를 할당(Dispatching)
(2) 타이머 런 아웃(Timer run out) = 할당 시간 초과 : CPU를 할당받은 프로세스는 지정된 시간이 초과되면 스케줄러에 의해 PCB 저장, CPU 반납 후 다시 준비 상태로 전이
(3) 블록(Block) = 입출력 발생 : 실행 상태에 있는 프로세스가 지정된 할당시간을 초과하기 전에 입출력이나 기타 사건이 발생(block)하면 CPU를 스스로 반납하고 입출력이 완료될 때까지 대기 상태로 전이됨
(4) 웨이크 업(Wake-up) = 깨움 : 어느 순간에 입출력이 종료되면 대기 상태의 프로세스에게 입출력 종료 사실을 wait & signal 등에 의해 알려주고, 준비상태로 전이됨
(3) 프로세스 스케줄링
CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업
처리율과 CPU 이용률을 증가시키고 오버헤드, 응답시간, 변환 시간, 대기 시간을 최소화시키기 위한 기법
프로세스 스케줄링 주요 용어
- 서비스 시간 : 프로세스가 결과를 산출하기까지 소요되는 시간
- 응답시간(Response Time) : 프로세스들이 입력되어 서비스를 요청하고, 반응하기 시작할 때까지 소요되는 시간
- 반환시간(Turnaround Time) : 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간 (반환시간 = 대기시간 + 수행시간)
- 대기시간 : 프로스세가 프로세서에 할당 대기까지 큐에 대기하는 시간
- 평균 대기시간 : 프로세스가 대기 큐에서 대기하는 평균 시간
- 종료시간 : 요구되는 프로세싱 시간을 모두 수행하고 종료된 시간
- 시간 할당량(Time Quantum OR Time Slice) : 한 프로세스가 프로세서를 독점하는 것을 방지하기 위해 서비스되는 시간 할당량
- 응답률 : (대기시간 + 서비스 시간) / 서비스 시간
* 응답률은 HRN(Highest Response Ratio Nest) 스케쥴링에서 사용, 응답률이 높으면 우선순위가 높다고 판단
프로세스 스케줄링 유형
선점형 스케줄링
하나의 프로세스가 CPU를 차지하고 있을 때, 우선 순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
(1) 라운드로빈(Round Robin, RR) : 프로세스는 같은 크기의 CPU 시간을 할당(시간 할당량), 프로세스가 할당된 시간 내에 처리 완료를 못하면 준비 큐 리스트의 가장 뒤로 보내지고, CPU는 대기 중인 다음 프로세스로 넘어감
- 균등한 CPU 점유 시간, 시분할 시스템을 사용
* 시분할 시스템 : CPU 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할하여 사용할 수 있게 해주는 대화식 시스템
(2) SRT(Shortest Remaining Time First) : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점됨
- 짧은 수행시간 프로세스 우선 수행
(3) 다단계 큐(Multi Level Queue) : 작업들을 여러 종류 그룹으로 분할, 여러 개의 큐를 이용하여 상위 단계 작업에 의한 하위단계 작업이 선점 당함
- 독립된 스케줄링 큐
(4) 다단계 피드백 큐(Multi Level Feedback Queue) : 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU 시간 할당량을 부여
- 큐마다 다른 시간 할당량, 마지막 단계는 라운드 로빈 방식 처리
비선점형 스케줄링
한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식
(1) 우선순위(Priority) : 프로세스 별로 우선순위가 주어지고, 우선순위에 따라 CPU를 할당함
- 주요/긴급 프로세스에 대한 우선 처리
- 설정, 자원 상황 등에 따른 우선순위 선정
(2) 기한부(Deadline) : 작업들이 명시된 시간이나 기한 내에 완료되도록 계획
- 요청에 명시된 시간 내 처리를 보장
(3) FCFS(Fist Come First Service) : 프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당함 (FIFO 알고리즘이라고 부른다)
- 도착한 순서대로 처리
(4) SJF(Shortest Job First) : 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원 점유, 준비 큐 작업 중 가장 짧은 작업부터 수행, 평균 대기 시간 최소, CPU 요구시간이 긴 작업과 짧은 작업 간의 불평등이 심하여 CPU 요구 시간이 긴 프로세스는 기아 현상 발생
- 기아 현상 발생
(5) HRN(Highest Response Ratio Next) : 대기 중인 프로세스 중 현재 응답률(Response Ratio)이 가장 높은 것을 선택, SJF의 약점인 기아 현상을 보완한 기법으로 긴 작업과 짧은 작업간의 불평등 완화
- 기아 현상 최소화 기법
* HRN의 응답시간 = (대기 시간 + 서비스 시간) / 서비스 시간
(4) 프로세스 관리-교착 상태
교착상태
다중 프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원 할당을 무한정 대기하는 상태
교착상태 발생 조건 (상점비환)
(1) 상호배제(Mutual Exclusive) : 프로세스가 자원을 베타적으로 점유하여 다른 프로세스가 그 자원을 사용할 수 없는 상태
(2) 점유와 대기 (Hold & Wait) : 한 프로세스가 자원을 점유하고 있으면서 또 다른 자원을 요청하여 대기하고 있는 상태
(3) 비선점 (Non Preemption) : 한 프로세스가 점유한 자원에 대해 다른 프로세스가 선점할 수 없고, 오직 점유한 프로세스만이 해제 가능한 상태
(4) 환형대기 (Circular Wait) : 두 개 이상의 프로세스 간 자원의 점유와 대기가 하나의 원형을 구성한 상태
교착상태 해결 방법 (예회발복)
(1) 예방(Prevention) : 상호 배제를 제외한 나머지 교착상태 발생 조건을 위배(부정)하는 방안
- 점유 자원 해제 후 새 자원 요청
(2) 회피(Avoidance) : 안전한 상태를 유지할 수 있는 요구만 수락(프로세스 별 자원 최대요구량 확보)
- 은행가 알고리즘, Wound-Wait, Wait-Die
(3) 발견(Detection) :시스템의 상태를 감시 알고리즘을 통해 교착 상태 검사
- 자원 할당 그래프, Wait for Graph
(4) 복구(Recovery) : 교착상태가 없어질 때까지 프로세스를 순차적으로 Kill하여 제거, 희생자 선택을 해야하고 기아 상태 발생
- 프로세스 Kill, 자원 선점
가상화, 클라우드
가상화
물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술
가상화의 종류
- 플랫폼 가상화 : 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어 낸 것처럼 보여주는 기법
- 리소스 가상화 : 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용하는 기법
가상화 기술요소
컴퓨팅 가상화 : 물리적으로 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술
- 하이퍼바이저(hypervisor)
스토리지 가상화 : 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술
- 분산 파일 시스템
I/O 가상화 : 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층으로, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화하여 효율적인 연결을 지원하는 기술
- 가상 네트워크 인터페이스 카드
컨테이너 : 컨테이너화된 어플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술
- 도커
분산처리 기술(Distributed Computing) : 여러 대의 컴퓨터 계산 및 저장 능력을 이용하여 커다란 계산문제나 대용량의 데이터를 처리하고 저장하는 기술
네트워크 가상화 기술 : 물리적으로 떨어져 있는 다양한 장비들을 연결하기 위한 수단으로 중계장치(라우터, 스위치 등) 가상화를 통한 가상 네트워크(Virtual Network)를 지원하는 기술
- SDN, NFV
클라우드 컴퓨팅
- 사설 클라우드(Private Cloud) : 기업 또는 조직 내부에서 보유하고 있는 컴퓨팅 자원(IDC, 서버 등)을 사용하여 내부에 구축되어 운영되는 클라우드
- 공용 클라우드(Public Cloud) : 클라우드 서비스 제공 업체에서 다중 사용자를 위한 컴퓨팅 자원 서비스를 제공하는 클라우드
- 하이브리드 클라우드(Hybrid Cloud) : 기억 또는 조직 내부 자원을 이용한 사설 클라우드와 공용 클라우드를 모두 사용하는 클라우드
클라우드 서비스 유형
- 인프라형 서비스(IasS; Infrastructure as a Service) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스
- 플랫폼형 서비스(PasS; Platform as a Service) : 인프라를 생성, 관리 하는 복잡함 없이 어플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스
- 소프트웨어형 서비스(SaaS; Software as a Service) : 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스
02. 네트워크 기초 활용하기
네트워크(Network)
원하는 정보를 원하는 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라
거리에 따른 네트워크의 분류
WAN(광대역 네트워크) : LAN에 비해 전송 거리가 넓음, 라우팅 알고리즘 필요, 먼 거리로 인해 에러율이 높음
LAN(근거리 네트워크) : 한 건물 또는 작은 지역을 커버하는 네트워크
OSI(Open System Interconnection) 7계층
국제 표준화 기구인 ISO(International Standardization Organization)에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호연결 모델 (각 계층은 하위 계층의 기능을 이용하여 상위 계층에 기능을 제공)
OSI 7 계층(Layer)의 특징
Application Layer : 사용자와 네트워크 간 응용서비스 연결, 데이터 생성
- 프로토콜 : HTTP, FTP
- 전송단위 : 데이터(Data)
- 장비 : 호스트(PC 등)
Presetation Layer : 데이터 형식 설정, 부호 교환, 암 · 복호화
- 프로토콜 : JPEG, MPEG
- 전송단위 : 데이터(Data)
- 장비 : 호스트(PC 등)
Session Layer : 송수신 간의 논리적인 연결, 연결 접속, 동기제어
- 프로토콜 : RPC, NetBIOS
- 전송단위 : 데이터(Data)
- 장비 : 호스트(PC 등)
Transport Layer : 송수신 프로세스 간의 연결, 신뢰성 있는 통신 보장, 데이터 분할, 재조립, 흐름 제어, 오류 제어, 혼잡 제어
- 프로토콜 : TCP, UDP
- 전송단위 : 세그먼트(Segement)
- 장비 : L4 스위치
Network Layer : 단말기 간 데이터 전송을 위한 최적화된 경로 제공
- 프로토콜 : IP, ICMP
- 전송단위 : 패킷(Packet)
- 장비 : 라우터
Data Link Layer : 인접 시스템 간 데이터 전송, 전송 오류 제어, 동기화, 오류 제어, 흐름 제어, 회선 제어
- 프로토콜 : HDLC, PPP
- 전송단위 : 프레임(Frame)
- 장비 : 브리지, 스위치
Physical Layer : 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
- 프로토콜 : RS-232C
- 전송단위 : 비트(Bit)
- 장비 : 허브, 리피터
네트워크 장비
1계층 장비
(1) 허브 : 여러 대의 컴퓨터를 연결하여 네트워크로 보내거나, 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비
(2) 리피터 : 디지털 신호를 증폭시켜 주는 역할을 하여 신호가 약해지지 않고, 컴퓨터로 수신되도록 하는 장비
2계층 장비
(1) 브리지 : 두 개의 근거리 통신망(LAN)을 서로 연결해주는 통신망 연결 장치
(2) L2 스위치 : 느린 전송속도의 브리지, 허브의 단점을 개섢하기 위해서, 출발지에서 들어온 프레임(Frame)을 목적지 MAC 주소 기반으로 빠르게 전송시키는 데이터 링크 계층의 통신 장치
* L2 스위치는 종류에 따라 3가지 방식 중 하나를 사용한다
- Store and Forwarding : 데이터를 전부 받은 후, 다음 처리를 하는 방식
- Cut Through : 데이터의 목적지 주소만 확인 후 바로 전송 처리하는 방식
- Fragment Free : 프레임의 앞 64바이트만을 읽어 에러를 처리하고 목적지 포트로 전송하는 방식
(3) NIC : Network Interface Card의 약자, 외부 네트워크와 접속하여 가장 빠른 속도로 데이터를 주고받을 수 있게 컴퓨터 내에 설치되는 장비
(4) 스위칭 허브 : 스위치 기능을 가진 허브, 사용되는 대부분의 허브가 스위칭 허브
3계층 장비
(1) 라우터 : LAN과 LAN을 연결하거나 LAN과 WAN을 연결하기 위한 인터넷 네트워킹 장비, 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전송시키는 장비
(2) 게이트 웨이 : 프로토콜을 서로 다른 통신망에 접속할 수 있게 해주는 장치
(3) L3 스위치 : 3계층에서 네트워크 단위들을 연결하는 통신 장비
(4) 유무선 인터넷 공유기 : 외부로부터 들어오는 인터넷 라인을 연결하여 유선으로 여러 대의 기계를 연결하거나 무선 신호로 송출하면서 여러 대의 컴퓨터가 하나의 인터넷 라인을 공유할 수 있도록 하는 네트워크 장비
(5) 망(백본) 스위칭 허브 : 광역 네트워크를 커버하는 스위칭 허브
4계층 장비
(1) L4 스위치 : 4계층에서 네트워크 단위들을 연결하는 통신 장비, TCP/UDP 등 스위칭 수행, FTP · HTTP 등을 구분하여 스위칭하는 로드 밸런싱 가능
프토토콜(Protocol)
서로 다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기 위한 표준화된 통신규약
통신을 위해 프로토콜이 가져야 하는 일반적인 기능에는 `데이터 처리기능`, `제어 기능`, `관리적 기능`이 있다.
프로토콜의 기본 3요소 (구의타)
(1) 구문(Syntax) : 시스템 간의 정보 전송을 위한 데이터 형식, 코딩, 신호 레벨 등의 규정
(2) 의미(Semantic) : 시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정
(3) 타이밍(Timing) : 시스템 간의 정보 전송을 위한 속도 조절과 순서 관리 규정
네트워크 프로토콜(Network Protocol)
컴퓨터나 원거리 통신 장비 사이에서 메세지를 주고받는 양식과 규칙의 체계
프로토콜 특징
(1) 단편화 : 전송이 가능한 작은 블록으로 나누어지는 기법
(2) 재조립 : 단편화되어 온 조각들을 원래 데이터로 복원하는 기법
(3) 캡슐화 : 상위 계층의 데이터에 각종 정보를 추가하여 하위 계층으로 보내는 기법
(4) 연결 제어 : 데이터의 전송량이나 속도를 제어하는 기법
(5) 오류 제어 : 전송 중 잃어버리는 데이터나 오류가 발생한 데이터를 검증하는 제어 기법
(6) 동기화 : 송신과 수신 측의 시점을 맞추는 기법
(7) 다중화 : 하나의 통신 회선에 여러 기기들이 접속할 수 있는 기술
(8) 주소 지정 : 송신과 수신지의 주소를 부여하여 정확한 데이터 전송을 보장하는 기법
데이터 링크 계층(2계층)
링크의 설정과 유지 및 종료를 담당하며 노드 간의 회선 제어, 흐름 제어, 오류 제어 기능을 수행하는 계층
데이터 링크 계층 프로토콜
- HDLC(High-level Data Link Control) : 점대점 방식이나 다중 방식의 통신에 사용되는 ISO에서 표준화한 동기식 비트 중심의 데이터 링크 프로토콜
- PPP(Point-to-Point) : 네트워크 분야에서 두 통신 노드 간의 직접적인 연결을 위해 일반적으로 사용되는 데이터 링크 프로토콜
- Frame Relay(프레임 릴레이) : 프로토콜 처리를 간략화하여 단순히 데이터 프레임들의 중계(Relay) 기능과 다중화 기능만 수행함으로써 데이터 처리속도의 향상 및 전송지연을 감소시킨 고속의 데이터 전송 기술
- ATM(Asynchronous Transport Mode) : 정보 전달의 기본 단위를 53바이트 셀 단위로 전달하는 비동기식 시분할 다중화 방식의 패킷형 전송 기술
네트워크 계층(3계층)
다양한 길이의 패킷을 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(Qos)을 위한 수단을 제공하는 계층
네트워크 계층 프로토콜
- IP(Internet Protocol) : 송수신 간의 패킷 단위로 데이터를 교환하는 네트워크에서 정보를 주고 받는데 사용하는 통신 프로토콜
- ARP(Address Resolution Protocol) : IP 네트워크 상에서 IP 주소를 MAC 주소(물리 주소)로 변환하는 프로토콜
- RARP(Reverse Address Resolution Protocol) : IP 호스트가 자신의 물리 네트워크 주소(MAC)는 알지만 IP 주소를 모르는 경우,
- ICMP(Internet Control Message Protocol) : IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜로 메세지 형식은 8바이트의 헤더와 가변 길이의 데이터 영역으로 분리
- IGMP(Internet Group Management Protocol) : 화상회의, IPTV에 활용되는 프로토콜 (ICMP랑 헷갈리지말자!)
- 라우팅 프로토콜(Routing Protocol) : 데이터 전송을 위해 목적지까지 갈 수 있는 여러 경로 중 최적의 경로를 설정해주는 라우터 간의 상호 통신 프로토콜
IPv4
인터넷에서 사용되는 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 32비트 주소 체계를 갖는 네트워크 계층의 프로토콜
IPv4 헤더
앞 부분에서 주소 등 각 제어 정보를 담고 있는 부분, 너무 많아서 시험 전에 교과서를 통해 확인해보자
IPv4 주소 체계
10진수로 총 12자리이며, 네 부분으로 나뉘며, 각 부분은 0~255까지 3자리의 수로 표현된다.
IPv4는 32비트로 구성되어있으며, 인터넷 사용자의 증가로 인해 주소 공간의 고갈로 128비트 주소 체계를 갖는 IPv6가 등장하였고 점차 확산되고 있다.
32비트 IP주소는 Network를 나타내는 부분과 Host를 나타내는 부분으로 구성되어있고, Network 부분과 Host 부분을 구분하는 것은 서브넷 마스크(Subtnet Mask)이다.
IPv4 클래스 분류
(1) A 클래스 : 가장 높은 단위의 클래스로서, 1~126 (0, 127로 시작된 IP는 예약됨) 범위의 IP 주소를 가짐
- 0.0.0.0 ~ 127.255.255.255 (0과 127으로 시작된 IP는 예약되어서 사용되지 못한다)
(2) B 클래스 : 두 번째로 높은 단위의 클래스로써, 첫번째 단위의 세 숫자는 128~191 가운데 하나를 가짐
- 128.0.0.0 ~ 191.255.255.255
(3) C 클래스 : 최하위의 클래스로서, 아이피 구성에서 첫 번째 단위의 세 숫자는 192~223 가운데 하나를 가짐
- 192.0.0.0 ~ 223.255.255.255
(4) D 클래스 : 멀티캐스트 용도로 예약된 주소
- 224.0.0.0 ~ 239.255.255.255
(5) E 클래스 : 연구를 위해 예약된 주소
- 240.0.0.0 ~ 255.255.255.255
* (예) 13.0.0.0과 13.255.255.255는 브로드캐스트 주소로 사용되기 때문에 호스트 IP로 사용이 불가하다.
IPv6(Internet Protocal version 6)
인터넷 프로토콜 스택 중 네트워크 계층의 프로토콜로서 버전 6 인터넷 프로토콜로 제정된 차세대 인터넷 프로토콜을 말한다.
IPv4가 가지고 있는 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128Bit 주소 체계를 갖는 차세대 인터넷 프로토콜
IPv6 특징
- IP 주소의 확장 : IPv4의 기존 32비트 주소 공간에서 벗어나, IPv6는 128비트 주소 공간을 제공
- 이동성 : 네트워크의 물리적 위치에 제한받지 않고 같은 주소를 유지하면서도 자유롭게 이동 가능
- 인증 및 보안 기능 : 패킷 출처 인증과 데이터 무결성 및 비밀 보장 기능을 IP 프로토콜 체계에 반영
- 개선된 QoS 지원 : 흐름 레이블(Flow Label) 개념을 도입, 특정 트래픽은 별도의 특별한 처리(실시간 통신 등)를 통해 높은 품질의 서비스를 제공
- Plug & Play 지원 : IPv6 호스트는 IPv6 네트워크에 접속하는 순간 자동적으로 네트워크 주소를 부여받음
- Ad-hoc 네트워크 지원 : Ad-hoc 네트워크를 위한 자동 네트워킹 및 인터넷 연결 지원
- 단순 헤더 적용 : IP 패킷의 처리를 신속하게 할 수 있도록 고정 크기의 단순 헤더를 사용하는 동시에, 확정 헤더를 통해 기능에 대한 확장 및 옵션 기능의 사용이 용이한 구조
- 실시간 패킷 추적 가능 : 흐름 레이블(Flow Label)을 사용하여 패킷의 흐름을 실시간 제공
IPv6 헤더
기존 IPv4 헤더에 비해 IPv6 헤더가 IPv6 출발지 주소, 목적지 주소의 주소 길이로 인하여 커졌고, IPv4의 불필요한 필드를 제거함으로써 헤더가 단순해졌다. 너무 많아서 시험 전에 교과서를 통해 확인해보자
IPv6 주소 체계
IPv4는 32비트의 주소 공간을 제공함에 반해, IPv6는 128비트의 주소 공간을 제공한다.
IPv6 주소의 경우 일반적으로 16비트 단위로 나누어지며, 각 16비트 블록은 다시 4자리 16진수로 변환되고 콜론으로 구분된다.
64비트를 기준으로 앞 64비트를 네트워크 주소로, 뒤 64비트를 네트워크에 연결된 랜카드 장비 등에 할당하는 인터페이스 주소로 활용된다.
대부분의 자리가 0의 숫자를 갖게 되므로, 0000을 하나의 0으로 축약하거나, 혹은 아예 연속되는 0의 그룹을 없애고 `:`만을 남길 수 있다.
0을 축약하고 `:`로 없애는 규칙은 두 번 이상으로 적용할 수 없다.
(예) 2001:0DB8:0::0:1428:57ab
구분 | IPv4 | IPv6 |
주소 길이 | 32Bit | 128Bit |
표시 방법 | 8비트씩 4부분으로 나뉜 10진수 | 16비트씩 8부분으로 나뉜 16진수 |
주소 개수 | 약 43억개 | 약 3.4 X 10^38개 |
구분 | IPv4 | IPv6 |
주소 할당 | A, B, C, D 등 클래스 단위 비순차적 할당 (비효율적) | 네트워크 규모 및 단말기 수에 따른 순차적 할당 (효율적) |
헤더 크기 | 가변 | 고정 |
QoS | Best Effort 방식 / 보장 곤란 | 등급별, 서비스별 패킷 구분 보장 |
보안 기능 | IPSec 프로토콜 별도 설치 | 보안과 인증 확장 헤더를 사용함으로써 인터넷 계층의 보안 기능을 강화 |
Plug & Play | 지원 안함 | 지원 |
모바일 IP | 곤란 | 용이 |
웹 캐스팅 | 곤란 | 용이 |
전송 방식 | 유니캐스트, 멀티캐스트, 브로드 캐스트 | 유니캐스트, 멀티캐스트, 애니캐스트 |
IPv4에서 IPv6으로 전환 방법
IPv4 전용 호스트와 IPv6 전용 호스트 간의 통신을 위한 기술이며, 주소와 헤더의 변환을 수행한다.
(1) 듀얼 스택(Dual Stack)
IP 계층에 두가지(IPv4, IPv6)의 프로토콜이 모두 탑재되어 있고 통신 상대방에 따라 해당 IP 스택을 선택하는 방법
(장) : DNS 주소 해석 라이브러리(DNS Resolver Library)가 두 IP 주소 유형을 모두 지원
(단) : 프로토콜 스택 수정으로 인한 과다한 비용 발생
(2) 터널링(Tunneling)
IPv6 망에서 인접한 IPv4 망을 거쳐 다른 IPv6 망으로 통신할 때 IPv4 망에 터널을 만들고 IPv4에서 사용하는 프로토콜로 캡슐화하여 전송하는 방법
(장) : 여러 표준화 활동이 존재하고 다양한 기술 표준이 제안되고 있음
(단) : 구현이 어려우며, 복잡한 동작 과정을 가짐
(3) 주소 변환(Address Translation) (게이트웨이 관점이라고도 한다)
IPv4 망과 IPv6 망 사이에 주소 변환기(IPv4-IPv6 게이트 웨이)를 사용하여 서로 다른 네트워크 상의 패킷을 변환시키는 방법
(장) IPv4, IPv6 호스트의 프로토콜 스택에 대한 수정이 필요 없으며, 변환 방식이 투명하고 구현이 용이
(단) 고가의 주소 변환기 필요
- 게이트 관점의 IPv4/IPv6 변환 방식은 변환 방법에 따라 헤더 변환 방식, 전송 계층 릴레이 방식, 응용 게층 게이트웨이 방식으로 분류한다.
멀티캐스트 프로토콜(Multicast Protocol)
인터넷에서 같은 내용의 데이터를 여러 명의 특정한 그룹의 수신자들에게 동시에 전송할 수 있는 프로토콜
멀티캐스트 프로토콜 = * 멀티캐스트 라우팅 + * 그룹관리 프로토콜(IGMP)
* 멀티캐스트 라우팅 : IP 주소로 구분되는 네트워크 상의 특정 그룹의 모든 사용자에게 동일한 메세지를 전송(Multicast)하기 위한 라우팅 프로토콜
* 그룹관리 프로토콜(IGMP): 멀티캐스트를 지원하는 라우터가 멀티캐스트 그룹에 가입한 네트워크 내의 호스트를 관리하기 위해 사용하는 프로토콜
유니캐스트 프로토콜(Unicast Protocol)
고유 주소로 식별된 하나의 네트워크 목적지에 1:1로(One-to-One) 트래픽 또는 메세지를 전송하는 프로토콜
브로드캐스트 프로토콜(Broadcasting Protocol)
하나의 송신자가 같은 서브 네트워크 상의 모든 수신자에게 데이터를 전송하는 프로토콜
(멀티캐스트는 특정한 그룹에 전송을 하는 반면, 브로드캐스트는 모든 수신자에게 전송을 한다.)
애니캐스트 프로토콜(Anycast Protocol)
하나의 호스트에서 그룹 내의 가장 가까운 곳에 있는 수신자에게 데이터를 전달하는 전송 기술
하나의 수신 주소로 식별되는 다수의 노드로 데이터그램의 전송이 가능하다.
라우팅 프로토콜(3계층)
정적 라우팅 : 패킷 전송이 이루어지기 전에 경로 정보를 라우터가 미리 저장하여 중개하는 방식
동적 라우팅 : 라우터의 경로 정보가 네트워크 상황에 따라 동적으로 변경되어 중개하는 방식
- 내부 라우팅 프로토콜(IGP)
(1) RIP(Routing Information Protocol)
AS(autonomous System; 자치 시스템; 자율 시스템) 내에서 사용하는 거리 벡터(Distance-Vector) 알고리즘에 기초하여 개발된 내부 라우팅 프로토콜
RIP 특징
- 벨만-포드 알고리즘 사용 : 거리 벡터 라우팅 기반 * 메트릭 정보를 인접 라우터와 주기적으로 교환하여 라우팅 테이블을 갱신하고 라우팅 테이블을 구성 · 계산
* 메트릭 : 라우팅 프로토콜들이 최적 경로(Best Route)를 선택하는 기준으로 최적 경로 선택 기준값이다.
- 15홉 제한 : 최대 * 홉 수(Hop Count)를 15개로 제한
* 홉 : 데이터가 목적지까지 전달되는 과정에서 거치는 네트워크의 수를 의미한다. 네트워크를 경유하는 수, 과정의 수(?)
- UDP 사용 : UDP 포트번호 520번 사용
- 30초마다 정보 공유 : 30초마다 전체 라우팅 정보를 브로드 캐스팅
(2) OSPF(Open Shortest Path First)
규모가 크고 복잡한 TCP/IP 네트워크에서 RIP의 단점을 개선하기 위해 자신을 기준으로 * 링크 상태(Link-State) 알고리즘을 적용하여 최단 경로를 찾는 라우팅 프로토콜
* 링크 상태 알고리즘 : 링크 상태 정보를 모든 라우터에 전달하여 최단 경로 트리를 구성하는 라우팅 프로토콜 알고리즘
OSPF 특징
- 다익스트라 알고리즘 사용 : 최단 경로 탐색 (= 링크 상태 알고리즘)
- 라우팅 메트릭 지정 : 최소 지연, 최대 처리량 등 관리자가 라우팅 메트릭 지정
- AS 분할 사용 : 자치 시스템을 지역으로 나누어 라우팅을 효과적으로 관리
- 홉 카운트 무제한 : 홉 카운트에 제한이 없음
- 멀티캐스팅 지원 : 멀티캐스트(Multicast)를 사용하여 정보를 전달
(3) BGP(Border Gateway Protocol)
AS 상호 간(Inter-AS 또는 Inter-Domain)에 경로 정보를 교환하기 위한 라우팅 프로토콜
BGP 특징
- * 경로 벡터(Path Vector) 알고리즘 사용
* 경로벡터 : 대상까지의 가장 짧은 경로를 선정하는 알고리즘
- ISP 사업자들 상호 간에 주로 사용되는 라우팅 프로토콜
- TCP 연결(포트 번호 179)를 통해 *자치 시스템(AS)으로 라우팅 정보를 신뢰성 있게 전달한다.
* 자치 시스템 : 하나의 도메인에 속하는 라우터들의 집합, 하나의 자치 시스템에 속한다는 것은 하나의 도메인에 속한다는 말이다.
- 라우팅 비용이 많이 들고, 라우팅 테이블의 크기가 커서 메모리 사용량이 크다.
(4) 라우팅 알고리즘
데이터는 송신 측으로부터 수신 측까지 데이터를 전달하는 과정에서 다양한 물리적인 장치들을 거쳐간다.
목적지까지 최적 경로를 산출하기 위한 법칙이 라우팅 알고리즘
라우팅 알고리즘 유형
거리 벡터 알고리즘(Distance Vector Alogorithm)
- 인접 라우터와 정보를 공유하여 목적지까지의 거리와 방향을 결정하는 라우팅 프로토콜 알고리즘 (벨만-포드 알고리즘 사용, 벨만-포드가 거리 벡터 알고리즘을 기반으로 사용됨)
- 각 라우터가 업데이트될 경우마다 전체 라우팅 테이블을 보내라고 요청하지만 수신된 경로 비용 정보는 이웃 라우터에게만 보내짐
링크 상태 알고리즘(Link State Algorithm)
- 링크 상태 정보를 모든 라우터에 전달하여 최단 경로 트리를 구성하는 라우터 프로토콜 알고리즘
- 다익스트라(Dijkstra) 알고리즘 사용
- 네트워크를 일관성 있게 파악할 수 있으나 거리 벡터 알고리즘에 비하여 계산이 더 복잡하고 트래픽을 광범위한 범위까지 전달
전송계층(4계층)
상위 게층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해주면서 종단 간의 사용자들에게 신뢰성 있는 데이터를 전달하는 계층
순차 번호 기반의 오류 제어 방식을 사용하며, 종단 간 통신을 다루는 최하위 게층으로 종단 간 신뢰성 있고 효율적인 데이터를 전송한다.
TCP(Transmission Control Protocol)
인터넷 프로토콜 스위치의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로 사용된다.
전송 계층에 위치하면서 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 해주는 프로토콜이다.
TCP 특징
- 신뢰성 보장 (패킷 손실, 중복, 순서 바뀜 등이 없도록 보장, 기존 IP 계층의 신뢰성 없는 서비스를 보완)
- 연결 지향적 특징
- 흐름 제어(Flow Control) : 흐름 제어 기능을 통해 송신율과 수신률 속도를 일치시킨다.
- 혼잡 제어(Congestion Control) : 네트워크가 혼잡하다고 판달될 때는 혼잡제어 기법을 사용하여 송신율을 감속함
UDP(User Datagram Protocol)
비연결성이고, 신뢰성이 없으며, 순서화 되지 않은 데이터그램 서비스를 제공하는 전송계층의 통신 프로토콜
UDP 특징
- 비신뢰성
- 순서화되지 않은 데이터그램 서비스 제공
- 실시간 응용 및 멀티캐스팅 가능
- 단순 헤더
세션계층(5계층)
응용 프로그램 간의 대화를 유지하기 위한 구조를 제공하고, 이를 처리하기 위해 프로세스들의 논리적인 연결을 담당하는 계층
세션 계층의 포로토콜
(1) RPC(Remote Procedure Call)
원격 프로시저 호출이라고도 불리며, 별도의 원격 제어를 위한 코딩없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있는 프로세스 간 통신에 사용되는 프로토콜
(2) NetBIOS(Network Basic Input /Output System)
응용계층(7계층)의 어플리케이션 프로그램에게 API를 제공하여 상호 통신할 수 있도록 해주는 프로토콜
표현계층(6계층)
어플리케이션이 다루는 정보를 통신에 알맞은 형태로 만들거나, 하위계층에서 온 데이터를 사용자가 이해할 수 있는 형태로 만드는 역할을 담당하는 계층
표현계층의 프로토콜
(1) JPEG : 이미지를 위해 만들어진 표준 규격
(2) MPEG : 멀티미디어(비디오, 오디오)를 위해 만들어진 규격
응용계층(7계층)
응요 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하는 역할을 담당하는 계층
응용계층의 프로토콜
(1) HTTP(Hyper Text Transfer Protocol)
텍스트 기반의 통신규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜(하이퍼텍스트를 빠르게 교환하기 위한 프로토콜)
(2) FTP(File Transfer Protocol)
TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일을 전송하기 위한 프로토콜
(3) SMTP(Simple Mail Transfer Protocol)
인터넷에서 TCP 포트 번호 25번을 사용하여 이메일을 보내기 위해 이용되는 프로토콜
(4) POP3(Post Office Protocol Version 3)
응용 계층 인터넷 프로토콜 중 하나로, 원격 서버로부터 TCP/IP 연결을 통해 이메일을 가져오는데 사용하는 프로토콜
(5) IMAP(Internet Messaging Access Protocol)
원격 서버로부터 TCP/IP 연결을 통해 이메일을 가져오는데 사용하는 프로토콜
(6) Telnet
인터넷이나 로콜 영역에서 네트워크 연결에 사용되는 네트워크 프로토콜
(7) SSH(Secure Shell)
Telnet보다 강력한 보안을 제공하는 원격 접속 프로토콜
(8) SNMP(Simple Network Management Protocol)
TCP/IP의 네트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 장치로부터 정보를 수집 및 관리하며, 정보를 네트워크 관리 시스템에 보내는 데 사용하는 인터넷 표준 프로토콜
네트워크 전달 방식
(1) 패킷 교환 방식 (Packet Switching)
컴퓨터 네트워크와 통신의 방식 중 하나로 작은 블록의 패킷으로 데이터를 전송하여 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 통신 방식
패킷 교환 방식은 다음과 같은 기술들을 통해 WAN을 경유하여 데이터를 원격지로 송부한다 🤔
(1) X.25
통신을 원하는 두 단말장치가 패킷 교환망을 통해 패킷을 원활히 전달하기 위한 통신 프로토콜
- 고정된 대역폭
- 패킷 사용
- 1~3 계층 담당
- 송수신 신뢰성
- 성능 저하 (성능 저하 요인으로 인하여 현재는 ISDN, ATM 등 고속망으로 대체되었다)
(2) 프레임 릴레이
ISDN을 사용하기 위한 프로토콜이다.
- 유연한 대역폭
- 기능 단순화
- 1~2 계층 담당
- 가격이 저렴
(3) ATM(Asynchronous Transfer Mode)
비동기 전송모드라고 하는 광대역 전송에 쓰이는 스위칭 기법
- AAL(ATM Adaptation Layer) : 패킷을 작은 조각인 셀로 전송한 후 다시 조립하여 원래의 데이터로 복원하는 역할을 담당
- ATM 계층 : 셀과 셀 전송 역할을 담당
- 물리 계층(Physical Layer) 담당
패킷 교환 방식의 종류
구분 | 데이터그램(Datagram) 방식 | 가상 회선(Virtual Circut) 방식 |
개념 | - 연결 경로를 확립하지 않고 각각의 패킷을 순서에 무관하게 독립적으로 전송하는 방식 | - 패킷이 전송되기 전에 송 · 수신 스테이션 간의 논리적인 통신 경로를 미리 설정하는 방식 |
동작 원리 및 특징 | - 각각의 패킷을 독립적으로 취급하는 방식으로 앞에 보낸 메세지나 앞으로 보낼 메세지의 어떠한 결과와도 관계가 없는 단일 패킷 단위로 전송하고 수신하는 방식 - 헤더를 붙여서 개별적으로 전달하는 비연결형 교환 방식 |
- 많은 이용자들이 상호 통신을 할 때 하나의 통신 설비를 공유하여 여러 개의 논리적인 채널을 확정한 후 통신을 할 수 있는 방식 - 목적지 호스트와 미리 연결 후 통신하는 연결형 교환 방식 |
(2) 서킷 교환 방식(Circuit Switching)
네트워크 리소스를 특정 사용층이 독점하도록 하는 통신 방식
- 전송 보장 : 네트워크를 독점적으로 사용하여 전송 보장
- 서킷 확보 작업 : 서킷을 확보하기 위한 작업을 진행하고 실데이터를 전송하며 서킷을 닫는 프로세스로 진행
구분 | 패킷교환방식 | 서킷교환방식 |
의미 | 데이터를 패킷 단위로 보내는 방식 | 전송 경로를 설정한 뒤 데이터를 송수신 하는 방식 |
장점 | - 회선 효율이 우수 - 비동기 전송이 가능 - 연결 설정이 필요 없고 다중 전달이 용이 |
- 경로 접속 시간은 1초 내외로 매우 빠름 - 전송 제어 절차와 형식에 제약을 받지 않음 |
단점 | - 실시간 전송에 부적합 - 네트워크 지연이 발생 |
- 송수신 측 모두 데이터 교환 준비가 완료되어야 함 - 회선이 독점되어 있음 |
활용 | - 이메일, 메세지 등 | - 영상, 비디오 등 |
애드 혹 네트워크(Ad-hoc Network)
노드(Node)들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크
애드 혹 네트워크 특징
- 네트워크 구성 및 유지를 위해 기지국이나 액세스 포인트와 같은 기반 네트워크 장치를 필요로 하지 않는 네트워크이다.
- 노드들의 이동이 자유롭기 때문에 *네트워크 토폴리지가 동적으로 변화되는 특징이 있다.
* 네트워크 토폴리지 : 컴퓨터 네트워크의 요소들(링크, 노드 등)을 물리적으로 연결해 놓은 것, 또는 그 연결 방식
- 애드 혹 네트워크는 완전 독립형이 될 수 있고, 인터넷 게이트 웨이를 거쳐 인터넷과 같은 기반 네트워크와 연동될 수 있다.
- 애드 혹 네트워크는 깁급 구조, 긴급 회의, 전쟁터에서의 군사 네트워크로 사용이 된다.
리눅스 계열 운영체제 선택
오픈 소스 기반의 리눅스는 Redhat 계열과 데비안 계열, 기타 리눅스로 구분한다.
리눅스의 종류 및 특징
구분 | 종류 | 특징 |
데비안 계열 | Debian GNU/Linux | - 개발자 패키지와 매뉴얼이 활성화되어 있어 개발자에게 최적화되어 있음 |
Ubuntu | - 가장 광범위하게 쓰이는 Linux 운영체제 | |
Redhat 계열 | Fedora | - 스마트 설정과 업데이트로 사용자 편의성 제공 |
CentOS | - 프로그래밍에 최적화된 환경 제공 | |
기타 | openSUSE | - 안정화된 버전(openSUSE)과 테스트 중인 버전(Tumbleweed)을 동시에 공급 - YaST 패키지를 통해 태스크 자동화 지원 |
Slackware | - 다양한 소프트웨어와 그래픽 유저 인터페이스가 미리 설치 - 시스템 관리자를 위한 복구 툴 내장 |
프로그래밍 언어
프로그래밍 언어 선택 시 고려사항
- 언어의 타입 : 정적 개발언어, 동적 개발언어
- 시스템의 특징 : 일반 시스템, 도메인 특화 시스템
- 언어 특징 : 객체 지향, 명령형, 순차적, 선언형
* 선언형은 보통 SQL에만 해당
- 지원 : 관리 도구 지원형, 언어 독립형
개발 지원 도구
SW 개발 과정을 관리하는 오픈 소스 기반의 도구를 활용하여 개발 작업의 생산성을 높일 수 있다.
개발환경 | 설명 | 도구 |
요구사항 관리 | 프로젝트 수행시 정확한 요구사항 정의, 요구사항 관리 | JFeature |
설계 | ERD를 통한 자동화된 데이터 모델링, UML 자동 생성 | DBdesigner |
구현 | 개발자의 소프트웨어 구현 시 개발자 편의성 고려 | Eclipse, CodeBlock |
테스트 | 지속적 통합 기반, 자동 테스트 수행 | jUnit |
빌드 | 소프트웨어 빌드 자동화, 스크립트를 통한 빌드 자동화 과정 | Ant, Jenkins |
형상 관리 | 개발 산출물 관리, 변경 통제 | Subversion |
품질 관리 | 설계 품질의 측정을 통해 패키지를 효과적으로 분석하고 관리 | jDepend, Mylyn |
이슈 관리 | 프로젝트를 진행하면서 발생하는 문제를 시스템에 등록하여 관리하는 시스템 | Mantis, Git |
프로젝트 관리 | 일정 관리를 위한 간트 차트, 네트워크 다이어그램, WBS 등 제공 | Redmine, OpenProj |
개발 환경 인프라
개발하려는 전체 시스템에 필요로 하는 서비스를 효율적으로 선택하여 개발 환경을 구축해야한다.
개발 환경 인프라 구성 방식
(1) 온프레미스(On-Premise) 방식 : 외부 인터넷 망이 차단된 상태에서 인트라넷 망만을 활용하여 개발환경을 구축하는 방식
(2) 클라우드(Cloud) 방식 : 아마존, 구글, 마이크로소프트 등 클라우드 공급 서비스를 하는 회사들의 서비스를 임대하여 개발 환경을 구축하는 방식
(3) 하이브리드(Hybrid) 방식 : 온프레미스와 클라우드 방식을 혼용하는 방식
'개발적인 > 기타 개발적인 부분' 카테고리의 다른 글
프론트엔드 기초 CS 대비 (0) | 2023.01.02 |
---|---|
XII. 제품 소프트웨어 패키징 (0) | 2022.10.12 |
X. 어플리케이션 테스트 관리 (0) | 2022.10.10 |
IX. 소프트웨어 개발 보안 구축 (0) | 2022.10.09 |
VIII. 서버 프로그램 구현 (2) | 2022.10.08 |
댓글