프로그래밍 언어 활용

Purple·2021년 8월 17일
0

정보처리기사

목록 보기
4/5

정보처리기사 필기 공부 요약 정리입니다.
공부는 수제비책을 중심으로 했습니다.
요약본 공유합니다.

*웹 애플리케이션 서버(WAS : Web Application Server)

  • 동적 콘텐츠를 처리하고, 제공하기 위해 사용한다.
  • 제품으로는 Tomcat, Weblogic, Jeus, Resin등이 존재한다.

*재사용(Reuse)

  • 기존의 소프트웨어 또는 소프트웨어 지식을 활용해, 새로운 소프트웨어를 구축하는 작업이다.
  • 목표 시스템의 개발 시간 및 비용 절감을 위하여, 검증된 기능을 파악하고 재구성하여, 시슽템에 응용하기 위한 최적화 작업이다.

*재사용의 유형

  • 함수/객체 재사용
  • 컴포넌트 재사용
  • 애플리케이션 재사용

*재사용의 사례

  • 라이브러리 : 소프트웨어 개발 시, 공통으로 사용될 수 있는 특정한 기능을 모듈화한 기법
  • 프레임워크 : 클래스와 라이브러리가 합쳐진 형태
    소프트웨어 아키택처

*모듈화

  • 프로그램 개발 시, 관리에 용이하도록, 기능 단위로 분할하는 기법이다.

*결합도(Coupling)

  • 모듈 내부가 아닌, 외부의 모듈과의 연관도 또는, 모듈 간의 상호 의존성을 나타내는 정도이다.

*결합도의 유형

  • 내공외제스자
  • 내용 결합도(Content Coupling) : 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때의 결합도
  • 공통 결합도(Common Coupling) : 두 모듈이 공통으로 전역 데이터를 접근할 때의 결합도
  • 외부 결합도(External Coupling) : 기능을 순차적으로 수행할 대의 결합도
  • 제어 결합도(Control Coupling) : 제어신호를 이용하여 통신하는 경우의 결합도
  • 스탬프 결합도(Stamp Coupling) : 모듈 간의 인터페이스로, 배열이나 객체 구조 등이 전달되는 경우의 결합도
  • 자료 결합도(Data Coupling) : 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도. 데이터 결합도 라고도 한다.

*응집도(Cohesion)

  • 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구셩요소 간 연관정도이다.

*응집도의 특징

  • 유사기능 영역 구성 : 클래스 목적에 부합하는, 같은 기능영역의 함수들로 구성된다.
  • 단일 책임할당 : 함수의 개수가 상대적으로 적고, 오로지 자신만이 할 수 있는 책임을 할당받는다.
  • 함수 간 상호협력 : 하나의 함수에 많은 기능을 넣지 않고, 다른 함수와 협력하는 방향으로 진행한다.

