프로그래밍 언어 활용
1장 서버 프로그램 구현
121. 개발 환경 구축
프로젝트의 분석 단계의 산출물을 바탕으로 필요한 하드웨어와 소프트웨어 장비를 구축한다.
하드웨어 환경 : 클라이언트와 서버로 구성된다. 서버는 목적에 따라 웹 서버, 웹 어플리케이션 서버(WAS), DB 서버, 파일 서 버 등으로 나뉜다.
소프트웨어 환경 : 시스템 소프트웨어와 개발 소프트웨어로 나뉜다. OS, 서버 프로그램, DBMS, 요구사항 관리 도구, 설계/모델 링 도구, 구현 도구, 빌드 도구 등이 있다.
122. 서버 개발
서버 개발 : 서버 프로그램을 제작하여 웹 어플리케이션 서버에 탑재하는 것
서버 개발 프레임워크
Spring : 자바 기반 프레임워크, Django : 파이썬 기반, Node.js : JavaScript 기반
프레임워크의 특성
모듈화, 재사용성, 확장성, 제어의 역흐름(Inversion of Control). (캡슐화는 없다.)
123. 보안 및 API
소프트웨어 개발 보안 : 보안 취약점을 최소화하여 보안 위협으로부터 안전한 SW를 개발하기 위한 보안 활동. 기밀성, 무결성, 가용가용 유지하는 것을 목표로 한다.
API : 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙등을 정의해놓은 인터페이스.
124. 배치 프로그램
배치 프로그램 : 사용자와 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것
정기 배치 : 일, 주, 월 같이 정해진 기간에 정기적으로 수행
이벤트성 배치 : 특정 조건이 충족될 때 수행
On-Demand : 사용자 요청 시 수행.
배치 스케줄러 : 배치 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원. ex) 스프링 배치, Quartz
125. 패키지 소프트웨어
패키지 소프트웨어 : 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 SW
패키지 소프트웨어를 구입해서 적절하게 커스터마이징 하여 사용한다. 요구사항을 70%이상 충족 시킬 때 사용하는 것이 적합하다.
2장 프로그래밍 언어 활용
126. 데이터 타입
127. 변수
자동 변수(auto) : 블록 내에서 선언되는 변수. 블록을 벗어나면 자동으로 소멸된다.
외부 변수(extern) : 다른 파일에서 선언된 변수나 함수를 참조하는 변수
정적 변수(static) : 블록이 종료된 뒤에도 값이 소멸하지 않는다.
레지스터 변수(register) : CPU 내부 레지스터에 영역을 할당받는 변수. 자주 사용되는 변수를 지정해 속도 향상
128. 연산자
<< : 왼쪽 시프트. 2배가 된다.
>> : 오른쪽 시프트. 1/2배.
sizeof : 자료형의 크기를 표시한다.
결합규칙 오른쪽에서 왼쪽인 연산자 : 단항 연산자( !, ~, ++, --, sizeof), 대입 연산자(=, +=, -=, /=, 등)
연산자 우선 순위(갈수록 높아짐)
순서(,) -> 대입(=, += 등), 조건( ? : ), 논리(&&, ||), 비트(&, |, ^), 관계(==, !=, <, <=), 시프트(<<, >>), 산술(+ -, * / %), 단항(!, ++, ~, -- 등)
129. 제어문
switch(수식){
case 레이블1 :
문장 1;
break;
default:
문장 2;
}
break 안쓰면 case n부터 아래 case 다 실행
130. 반복문
131. 배열과 문자열
char a[5] = "love"; -> l, o, v, e, '\0'. 문자열 끝에 자동으로 널 문자('\0')가 삽입되는 것을 고려한다.
132. 포인터
포인터 변수는 동적으로 할당되는 힙 영역에 접근하는 변수이다
133. 절차적 프로그래밍 언어
정해진 문법에 따라 순서대로 기술하는 언어. 자연어에 가까운 단어와 문장으로 구성. 과학 계산이나 하드웨어 제어에 쓴다.
실행 속도가 빠르고 구조적인 프로그래밍이 가능. 분석하기 어렵고 유지 보수, 코드 수정이 어렵다.
절차적 프로그래밍 언어 종류
C : 컴파일러 방식의 언어(기계어가 아니다.). 시스템 프로그래밍 언어에 적합하다.
134. 객체 지향 프로그래밍 언어
현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어 조립하듯이 소프트웨어를 개발.
상속을 통합 재사용과 시스템 확장에 용이. 재활용성이 높다. 분석과 설계를 쉽고 효율적으로.
정형화된 분석 및 설계 방법이 없고 구현 시 처리 시간이 지연된다.
Java : 분산 네트워크 환경, 멀티 스레드 기능 제공.
C++ : C언어에 객체지향 개념 적용
메시지(Message) : 객체들 간에 상호작용을 하는데 사용되는 수단.
135. 스크립트 언어
스크립트 언어 : HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것. 컴파일 없이 실행가능. 쉽고 빠르게 수정이 가능하다. 코드를 읽고 해석해야 하므로 실행속도가 느리다.
서버용 스크립트 언어 :ASP, PHP, JSP, 파이썬
클라이언트용 스크립트 언어 : 자바스크립트
136. 선언형 언어
프로그램이 수행해야 문제를 기술하는 언어.
함수형 언어 : LISP 논리형 언어 : PROLOG
137. 라이브러리
자주 사용하는 함수나 데이터들을 미리 만들어 놓은 집합체
stdlib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능 제공
java.lang : 자바에 기본적으로 필요한 인터페이스, 자료형, 예의 처리 등
java.util : 날짜 처리, 난수 처리, 복잡한 문자열 처리 등
java.io : 파일 입, 출력과 관련된 기능 제공
java.net : 네트워크 관련 기능
java.awt : 사용자 인터페이스와 관련된 기능
138. 데이터 입 출력
%d : 정수형 10진수
%u : 부호없는 정수형 10 진수
%o : 정수형 8진수
%x : 정수형 16진수
%c, %s, %f, %e, %ld, %lo, %lx, %p(주소 16진수) 등
getchar() : 한 문자 입력. gets() 문자열 입력, puts() : 문자열 출력, putchar() : 한 문자 출력
139. 예외 처리
예외가 발생했을 때 대비해 작성해 놓은 처리 루틴을 수행하도록 하는 것.
140. 프로토타입
함수에 대한 정보를 미리 알리는 것.
3장 응용 SW 기초 기술 활용
141. 운영체제의 개념
운영체제 : 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임. OS의 위치는 하드웨어와 유틸리티 사이.
운영체제의 목적
처리 능력(Throughput), 반환 시간(Turn Around Time), 사용 가능도(Availability), 신뢰도(Reliability)
운영체제의 기능 : 자원을 관리, 자원의 스케줄링 기능, 편리한 인터페이스 제공, 하드웨어, 네트워크를 관리 및 제어.
142. Windows
마이크로소프트 사의 운영체제
선점형 멀티태스킹(멀티프로그래밍) : 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하며, OS가 각 작업의 CPU 이용 시간을 제어하고 강제 종료한다.
PnP : Plug and Play로 프린터나 사운드 카드 등 하드웨어를 설치했을 때 자동으로 환경을 구성해준다.
OLE : Object Linking and Enmedding). 다른 프로그램에서 작성된 문자나 그림 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하는 기능.
255자의 긴 파일명. Single-User 시스템.
143. UNIX / LINUX / MacOS
UNIX : C언어로 작성되어 이식성이 높으며 호환성이 좋다. 멀티유저(Multi-User), 멀티태스킹을 지원한다.
네트워킹 기능을 제공하여 통신망(Network) 관리용 운영체제로 적합하다.
커널(Kernel) : 가장 핵심적인 부분. 부팅될 떄 주 기억장치에 적재된 후 상주한다. 프로그램과 하드웨어 간의 인터페이스 역할을 한다.
쉘(Shell) : 사용자의 명령어를 인식하여 프로그램을 호출, 명령을 수행. 시스템과 사용자 간의 인터페이스를 담당한다. 파이프라인 기능 지원
UNIX에서의 프로세스 간 통신 : 시스템 호출을 통해 커널의 기능을 사용한다. 프로세스간 통신은 시그널, 파이프, 소켓 사용
LINUX : 리누스 토발즈가 UNIX 기반으로 개발.
MacOS : 애플
144. 기억장치 관리의 개요
레지스터 <-> 캐시 기억장치 <-> 주 기억장치 <-> 보조기억장치.
왼쪽으로 갈수록 접근 시간과 속도가 빠르지만 용량이 적고 고가이다.
기억장치 관리 전략 : 프로그램이나 데이터를 주 기억장치에 적재시키는 시기, 위치를 지정하는 전략
반입(Fetch) 전략 : 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
요구 반입(Demand Fetch) : 특정 프로그램이 참조를 요구할 때 적재
예상 반입(Anticipatory Fetch) : 미리 예상하여 적재
배치(Placement) 전략 : 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략
최초 적합(FIrst Fit) : 여유가 있는 크기의 영역에서 첫 번째 영역에 배치
최적 적합(Best Fit) : 단편화를 가작 적게 남기는 영역에 배치
최악 적합(Worst Fit) : 단편화를 가장 많이 남기는 영역에 배치
교체(Replacement) 전략 : 주기억장치의 모든 영역이 사용중인 상태에서 새로움 프로그램으로 교체하는 전략.
145. 주기억장치 할당 기법 : 주기억장치에 어떻게 할당할 것인지.
연속 할당 기법 : 주기억장치에 연속으로 할당하는 기법. 단일/다중 분할 할당 기법이 있다.
분산 할당 기법 : 프로그램을 특정 단위의 조각으로 나눠 할당하는 기법. 페이징과 세그멘테이션 기법으로 나눌 수 있다.
단일 분할 할당 기법 : 주기억장치를 운영체제 영역과 사용자 영역으로 나눠, 한 순간에는 오직 한 명의 사용자만 사용 가능. 두 영역을 구분하는 경계 레지스터가 사용된다.
오버레이 기법(Overlay) : 주기억장치보다 큰 프로그램을 실행하기 위한 기법. 하나의 프로그램을 여러 개의 조각으 로 분할한 후 필요한 조각을 차례로 주기억장치에 적재하는 방법.
스와핑 기법(Swapping) : 하나의 프로그램 전체를 할당하여 사용하다가 필요에 따라 다른 프로그램과 교체하는 기법
다중 분할 할당 기법
고정 분할 할당 기법 = 정적 할당 기법 : 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하 고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하는 기법. 내부 단편화 및 외부 단편화가 발생한다.
가변 분할 할당 = 동적 할당 기법 : 미리 주기억장치를 분할해놓는 것이 아니라 프로그램을 적재하면서 필요한 만 큼의 크기로 분할하는 기법이다. 영역과 영역 사이에 단편화가 발생할 수 있다.
146. 가상기억장치 구현 기법 / 페이지 교체 알고리즘
가상기억장치 : 하드디스크의 일부르 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 용량이 큰 것 처럼 사용하는 기법.
주기억장치의 용량보다 큰 프로그램을 실행하기 위한 방법. 다중 프로그래밍의 효율을 높일 수 있다.
가상 기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업이 필요하다.
페이징과 세그멘테이션 기법으로 나눌 수 있다.
페이징(Paging) : 가상기억장치에 보관된 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)를 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행.
외부 단편화는 발생하지 않으나 내부 단편화가 발생할 수 있다. (페이지가 4KB이고 프로그램이 17KB라면 마지막 페이지가 1KB가되고 이 페이지를 주기억장치에 적재하면 3KB의 내부 단편화가 발생한다.)
주소 변환을 위해 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블이 필요하다. 따라서 비용이 증가하고 처리 속도가 감소한다.
세그멘테이션(Segmentation) : 가상기억장치에 보관된 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재한다. 세그먼트 맵 테이블이 필요하다.
내부 단변화는 발생하지 않으나 외부 단편화가 발생할 수 있다.
페이지 교체 알고리즘 : 페이지 부재(Page Fault)가 발생했을 때 페이지 프레임이 모두 차있을 때 어떤 페이지 프레임을 교체할 것인지 정하는 기법
OPT(Optimal replacement) 최적 교체 : 가장 오랫동안 사용하지 않을 페이지를 교체
FIFO(FIrst In First Out) : 가장 오래 있었던 페이지를 교체
LRU(Least Recently Used) : 가장 오랫동안 사용하지 않은 페이지를 교체한다. 각 페이지마다 카운터나 스택을 둔다.
LFU(Least Frequently User) : 사용 빈도가 가장 적은 페이지를 교체
NUR(Not User Recently) : 최근에 사용하지 않은 페이지를 교체. 참조 비트(Recently Bit)와 변형 비트(Dirty Bit)가 사용
참조 비트 |
0 |
0 |
1 |
1 |
변형 비트 |
0 |
1 |
0 |
1 |
교체 순서 |
1 |
2 |
3 |
4 |
SCR(Second Chance Replacement) : 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지
147, 가상기억장치 기타 관리 사항
페이지 크기
페이지 크기가 작은 경우 : 페이지 단편화가 감소되고, 한 개의 페이지 이동시간이 줄어든다. 불필요한 내용이 주 기억장치에 적재될 확률은 적어서 효율적인 워킹셋. 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어진다. 디스크 접근 횟수가 많아져서 전체적인 입,출력 시간은 늘어난다.
페이지 크기가 클 경우 : 페이지 맵 테이블 크기가 작아지고 매핑속도가 빨라진다. 입, 출력 효율 증가. 페이지 단편화가 증가.
한 개의 페이지가 이동하는 시간이 증가.
Locality : 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론.
시간 구역성(Temporal Locality) : 하나의 페이지를 일정 시간 동안 액세스. (Loop, Stack, 서브 루트니, 카운팅, 집계 등)
공간 구역성(Spatial Locality) : 일정 위치의 페이지를 액세스. (배열 순회, 순차적 코드 실행, 등)
워킹 셋(Working Set) : 일정 시간 동안 자주 참조하는 페이지들의 집합. Locality의 특징을 이용
프리페이징(Prepaging) : 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법
스래싱(Thrashing) : 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상. 전체 시스템의 성능이 저하.
페이지 오류율이 크면 스래싱이 많이 발생한 것이다.
스래싱 방지 방법 : 다중 프로그래밍의 정도를 적절하게 유지. 워킹 셋을 유지.
148. 프로세스의 개요
프로세스 : 프로세서에 의해 처리되는 사용자 프로그램. 실행중인 프로그램을 의미한다. Job, Task라고도 한다. 비동기적 행위를 일으키는 주체, 운영체제가 관리하는 실행 단위. PCB를 가진 프로그램, 실기억장치에 저장된 프로그램
PCB(Process Control Block, 프로세스 제어 블록) : 프로세스에 대한 중요한 정보를 저장해 놓는 곳.
프로세스의 상태 전이.
제출(Submit) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
접수(Hold) : 제출된 작업이 디스크의 할당 위치에 저장된 상태
준비(Ready) : 프로세서를 할당받기 위해 기다리고 있는 상태
실행(Run) : 준비상태 큐에 있던 프로세스가 프로세서를 할당받아 실행되는 상태. CPU 스케줄러에 의해 수행
대기(Wait, Block) : 입,출력 처리가 필요하면 완료될 때까지 대기하는 상태
종료(Terminated, Exit) : 프로세스의 실행이 끝나고 할당이 해제된 상태
전이 관련 용어
Dispatch : 준비 상태에서 프로세서를 할당받아 실행 상태로 전이되는 과정
Wake Up : 대기 상태에서 준비상태로 전이
Spooling : 입,출력할 데이터를 나중에 한꺼번에 처리하기 위해 디스크에 저장하는 과정
스레드(Thread) : 프로세스 내에서의 작업 단위. 단일/다중 스레드가 있다. 경량 프로세스라고도 한다. 독립적인 스케줄링의 최소 단위이다. 서로 독립적인 다중 수행이 가능하다.
149. 스케줄링
프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업.
장기/중기/단기 스케줄링으로 나뉜다.
프로세스 스케줄링 기법
비선점(Non-Preemptive) 스케줄링 : 이미 할당된 CPU를 다른 프로세스가 강제로 뻇을 수 없는 기법. 할당 받으면 종료할 때까지 사용. 일괄 처리 방식에 적합. FIFO, SJF, 우선순위 등의 알고리즘이 있다.
선점(Preemptive) 스케줄링 : 우선순위가 높은 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 기법. 많은 오버헤드(Overhead)를 초래. Round Robin, SRT등이 있다.
150. 환경 변수
환경 변수란 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임이다.
변수명과 값으로 구성된다. 시스템의 기본 정보를 저장하고 자식 프로세스에 상속된다. 시스템 환경 변수와 사용자 환경 변수로 구분된다
Windows의 환경 변수 : 앞 뒤에 %를 붙인다.
%HOMEPATH% : 로그인한 계정의 기본 폴더
프롬프트에서 set을 입력하면 모든 환경 변수와 값을 표시한다.
Unix/Linux의 환경변수 : 앞에 $를 붙인다.
$PATH : 실행 파일을 찾는 경로
set, env, printenv를 입력하면 모든 환경 변수와 값을 표시한다.
151. 운영체제 기본 명령어
Windows
DIR, COPY, TYPE(cat이랑 같은 파일 내용 표시), REN, DEL, MD, CD, CLS, ATTRIB, FIND, CHKDSK, FORMAT, MOVE
UNIX,LINUX
cat, chdir, chmod, chown, cp, exec, find, fork(새로운 프로세스 생성), fsck, getpid, ls, rm, mount, wait
152. 인터넷
인터넷 : TCP/IP 프로토콜을 기반으로 전 세계 네트워크들이 연결된 광범위한 통신망. 미 국방성 ARPANET에서 시작. 유닉스를 기반으로, 모든 컴퓨터가 고유한 IP를 갖는다.
IP 주소 : 8비트씩 4부분, 32비트로 구성
A Class : 국가, 대형 통신망 B Class : 중대형, C Class : 소규모 통신망
D Class : 멀티캐스트용, E Class : 실험적 주소, 공용되지 않는다.
서브네팅(Subnetting) : 할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나눠 사용하는 것.
4바이트의 주소에서 네트워크와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크(Subnet Mask)라고 한다.
IPv6 : IPv4의 부족한 주소를 해결하기 위한 128비트의 긴 주소.
IPv6의 구성 : 16비트씩 8부분으로 구성되어 16진수를 사용하며 :로 구분한다.
유니캐스트 : 1대 1 통신
멀티캐스트 : 1대 다 통신
애니캐스트 : 1대 1 통신, 단일 송신자와 가장 가까이 있는 단일 수신자 간의 통신이다.
도메인 네임(Domain Name)
숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것.
153. OSI 참조 모델
OSI(Open System Interconnection) 참조 모델 : 다른 시스템 간의 원활한 통신을 위한 통신 규약. 7단계로 표준화했다.
하위 계층 : 물, 데, 네
상위 계층 : 전, 세, 표, 응
물리 계층 : 전송에 필요한 두 장치 간의 실제 접속과 절단 등에 대한 규칙을 정의. PDU : 비트, 장비 : 리피터, 허브
데이터 링크 계층 : 두 개의 인접한 개방 시스템 간에 신뢰성 있고 효율적인 정보 전송을 가능. 흐름제어, 프레임의 동기화 기능, 오류제어, 순서제어 등. PDU : 프레임, 장비 : 랜카드, 브리지, 스위치
네트워크 계층 : 네트워크 연결을 관리하는 기능, 데이터의 교환 및 중계 기능. 경로설정, 트래픽 제어 등.
PDU : 패킷 장비 : 라우터
전송 계층 : 논리적 안정과 균일한 데이터 전송 서비스를 제공, 하위 3계층과 상위 3계층의 인터페이스를 담당. 오류제어, 흐 름제어. TCP, UDP등의 표준. PDU : 세그먼트, 장비 : 게이트웨이
세션 계층 : 송, 수신 측 간의 관련성을 유지하고 대화 제어를 담당. 대화 동기를 위해 일정한 부분에 체크점을 두는데 이를 동기점이라고 한다.
표현 계층 : 응용 계층으로부터 받은 데이터를 통신에 적당한 형태로 변환하고 세션에서 받은 데이터를 응용 계층에 맞게
변환. 서로 다른 데이터 형태를 갖는 시스템 간의 상호 접속을 위해 필요하다.
응용 계층 : 사용자가 OSI 환경에 접근할 수 있도록 서비스 제공. 세,표,응의 PDU : 메시지
154, 네트워크 관련 장비
허브 : 가까운 거리의 컴퓨터들을 연결하는 장치. 리피터의 역할도 포함. 더미허브, 스위칭 허브가 있다.
리피터 : 신호가 약해지거나 왜곡된 경우 원래의 신호 형태로 재생. 물리 계층에 해당한다.
브리지 : 랜과 랜을 연결하거나 랜 안에서 컴퓨터 그룹을 연결. 데이터 링크 계층 중 MAC 계층에서 사용. 서브넷 구성 시 전 송 가능한 회선 수는 브리지가 n개일 때 n(n-1)/2이다.
스위치 : 랜과 랜을 연결하여 더 큰 랜을 만든다. 하드웨어 기반으로 처리해 전송 속도가 빠르다. 데이터 링크 계층에 해당
라우터 : 랜과 랜을 연결하고 데이터 전송의 최적 경로를 선택할 수 있다. 네트워크 계층에 해당. 접속 가능한 경로를 라우팅 테이블에 저장한다.
게이트웨이 : 전 계층의 프로토콜 구조가 다른 네트워크의 연결을 수행한다.
155. 프로토콜의 개념
프로토콜 : 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜놓은 통신 규약이다.
프로토콜의 기본 요소
1) 구문(Syntax) : 전송하고자 하는 데이터의 형식
2) 의미(Semantics) : 두 기기 간의 효율적인 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보
3) 시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등
프로토콜의 기능
단편화와 재결합 : 전송할 데이터를 알맞은 크기의 블록으로 자르고, 원래의 데이터로 모으는 과정.
캡슐화 : 단편화된 데이터에 1)송,수신지 주소, 2)오류 검출 코드, 3)프로토콜 제어 정보를 부가하는 것
흐름제어 : 정지-대기, 슬라이딩 윈도우 방식 이용
오류제어, 동기화, 순서제어, 주소지정, 다중화, 경로 제어 등
156. TCP/IP
서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜. ARPANET에서 시작.
TCP : 전송 계층에 해당. 신뢰성 있는 연결형 서비스.
IP : 네트워크 계층에 해당. 데이터그램을 기반으로 비연결형 서비스를 제공한다.
TCP/IP는 응용(응용,표현,세션), 전송(전송), 인터넷(네트워크), 네트워크(물리, 데이터) 계층으로 이루어진다.
응용 계층의 주요 프로토콜
FTP : 파일 전송 프로토콜
SMTP : 전자 우편 교환 서비스
TELNET : 멀리 떨어져 있는 컴퓨터에 접속해 자신의 컴퓨터처럼 사용 가능
DNS : 도메인 네임을 IP주소로 매핑
HTTP : WWW에서 HTML 문서를 송수신 하기 위한 프로토콜
전송 계층의 프로토콜
TCP : 양방향 연결 서비스. 신뢰성 있는 경로, 순서제어, 오류제어, 흐름제어 등. 투명성이 보장된다.
UDP : 비연결형 서비스. 신뢰성보다는 실시간 전송을 위해 속도를 중요시하는 네트워크이다.
RTCP : RTP 패킷의 전송 품질을 제어하기 위한 제어 프로토콜. 항상 32비트의 경계로 끝난다.
인터넷 계층의 주요 프로토콜
IP : 전송할 데이터에 주소를 지정, 경로를 설정. 비연결형인 데이터그램 방식을 사용해서 신뢰성이 보장되지 않음.
ICMP, IGMP
ARP(Address Resolution Protocol) : 호스트의 IP 주소를 연결된 네트워크 접속 장치의 물리 주소로 변경
RARP : ARP의 반대로 물리적 주소를 IP 주소로 변환한다.
'정보처리기사(2020) > 정보처리기사 필기' 카테고리의 다른 글
[정보처리기사] 3장 데이터 베이스 구축 2, 3, 4, 5 (0) | 2020.04.16 |
---|---|
[정보처리기사] 3장 데이터베이스 구축 1 (0) | 2020.04.16 |
[정보처리기사] 2장 소프트웨어 개발 1, 2, 3 (0) | 2020.04.15 |
[정보처리기사] 1장 소프트웨어 설계 3, 4 (0) | 2020.04.15 |
[정보처리기사] 1장 소프트웨어 설계 1, 2 (0) | 2020.04.14 |