*응집도의 유형

  • 우논시절통순기
  • 우연적 응집도(Coincidental Cohesion) : 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구셩될 경우의 응집도
  • 논리적 응집도(Logical Cohesion) : 유사한 성격을 갖거나, 특정 형태로 분류되는 처리요소들이 한 모듈에서 처리되는 경우의 응집도
  • 시간적 응집도(Temporal Cohesion) : 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
  • 절차적 응집도(Procedural Cohesion) : 모듈 안의 구성요소들이 그 기능을 절차적으로 수행할 경우의 응집도
  • 통신적 응집도(Communication Cohesion) : 동일한 입력과 출력을 사용하여, 다른 기능을 수행하는 활동들이 모여 있는 경우의 응집도
  • 순차적 응집도(Sequential Cohesion) : 모듈 내에서 한 활동으로부터 나온 출력값을, 다른 활동이 사용할 경우의 응집도
  • 기능적 응집도(Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

*침투 테스트(Penetration Test)

  • 실제 공격자가 아닌, 전문 해커가 시스템의 취약점을 찾기 위해 공격을 수행하여, 부적절한 보안요소를 식별하는 방법이다.

*XSS(Cross Site Scripting)

  • 공격자가 게시판에 악성 스크립트를 작성, 삽입하여, 사용자가 그것을 보았을 때, 이벤트 발생을 통해, 사용자의 정보를, 특정 사이트로 전송하는 공격기법이다.

*사이트간 위조요청(CSRF)

  • 웹 사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게, 공격자가 의도한 행위를 특정 웹 사이트에 요청하는 공격기법이다.

*버퍼 오버플로우

  • 메모리를 다루는 데, 오류가 발생하여, 잘못된 동작을 하는 프로그램 취약점

*SQL 인젝션

  • 웹을 통해, 클라이언트 입력값을 조작하여, 서버의 데이터베이스를 공격할 수 있는 공격 방식

*배치 프로그램

  • 사용자와의 상호작용 없이, 일련의 작업들을 작업 단위로 묶어, 정기적으로 반복 수행하거나, 정해진 규칙에 따라 일괄 처리하는 방법이다.

*배치 프로그램의 필수 요소

  • 자동화 : 사용자의 개입 없이 동작해야 한다.
  • 안정성 : 어떤 문제가 언제 발생했는지 추적할 수 있어야 한다.
  • 대용량 데이터 : 대용량의 데이터를 처리할 수 있어야 한다.
  • 견고성 : 유효하지 않은 데이터를 처리해도, 동작 중단이 없어야 한다.
  • 성능 : 주어진 시간 내에 처리를 완료할 수 있어야 한다.

*배치프로그램의 유형

  • 이온정
  • 이벤트 배치 : 사전에 정의해 둔 조건을 충족 시, 실행
  • 온디맨드 배치 : 사용자의 요구가 있을 때, 실행
  • 정기 배치 : 정해진 시점(주로 야간)에 정기적으로, 실행

*스프링 배치(Spring Batch)

  • Spring 프레임워크의 3대 요소를 모두 사용할 수 있는, 대용량 처리를 제공하는 스케줄러이다.

*변수 설졍 규칙

  • 사용 가능 : 영문(대문자/소문자), 숫자, 밑줄(‘_’)
  • 첫 자리에는, 숫자를 사용할 수 없다.
  • 변수 중간에, 공백을 사용할 수 없다.
  • 특수문자는 ‘_’와 ‘$’만 가능하다.
  • 예약어의 경우, 변수로 사용할 수 없다.

*배열선언

  • 배열수보다 적은 개수만큼 초기화할 경우, 초기값이 명시되지 않은 값들은 0으로 초기화된다.

*연산자 세부 유형

  • 산술 연산자 : +, - *, /
  • 시프트 연산자 : <<, >>
  • 관계 연산자 : <, <=, >=, >, ==, !=
  • 논리 연산자 : &&, ||, !
  • 비트 연산자 : &(and), |(or), ^(xor), ~(not)
  • 대입 연산자 : =, +=, -=, *=, /=, %=
  • 증감 연산자 : ++x, x++, --x, x--
  • 삼항 연산자 : ? a:b : 조건식이 참일 경우 변수 a가 실행, 거짓일 경우 변수 b가 실행

*자바의 while

  • 자바의 경우 while에 결과값이, 불린 타입이 아닌 경우 오류가 발생한다.
  • ex) while(True) -> Ok, while(1) -> No

*절차적 프로그래밍 언어

  • 순차적으로 진행되기 때문에, 프로그램의 흐름을 파악하기 쉽다.
  • 모듈화를 하거나 구조화를 할 수 있다.
  • 명령형 프로그래밍이라고도 불린다.
  • 종류 : 알골, C언어, 베이직, 포트란

*객체지향 프로그래밍 언어

  • “객체”들을 중심으로 하는 프로그래밍 언어이다.
  • 응집력을 강화하기 위해, 클래스에 하나의 문제 해결을 위한 데이터를 모은다.
  • 결합력을 약화하기 위해, 클래스 간에 독립적으로 디자인한다.
  • 종류 : C++, C#, JAVA

*자료 추상화

  • 불필요한 정보는 숨기고, 중요한 정보만을 표현하여, 프로그램을 간단히 만드는 기능이다.

*상속

  • 새로운 클래스가, 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다.

*동적바인딩

  • 실행 시간 중에 일어나거나, 실행 과정에서 변경될 수 있는 바인딩이다.
  • 프로그램의 한 개체나 기호를, 실행 과정중에 여러 속성이나 연산에 바인딩 함으로써, 다형 개념을 실현한다.

*JAVA에서의 접근 제어자

  • public : 외부의 모든 클래스에서 접근이 가능한 접근 제어자
  • protected : 같은 패키지 내부에 있는 클래스 & 상속받은 하위 클래스에서 접근이 가능한 접근 제어자
  • default : 접근 제어자를 명시하지 않은 경우로, 같은 패키지 내부에 있는 클래스에서 접근이 가능한 접근 제어자
  • private : 같은 클래스 내에서만, 접근이 가능한 접근 제어자

*Java에서 사용되는 출력 함수

  • System.out.print()
  • System.out.println()
  • System.out.printf()

*Java의 데이터타입

  • 논리형 - boolean : 1byte
  • 문자형 – char : 2byte
  • 정수형 – byte : 1byte (바쇼인롱.)
  • short : 2byte
  • int : 4byte
  • long : 8byte
  • 실수형 – float : 4byte
  • double : 8byte

*스크립트 언어

  • 소스코드를 컴파일하지 않고, 실행할 수 있는 프로그래밍 언어이다.
  • 빠르게 배우고 쉽게 작성할 수 있다.
  • 단순한 구문과 의미를 내포한다.
  • 스크립트 언어로 작성된 코드는, 시작에서 끝날때까지 실행되며, 시작점(Entry point)가 따로 명시되어 있지 않다.
  • 종류 : PHP, Perl, Python, Javascript, Bash, Basic, Cobol Script

*PHP에서 사용 가능한 연산자

  • '@' : 오류 억제 연산자, 오류 메시지를 무시한다는 뜻
  • '<>' : 값이 다름을 표현하는 연산자
  • '===' : 값도 같고 타입도 같은지 확인하는 연산자

*Python 언어

  • 다양한 플랫폼에서 쓸 수 있다.
  • 라이브러리가 풍부하다
  • 다른 언어로 쓰인 모듈들을 연결하는 언어이다.
  • 유니코드 문자열을 지원하기 때문에, 다양한 언어의 문자 처리에 좋다.
  • 들여쓰기를 사용해서, 블록을 구분하는 문법을 사용한다.

*Python 문법, 리스트

  • 리스트[시작인덱스: 종료인덱스: 인덱스 증가폭]
  • 시작인덱스 생략 시, 0으로 대체
  • 종료인덱스 생략 시, 마지막 요소 인덱스 번호로 대체
  • 시작인덱스부터, 종료인덱스 직전 인덱스까지, 인덱스증가폭만큼 요소를 불러오는 문법
  • ex)
    a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
    a[ :7:2]는 0부터 7번째 인덱스까지, 인덱스가 2씩 증가되도록 출력하라는 뜻이다.
    결과값은 [0, 20, 40, 60]이다.

*Python 문법, 문자열

  • 문장[시작인덱스:종료인덱스]
  • 문자열은 slice를 이용하여 부분 문자열을 추출할 수 있다.
  • ex1)
    string = “hello”
    m = string[0:3]
    print(m)은 hel
    시작인덱스인 0부터, 종료인덱스 직전 인덱스인 2번째 인덱스까지 출력.
  • ex2)
    string = “Hello World”
    m = string[-3:]
    print(m)은 rld
    뒤에서 3번째부터, 끝까지 출력.

*배시(Bash) 쉘

  • Bash 쉘 스크립트에서 사용할 수 있는 제어문 : if, for, while

*선언형 언어

  • 함순익고 논사규질
  • 선언형 언어에는, 함수형 언어와 논리형 언어가 있다.

*함수형 언어

  • 자료 처리를 함수의 계산으로 취급하고, 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임이다.
  • 함수의 출력값은, 함수에 입력된 인수에만 의존하므로, 인수 x에 같은 값을 넣고, 함수 f를 호출하면, 항상 - f(x)라는 같은 결과가 나온다.
  • 함수형 언어에는 순수함수, 익명함수, 고계함수가 있다.
  • 순수함수 : 어느 순간에 호출해도 동일한 값을 반환한다. 스레드가 안전하고, 병렬적인 계산이 가능하다.
  • 익명함수 : 이름이 없는 함수이다. 람다식이라고도 불린다.
  • 고계함수 : 함수를 또 하나의 값으로 간주하여, 함수를 함수의 인자 혹은 반환값으로 사용할 수 있는 함수

*논리형 언어

  • 객체와 객체 간의 관계에 대해, 절대 문절 형태로 표현한다.
  • 논리형 언어에는 사실, 규칙, 질문이 있다.

*라이브러리

  • 효율적인 프로그램 개발을 위해, 필요한 프로그램을 모듈화한 집합체이다.
  • 일반적으로 도움말, 설치파일, 샘플 코드등을 제공한다.
  • 표준 라이브러리는, 내부 모듈이 구현되어 있는 상태로 배포되어진다.

*표준 라이브러리

  • 입출력 기능, 문자열 기능, 시간 처리 기능, 수학 기능

*데이터 입출력

  • 데이터 입출력은, 프로그램으로 데이터가 입력 및, 프로그램으로부터 데이터가 출력되도록 하는 기법이다.
  • 데이터 입출력은 표준 입력, 표준 출력, 표준 오류로 구성된다.
  • 표준 입력 : 프로그램으로 들어가는 데이터 스트림이다. 보통은 문자열이다.
  • 표준 출력 : 프로그램이 출력 데이터를 기록하는 스트림이다.
  • 표준 오류 : 프로그램이 오류 메시지나, 진단을 출력하기 위해, 일반적으로 쓰이는, 또 다른 출력 스트림이다. 즉 표준 오류는 표준 출력의 범주에 포함된다.

*예외 처리

  • 예외 처리는 throw, try, catch로 구성된다.
  • throw : 프로그램이 정상적으로 실행될 수 없을 때, 예외를 던지는 기능을 갖고 있다.
  • try : 예외가 발생할만한 코드 블록을 지정한다.
  • catch : try안에서 throw한 예외 객체에 대한, 예외처리를 한다. catch블록을 예외 핸들러라고 한다.
    try {
    if(예외 조건)
    thorw 예외 객체;
    }
    catch (타입 예외 객체) {
    예외처리;
    }

#### *프로토타입 프로그래밍 기법

  • 객체지향 프로그래밍과 달리, 클래스를 명확히 정의하지 않아도 된다.
  • 속성과 메서드를, 다른 클래스의 인스턴스나 빈 객체에 추가하는 작업을, 덜 수 있는 프로그래밍 스타일이다.

*운영체제

  • 다중 사용자 다중 응용 프로그램 환경 하에서, 자원의 현재 상태를 파악하고, 자원 분배를 위한 스케줄링을 담당한다.
  • CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 관리한다.
  • 입출력 장치와 사용자 프로그램을 제어한다.
  • 운영체제의 종류로는 윈도우즈, 리눅스/유닉스, 맥(MAC), 안드로이드(Android)가 있다.

*커널의 기능

  • 프로세스 관리 : 프로세스 스케줄링 및 동기화 관리
  • 기억장치 관리 : 프로세스에게 메모리 할당 및 관리
  • 주변장치 관리 : 입출력 장치 스케줄링 및 전반적인 관리
  • 파일 관리 : 파일의 생성과 같은 관리

*Winodws 운영체제 특징

  • 오지선자
  • OLE(Object Linking and Embedding) : 개체를, 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여, 편집할 수 있게 하는 기능 제공
  • GUI 제공 : 키보드 없이 마우스나 아이콘으로 메뉴를 선택하여 작업을 수행하는 그래픽 기반의 인터페이스 방식
  • 선점형 멀티태스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서, 운영 체제가 각 작업의 CPU 이용시간을 제어한다.
  • 자동감지 기능 제공 : 하드웨어를 설치했을 때, 필요한 시스템 환경을, 운영체제가 자동으로 구성해주는 자동감지 기능 제공
  • 트리 디렉터리 구조를 가진다.
  • Windows의 OS는 소스가 공개되지 않ㄴ았으며, 소스가 공개된 개방형 OS로는 CentOS가 존재한다.

*세그먼트 주소 계산 사례

  • ex) 논리 주소 (2, 200)이 주어지고, 2번의 base주소가 4300이라고한다면,
  • 세그먼트 번호가 2이고, 2번의 base 주소가 4300이고, 할당된 크기는 200이므로,
  • 물리주소는 4300 + 200 = 4500 번지가 된다.

*메모리 교체 기법 유형

  • FIFO(First In First Out) : 선입선출
  • LRU(Least Recently Used) : 사용된 시간을 확인하여, 가장 오랫동안 사용되지 않은 페이지를 빠지게 하는 기법
  • LFU(Least Frequently Used) : 사용된 횟수를 확인하여, 참조 횟수가 가장 적은 페이지를 선택하여 빠지게 하는 기법

*쓰레싱(Thrashing)

  • 프로세스들 간의 메모리 경쟁으로 인하여, 지나치게 Page Fault가 발생하여, 전체 시스템의 성능이 저하되는 현상
  • 페이징 기법의 문제점이다.

*워킹 세트(Working Set)

  • 각 프로세스가 많이 참조하는 페이지들의 집합을, 주기억장치 공간에 계속 상주하게 하여, 빈번한 페이지 교체 현상을 줄이고자 하는 기법이다.
  • 페이징 기법의 문제점인, 쓰레싱의 해결방안이다.

*지역성(Locality)

  • 프로세서들은 기억장치 내의 정보를 균일하게 접근하는 것이 아니라, 어느 한 순간에 특정 부분을 집중적으로 - 참조한다는 것을 표현한 것이다.
  • 지역성의 유형으로 시간, 공간, 순차 지역성이 존재한다.
  • 시간 지역성의 예 : Loop(반복 순환), Sub Routine(부 프로그램), Stack(스택)
  • 공간 지역성의 예 : 순차적 코드의 실행
  • 구역성이라고도 한다.

*프로세스(Process)

  • 프로그램 카운터, 레지스터 같은 현재 사용되는 자원에 대한 정보를 갖는다.
  • CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램을 말한다.
  • 실행중인 프로그램을 프로세스라고 한다.

*프로세스 상태

  • 생성(Create), 준비(Ready), 실행(Running), 대기(Waiting), 완료(Complete or Exit)

*스레드(Threads)

  • CPU를 받아서 수행되는 프로그램 단위이다.

  • 프로세스(Process)나 태스크(Task)보다 더 작은 단위이다.

  • 한 개의 프로세스(Process)는, 여러 개의 스레드를 가질 수 있다.

  • 한 태스크는(Task), 여러 개의 스레드로 나누어 수행될 수 있다.

  • 스레드는, 그들이 속한 프로세스의 자원과 메모리를 공유한다.

  • 다중 프로세스 구조에서 각 스레드는, 다른 프로세스에서 병렬로 실행될 수 있다.

  • 스레드는 동일 프로세스 환경에서, 서로 다른 독립적인 다중 수행이 가능하다.

  • 커널 스레드의 경우, 운영체제에 의해 스레드를 운용한다.

  • 사용자 스레드의 경우, 사용자가 만든 라이브러리를 사용하여, 스레드를 운용한다.

*스케줄링의 목적

  • 모든 작업들에 대해 공평성을 유지하기 위해서이다.
  • 단위 시간당 처리량을 최대화하기 위해서이다.
  • 응답 시간을 빠르게 하기 위해서이다.
  • 운영체제의 오버헤드를 최소화하기 위해서이다.

*선점형 스케줄링 알고리즘인, 라운드 로빈(Round Robin)

  • 프로세스가 같은 크기의 CPU시간을 할당하는 방식이다.
  • 시간할당이 작아지면, 프로세스-문맥 교환이 자주 일어난다.
  • 시간 할당이 커지면, FCFS 스케줄링과 같은 결과를 얻는다.
  • Time Sharing System을 위해 고안된 방식이다.

*Time Sharing System

  • 중앙 처리 장치의(CPU) 시간을, 각 사용자에게 균등하게 분할하는 방법이다.
  • 모든 컴퓨터 사용자에게 똑같은 서비스를 제공하는 것을 목표로 삼고 있다.
  • 라운드 로빈(Round Robin)스케줄링을 사용한다.

*선점형 스케줄링 알고리즘인, MFQ=MLFQ(Multi Leve Feedback Queue)

  • FCFS(=FIFO)와 RR 스케줄링 방식을 혼합한 것이다.
  • 상위 단계에서 완료되지 못한 작업은 하위 단계로 전달된다.
  • 마지막 단계에서는 RR방식을 사용한다.

*비선점형 알고리즘인, SJF(Shortest Job First)

  • 프로세스가 촉하는 시점에서, 가장 작은 서비스 시간을 갖는 프로세스가 종료될 때까지 자원을 선점하는 방식이다.
  • 가장 짧은 작업부터 수행하기에, 평균 대기시간이 최소가 된다.
  • 가장 긴 작업부터 수행하면, 평균 대기시간 최대가 된다.
  • 기아 현상(Starvation)이 발생 할 수 있다.

*비선점형 알고리즘인, HRN(Highest Response-ratio Next)

  • HRN 우선순위 계산식 =
  • 우선순위를 계산하여, 그 수치가 높은 것부터, 순서대로 우선순위가 부여된다.
  • SJF(Shortest Job First)기법을 보완하기 위한 방식이다.
  • 긴 작업과 짧은 작업 간의, 지나친 불평등을 해소할 수 있다.

*반환시간, 대기시간

  • 반환시간(응답시간) = 종료시간 – 도착시간
  • 대기시간 = 반환시간 – 서비스시간

*SJF(Shortest Job First) 기법과 SRT(Shortest Remaining Time)기법의 비교

*은행가 알고리즘(Banker’s Algorithm)

  • 교착상태 해결방법 중 회피(Avoidance) 기법에 해당한다.

*UNIX SHELL 환경 변수를 출력하는 명령어

  • configenv, printenv, env

*리눅스/유닉스 운영체제의 환경 변수

  • $PATH : 콜론으로 구분된 디렉터리 목록을 나타내며, 셸은 이름에 슬래시(/)가 포함되지 않는 명령을 검색한다.
  • $HOME : 사용자의 홈 디렉터리의 위치를 나타낸다.
  • $PWD : 현재 디렉터리의 절대 경로명을 나타낸다.
  • $DISPLAY : 프로그램이 기본적으로 사용할 디스플레이 식별자를 포함한다.
  • $SHELL : 로그인 쉘의 절대 경로명을 나타낸다.
  • $USER : 사용자 이름
  • $TERM : 터미널 종류의 이름

*UNIX의 쉘(Shell)

  • 명령어 해석기이다.
  • 시스템과 사용자간의 인터페이스를 담당한다.
  • 여러 종류의 쉘이 있다.

*리눅스/유닉스 운영체제의 기본 명령어

  • ls : 파일 및 폴더들의 목록을 표시하는 명령어
  • cat : 파일의 내용을 화면에 출력하는 명령어
  • fork : 새로운 프로세스를 생성하는 명령어
  • chmod : 특정 파일 또는 디렉토리의 퍼미션을 수정하는 명령어

*802.11e

  • IEEE 802.11 워킹 그룹의 무선 LAN 표준화 현황 중, QoS 강화를 위해 MAC기능 지원을 채택한 것이다.

*원거리 통신망(WAN : Wide Area Network)

  • 넓은 지리적 거리/장소를 넘나드는 통신 네트워크 또는 컴퓨터 네트워크를 말한다.
  • 원거리 통신망 연결 기술은 전용회선, 회선교환, 패킷교환 방식이 있다.

*전용 회선 방식

  • 통신 사업자가 사전에 계약을 체결한 송신자와 수신자끼리만의 데이터를 교환하는 방식이다.
  • 점대점 프로토콜(PPP), HDLC, SDLC, HNAS 프로토콜에 쓰인다.

*회선 교환 방식

  • 물리적 전용선을 활용하여, 데이터 전달 경로가 정해진 후, 동일 경로로만 전달되는 방식이다.
    점대점 프로토콜(PPP), ISDN 프로토콜에 쓰인다.

*패킷 교환 방식

  • 전체 메시지를, 각 노드가 수용할 수 있는 크기 (패킷)으로 잘라서 보내는 방식이다.
    X.25, 프레임 릴레이 프로토콜에 쓰인다.

*프로토콜

  • 프로토콜은 서로 다른 시스템에 있는, 두 개체 간의 데이터 교환을 원할히 하기 위한, 일련의 통신 규약이다.
  • 프로토콜이 가져야 하는 기능 : 데이터 처리 기능, 제어 기능, 관리적 기능
  • 프로토콜의 기본요소 : 구문, 의미, 타이밍
  • 구문 : 데이터 형식, 코딩, 신호 레벨
  • 의미 : 조정과 에러 처리를 위한 규정
  • 타이밍 : 속도 조절과 순서 관리 규정

*데이터 링크 계층 - 2계층

  • 링크의 설정과 유지 및 종료를 담당한다.
  • 노드 간의 오류 제어, 흐름 제어, 회선 제어 기능을 수행한다.
    데이터링크 계층의 프로토콜(2계층) : HDLC, PPP, FDDI, ATM, LLC, ALOHA, Frame-Relay
  • 네트워크 계층의 프로토콜(3계층) : IP, ARP, RARP, ICMP, IGMP, IGB=내부라우팅 프로토콜(RIP, OSPF), EGP=외부 라우팅 프로토콜(BGP)
  • 전송 계층의 프로토콜(4계층) : TCP, UDP
  • 응용 계층 프로토콜(7계층) : HTTP, FTP, SMTP, POP3, IMAP, Telnet

*네트워크 계층 - 3계층

  • 라우팅, 패킷 포워딩, 인터 네트워킹등을 수행한다.
  • 데이터링크 계층의 프로토콜(2계층) : HDLC, PPP, FDDI, ATM, LLC, ALOHA, Frame-Relay
  • 네트워크 계층의 프로토콜(3계층) : IP, ARP, RARP, ICMP, IGMP, IGB=내부라우팅 프로토콜(RIP, OSPF), EGP=외부 라우팅 프로토콜(BGP)
  • 전송 계층의 프로토콜(4계층) : TCP, UDP
  • 응용 계층 프로토콜(7계층) : HTTP, FTP, SMTP, POP3, IMAP, Telnet

*ARP(Adress Resolution Protocol)

  • TCP/IP 네트워크에서 IP주소(논리주소)를 MAC주소(물리 주소)로 변환하는 프로토콜이다.
    네트워크 계층 프로토콜이다.

*ICMP(Internet control Message Protocol)

  • 에코 메시지는, 호스트가 정상적으로 동작하는지를 결정하는데 사용할 수 있다.
  • 수신지 도달 불가 메시지는, 수신지 또는 서비스에, 도달할 수 없는 호스트를 통지하는데 사용된다.
  • 네트워크 계층 프로토콜이다.
  • 메시지 형식은 8바이트 헤더와, 가변 길이의 데이터 영역으로 분리된다.

*FLSM(Fixed-Length Subnet Masking)방식의 서브네팅 방법

  • 서브넷의 길이를 고정적으로 사용
    ex1) 192.168.10.0/24라는 네트워크 주소 하나를, 4개의 서브넷으로 분할

  • [1]. 서브넷을 위한 bit수 결정
    0/24는 Network ID가 상위 24bit라는 뜻으로, Network ID 24개, Host ID 8개로 총 32bit로 구성된다는 의미이다.
    주어진 예는 4개의 서브넷으로 분할하는 것이다.
    HostID의 상위 N개의 bit를 이용하여 개의 서브넷으로 분할 가능하다.
    따라서, 4개의 서브넷으로의 분할은, HostID의 상위 2개의 bit를 이용하여, =4개의 서브넷으로 분할 가능하다. (00, 01, 10, 11)

  • [2]. Network ID 도출

  • [3]. Subnet Mask 계산
    새롭게 도출된 Network ID를 기준으로, Subnet Mask를 계산한다.
    11111111.11111111.11111111.00000000 (192.168.10.0/24) 였던 Subnet Mask를
    11111111.11111111.11111111.11000000 (192.168.10.0/26) 으로 Subnet Mask를 새롭게 계산

  • [4]. Host 범위를 결정

ip subnet zero를 적용하면, 첫 번째 네트워크인 192.168.10.0도 서브 네트워크로 사용이 가능해진다.

  • [5]. Broadcast address 결정
    Broadcast address는 각 네트워크의 가장 마지막 IP가 된다.
  • [6]. 서브네팅 결과

*서브넷 마스크(Subnet Mask)

  • IP Address에서 네트워크 ID와, 호스트 ID를 구별하는 방식이다.

*전송 계층 – 4계층

  • 신뢰성 있는 전송을 위해, 오류 수정과 흐름제어를 수행한다.
  • TCP(연결지향)가, UDP(비연결 지향)이 속하는 계층이다.
  • 데이터링크 계층의 프로토콜(2계층) : HDLC, PPP, FDDI, ATM, LLC, ALOHA, Frame-Relay
  • 네트워크 계층의 프로토콜(3계층) : IP, ARP, RARP, ICMP, IGMP, IGB=내부라우팅 프로토콜(RIP, OSPF), EGP=외부 라우팅 프로토콜(BGP)
  • 전송 계층의 프로토콜(4계층) : TCP, UDP
  • 응용 계층 프로토콜(7계층) : HTTP, FTP, SMTP, POP3, IMAP, Telnet

*응용 계층 – 7계층

  • 데이터링크 계층의 프로토콜(2계층) : HDLC, PPP, FDDI, ATM, LLC, ALOHA, Frame-Relay
  • 네트워크 계층의 프로토콜(3계층) : IP, ARP, RARP, ICMP, IGMP, IGB=내부라우팅 프로토콜(RIP, OSPF), EGP=외부 라우팅 프로토콜(BGP)
  • 전송 계층의 프로토콜(4계층) : TCP, UDP
  • 응용 계층 프로토콜(7계층) : HTTP, DNS, FTP, SMTP, POP3, IMAP, Telnet

*UDP의 특징

  • 실시간 응용 및 멀티태스킹을 한다.

*IP(Internet Protocol)

  • 비신뢰성, 비연결형 프로토콜이다.
  • 에러 제어와, 흐름 제어가 없다.
  • IP 패킷이 다른 경로를 통해 전달될 수 있다.
  • 따라서 송신된 순서와 다르게 목적지에 도착할 수 있다.
  • IP 패킷은 헤더 체크 섬을 제공한다.

*IPv4 주소체계

  • 10진수로 총 12자리이며, 네 부분으로 나뉜다.

*IPv4의 구성 설명

  • D클래스 : 멀티캐스트 용도로 예약된 주소
  • E클래스 : 연구를 위해 예약된 주소

*IPv6의 특징

  • IPv4는 32비트 , IPv6는 128비트 주소 공간을 제공한다.
  • 확장 헤더를 통해, 이동성, 보안 기능, 네트워크 기능이 확장되었다.
  • 패킷 크기는 최소1Byte ~ 최대64KByte까지 가능하다. 고정 패킷이 아니다.
  • Ad-hoc네트워크를 위한, 자동 네트워크 환경 구성이 가능하다.
  • 멀티미디어의 실시간 처리가 가능하다.

*라우팅 프로토콜 – 3계층- 내부 라우팅 프로토콜(IGP) : RIP(Distance-Vector방식), OSPF(Linked-State방식)

  • 외부 라우팅 프로토콜(EGP) : BGP(Path-Vector방식)

*OSPF(Open Shortest Path First)

  • Linked-State(링크 상태) 알고리즘을 사용한다.
  • 대규모 네트워크에 적합하다.

*TCP 프로토콜

  • 신뢰성 있는, 연결 지향형 전달 서비스이다.
  • 기본 헤더는 20byte이고, 60byte까지 확장할 수 있다.
  • 스트림 전송 기능을 제공한다.
  • 순서제어, 오류 제어, 흐름 제어, 혼잡 제어 기능을 제공한다.

*TCP 주요 기법

*TCP 3-Way Handshaking

  • 전송 계층에서 송신측과 수신측간 사용된다.
  • TCP연결 설정, 수락, 확인의 세가지 절차로 구성된다.
  • 연결(Connection) 설정 규약이다.

*TCP 4-Way Handshaking

  • 전송 계층에서 송신측과 수신측간 사용된다.
  • 서로 연결을 종료(Disconnection)할 때 수행하는 규약이다.

*TCP 흐름 제어

  • 전송 계층에서 사용된다.
  • 데이터 패킷을 전송할 때, 수신한도를 넘는 과잉 패킷의 입력으로 분실이 일어나는 것을 방지하도록, 패킷의 흐름을 조절하는 기법이다.
  • TCP 흐름 제어 기법에는 정지-대기 기법(Stop & Wait), 슬라이딩 윈도(Sliding Window)기법

*정지-대기 기법(Stop & Wait)

  • 프레임이 손실되었을 때, 손실된 프레임 1개를 전송하고, 수신자의응답을 기다리는 방식이다.
    한번에 프레임 1개만 전송할 수 있다.

*슬라이딩 윈도(Sliding Window)

  • 수신 측에서 설정한 윈도의 크기만큼, 송신 측에서 확인 응답(ACK) 없이 전송 할 수 있게 하, 흐름을 동적으로 제어하는 기법이다.

*TCP 혼잡 제어

  • 전송 계층에서 사용된다.
  • 네트워크로 유입되는 사용자 트래픽의 양이, 네트워크의 용량을 초과하지 않도록 하는 기법이다.
  • 송신측에서 확인응답(ACK) 수신 여부로, 네트워크 상황을 판단하여, 송신 데이터 크기를 조절한다.

*UDP의 특징

  • 데이터 전송 전, 연결 설정을 하지 않는, 비연결형 서비스이다.
  • 흐름 제어나, 순서 제어가 없어, 전송 속도가 빠르다
  • 실시간 응용 및 멀티캐스팅을 한다.

*서버의 동적 콘텐츠

  • 서버사이드 스크립트 언어를 이용한다.
  • 사용자 요청에 의해 생성되는 콘텐츠이다.
  • 웹 서버에 의해서, 실행되는 프로그램을 통해서, 만들어진 결과물이다.

*서버의 정적 콘텐츠

  • 미리 생성된 페이지를 사용자 요청에 의해 바로 응답하는 콘텐츠이다.
  • 항상 동일한 페이지를 반환한다.
  • image, html, css, javascript파일과 같이, 컴퓨터에 저장되어 있는 파일을 제공한다.

*웹 서버의 주요기능

  • HTTP의 요청과 응답에 대한 처리를 한다.
  • 웹 서버는 HTTPS기능이나, 인증 기능을 제공한다.
  • 서버에서는 SSL이나 TLS 프로토콜을 통해, 세션 데이터를 암호화한다.
  • 웹 공격을 탐지하고 차단하는 기능은 없다.
  • 웹 공격 차단을 위해서는 웹 방화벽을 이용한다.
  • 웹 서버는 네트워크의 부하를 막기 위해서, 대역폭 제한이 가능하다.

#### *데이터베이스와 관련된 개념

  • 데이터베이스(DB) : 여러 사람들이 공유해서 사용할 목적으로, 통합 관리되는 정보의 집합
  • 데이터베이스 관리 시스템(DBMS) : 다수의 사용자들이, 데이터베이스 내의 데이터를 접근하여, 편리하게 이용할 수 있도록 해주는, 소프트웨어 도구의 집합
  • 인스턴스 : 특정한 순간에, 데이터베이스에 저장되어 있는, 정보의 모임
  • 데이터 딕셔너리 : 데이터베이스 정보를 제공하는, 읽기 전용 테이블 또는 뷰의 집합. DB의 정보가 저장되어있다.
  • 데이터 베이스 버퍼 : 데이터 파일로부터 읽어 들인, 데이터 블록의 복사본을 갖고 있는 저장 공간

*데이터베이스 관리 시스템 메모리

  • 데이터베이스 관리 시스템에서 실행되는, 것들의 정보를 저장하기 위해, 사용하는 저장 공간이다.

*오라클 DB서버의 디스크 영역의 구성요소

  • 데이터 파일, 임시 데이터 파일, 로그 파일, 컨트롤 파일, 파라미터 파일로 구성된다.

*데이터 파일

  • 물리적 디스크에는, 데이터베이스가 여러 데이터 파일(Data File)들로 구성되어 있다.
    각각의 데이터파일은, 여러 개의 Block(단위)으로 구성된다.

*임시 데이터 파일

  • 작업을 수행하다가, 메모리 공간이 부족해지면, 중간에 결과 집합을 잠시 저장하는 용도로 사용하는 파일이다.

*로그 파일

  • 캐시에, 저장된 변경 사항이 기록되지 않은 상태에서, 장애 발생으로 데이터 파일로 기록하지 못한 정보가 사라진 경우, 복구하기 위해서 사용하는 파일이다.

*컨트롤 파일

  • 데이터베이스에서 사용할 모든 파일들에 대한 정보를 저장하고 있다.
  • 파일들의 이상 유무를 확인하기 위해서 항상 참조되어지는 파일이다.

*파라미터 파일

  • 모든 정보를 담고 있는 파일이다.

*UGA(User Global Area)

  • 오라클 DB 서버의 프로세스 전용 메모리 영역에 할당되는 메모리 공간이다.
  • 하나의 프로세스가 여러 개의 세션을 위한, 독립적인 메모리 공간을 필요로 할 때, 사용되어지는 영역이다.

*MariaDB

  • 관계형 데이터베이스 관리 시스템(RDBMS)이다
  • 하나의 서버가, 여러 개의 마스터를 가지고, 복제 본으로 연결되는 구조를 가진다.
  • 다른 데이터베이스에 수평 분할 방식으로, 저장 조회하는 샤딩 기술을 지원한다.

*패키지 방식 개발 시 고려사항

  • 발주자의 업무 프로세스 및 데이터가, 패키지 소프트웨어의 프로세스에 맞게 조정될 수 있는지 점검하는 절차가 필요하다.
  • 즉 발주자가 패키지에 맞춰야 한다.
profile
안녕하세요.

0개의 댓글