[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 451 ~ 500 오답정리

453. 관계 데이터 모델의 구성

  • 속성 (attributes)
    • 개체의 성질, 분류, 식별, 수량, 상태 등을 나타내는 세부 정보의 관리 요소로서 개체를 구성하는 항목
  • 튜플 (tuple)
    • 릴레이션의 행을 구성하는 속성 값들의 집합
    • 행(row), 레코드(record)와 같은 개념
  • 차수 (degree)
    • 속성(attribute)들의 수
  • 카디널리티 (cardinality)
    • 튜플(tuple)들의 수
  • 도메인 (domain)
    • 하나의 속성이 취할 수 있는 같은 타입의 원자(atomic) 값들의 집합
    • 표현되는 속성 값의 범위를 나타냄
  • 릴레이션 인스턴스 (Relation Instance)
    • 릴레이션의 어느 시점에 들어 있는 튜플들의 집합 : 동적인 성질
    • 튜플들의 집합으로 현재 들어가 있는 실제 데이터를 지칭

 

454. 속성

  • 속성의 개념
    • 하나의 개체는 연관된 속성들의 집합으로 설명되며 독립적인 의미를 갖지 않음
    • 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
  • 기본키의 개넘
    • 속성 중에서 개체를 고유하게 식별할 수 있는 속성 또는 속성들의 집합을 주식별자 또는 기본키라고 함
    • E-R 다이어그램에서 기본키에 속하는 속성은 밑줄을 그어서 표시
  • 속성의 종류
    • 단순 속성 (simple attribute)
      • 더 이상 다른 속성으로 나눌 수 없는 속성
      • E-R 다이어그램에서 실선 타원으로 표햔
    • 복합 속성 (composite attribute)
      • 두 개 이상의 속성으로 이루어진 속성
      • 동일한 개체 타입이나 관계 타입에 속하는 속성 중에서 밀접하게 연관된 것을 모아 놓은 것
    • 단일 값 속성 (single-valued attribute)
      • 각 개체마다 정확하게 하나의 값을 갖는 속성
      • E-R 다이어그램에서 단순 속성과 동일하게 표현됨
    • 다중 값 속성 (multi-valued attribute)
      • 각 개체마다 여러 개의 값을 가질 수 있는 속성
      • E-R 다이어그램에서 이중선 타원으로 표현
    • 저장된 속성 (stored attribute)
      • 다른 속성과 독립적으로 존재하는 속성
      • E-R 다이어그램에서 단순 속성과 동일하게 표현
    • 유도된 속성 (derived attribute)
      • 다른 속성 값으로부터 획득한 속성
      • 관계 데이터베이스에서 릴레이션의 속성으로 포함시키지 않는 것을 권장
      • E-R 다이어그램에서 점선 타원으로 표현

 

461. CSMA/CA, 매체 접근 제어 방식

  • CSMA/CA
    • 무선 랜에서 데이터 전송 시, 매체가 비어 있음을 확인한 뒤 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방법
  • 매체 접근 제어 (MAC) : 데이터 충돌을 방지하려고 LAN에 연결된 모든 장치는 정의된 규칙에 따라 전송 매체에 접근하는 기법
    • CSMA/CD
      • 주로 유선 네트워크에서 사용
      • 데이터를 송신하기 전에 반송파 여부를 감지하여, 다른 컴퓨터나 스테이션에서 데이터 송신 중임을 판단하여 데이터를 전송하지 않는 방식
      • 각 호스트가 전송 매체에 경쟁적으로 데이터를 전송하는 방식
      • 전송된 데이터는 전송되는 동안에 다른 호스트의 데이터와 충돌할 수 있음
      • 충돌이 발생하면 지속해서 재전송 시도
      • 재시도할 때마다 Back-off하는 시간은 매번 2배씩 증가
      • 16번 충돌이 계속 발생 시, 전송을 중지하고 에러 발생을 보고
      • 토큰 제어 방식에 비해 구현이 비교적 간단
    • 토큰 제어 방식
      • 주로 유선 네트워크에서 사용
      • 접속된 노드 사이를 패킷이 순차적으로 순환하는 동안 전송 주도권을 토큰을 얻은 노드가 전송하고 전송이 완료되면 토큰을 반납하는 방식
      • 충돌 현상은 발생하지 않지만, 자신에게 토큰이 올 때까지 기다려야한다는 단점이 있음
      • 대표적인 토큰 제어 방식 : 토큰 링, 토큰 버스 방식

 

462. 결합도

  • 결합도의 개념
    • 모듈과 모듈 사이의 관련성이 어느 정도인가를 나타냄
    • 관련성이 적을수록 모듈의 독립성이 높아 모듈 간 영향이 작아짐
    • 좋은 코드는 결합도가 낮아야 함
  • 결합도의 종류 : 가장 높은 품질 - 자료 결합, 가장 낮은 품질 - 내용 결합
    • 자료 결합도 (Data Coupling) :  모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 상호 작용이 일어남
    • 스탬프 결합도 (Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭쳐 등이 전달되는 경우
    • 제어 결합도 (Control Coupling) : 단순 처리할 대상인 값만 전달하는 것이 아니라 어떻게 처리해야 한다는 제어요소가 전달되는 경우
    • 외부 결합도 (External Coupling) : 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행하는 경우
    • 공통 결합도 (Common Coupling) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호 작용하는 경우
    • 내용 결합도 (Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우

 

463. 비트연산자

  • 비트 연산자의 종류
    • & : 연산하는 비트가 모두 1이면 1을 반환 - 비트 AND 연산
    • | : 연산되는 비트 중에서 하나라도 1이면 1을 반환 - 비트 OR 연산
    • ^ : 연산되는 비트가 서로 다르면 1을 반환 - 비트 XOR 연산
    • ~ : 비트 반전, 비트가 1이면 0으로 0이면 1로 반전시킴 - 비트 NOT 연산
    • << : 지정한 수만큼 비트들을 전부 왼쪽으로 이동시킴 - left shift 연산
    • >> : 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴 - right shift 연산
  • 보기 소스코드 해설
    #include <stdio.h>
    int main(int argc, char *argv[]) {
    	int a = 4;
        int b = 7;
        int c = a | b;
        
        printf("$d", c);
        return 0;
    }

    • int a = 4; : a 변수에 4를 할당 - 4를 비트로 나타내면 00000100
    • int b = 7; : b 변수에 7을 할당 - 7을 비트로 나타내면 00000111
    • .int c = a | b; : a, b의 값 4와 7를 비트로 변환하여 OR 연산을 수행 후 c에 할당
    • printf("%d", c); : c에 할당된 변수의 정수값인 7을 출력

465. 교착상태 해결 방안

  • 예방 (Prevention)
    • 상호 배제 조건, 점유와 대기조건, 비선점 조건 및 환형 대기 조건의 부정
  • 회피 (Avoidance)
    • Banker's Algorithm(은행가 알고리즘), Wait-die, wound-wait 알고리즘
  • 발견 (Detection)
    • 시스템의 상태를 감시 알고리즘을 통해 교착 상태 검사
    • 자원 할당 그래프, Wait for Graph
  • 회복 (Recovery)
    • Deadlock이 없어질 때까지 프로세스를 순차적으로 Kill하여 제거
    • 프로세스 종료비용 최소화 : 우선순위, 진행비용, 복귀비용 등
    • 자원의 우선순위 할당 : 희생자 선택, 복귀, 기아 상태

 

466. CIDR 표기 및 FLSM 사례

  • CIDR 표기의 개념
    • 도메인간의 라우팅에 사용되는 인터넷 주소를 원래의 IP 주소 클래스 체계를 쓰는 것보다 더욱 융통성 있도록 할당하고 지정하는 방식 (Supernetting, Subnetting)
  • FLSM
    • 동일한 크기로 현재의 네트워크를 나눈다는 의미
    • 서브넷 대역에서 호스트들이 사용 가능한 IP 주소 중 제일 첫 IP 주소는 네트워크 주소
    • 제일 마지막 IP 주소는 브로드 캐스트 주소로 할당
    • 나머지 IP들은 호스트에 할당
  • 192.168.1.0/24의 의미
    • 서브넷 마스크 : 2555.255.255.0
    • 8비트 크기의 앞쪽 3개 필드를 합치면 24개 비트가 되고 이를 CIDR로 표시하면 /24를 붙임
    • /24의 의미는 현재의 IP에서 앞의 24비트는 Net ID로 사용하고 뒤의 8비트는 Host ID로 사용중임을 의미하므로 서브넷 마스크는 255.255.255.0이 됨
  • FLSM 방식으로 192.168.1.1.0/24를 이용하여 8개의 subnet으로 나눔
    • /24의 네트워크를 8개로 나누려면 뒤에 있는 8개 비트인 Host ID에서 3개의 비트를 빌려 와서 2^3인 8개 대역으로 나눌 수 있음
    • 만일 3개의 비트만 빌려 오면 2^3인 8개가 서브네팅 가능한 최대 개수
    • 3개의 비트를 Net ID로 가져온 경우 이를 CIDR로 표시하면 192.168.1.1.0/27이 됨 :  Net ID 개수가 총 27개 (24+3)라는 의미
    • 서브넷 마스크 : 255.255.255.224
      • 224 : 마지막 8개 비트에서 Net ID로 할당한 3개를 1로 세팅한 후 10진수로 표현하면 11100000이 224가 됨

 

468. 가상 기억 장치

  • 가상 기억 장치의 문제점
    • Demand Paging
      • 요구될 때에만 프로세스의 Page들을 적재하는 방식
      • 해결방안 : 구역성(지역성)
    • Page Fault Trap
      • 기억장치에 적재되지 않은 Page를 사용하려는 경우 발생
      • 해결방안 : 프로세스 검사하여 판단, 빈공간(Free Frame) 검색, 디스크로부터 요구, 중단된 명령의 재수행
    • Thrashing
      • Page 부재가 너무 빈번하게 발생하여 CPU가 프로세스 수행보다 Page 교체에 더 많은 시간을 소요하는 비정상적인 현상
      • 해결방안 : 구역성, 워킹세트, 페이지 프레임 조정
  • 기억장치 문제점 해결 방안
    • 구역성 관리 (Locality)
      • 프로그램의 어느 한 특성 부분만 한동안 집중적으로 참조하기 때문에 페이징의 성능이 좋아지는 현상
      • 시간 구역성, 공간 구역성, 순차 구역성
    • 프리 페이징 (Prepaging)
      • 과도한 페이지 부재를 줄이기 위해 모든 페이지를 한 번에 페이지 프레임에 적재하는 기법
      • 페이지 적재 과다
    • 위킹 세트 (Working Set)
      • 하나의 프로세스에 자주 참조되는 페이지를 모아놓은 기법으로 그 집합에 속하지 않은 페이지를 교체
      • 스래싱(Thrashing) 방지
    • 페이지 프레임 조정 (Page Fault Frequency)
      • 현재 페이지 부재와 바로 전 페이지의 페이지 부재 사이를 관찰하여 지금까지보다 페이지 부재 갯수가 많으면 호출되지 않았던 페이지들을 제거하여 페이지 프레임의 빈 공간을 늘이는 기법
      • 특징 : PFF가 높으면 Residence Set 크기 증가, 낮으면 줄임

 

469. 프레임 워크

  • 프레임워크의 개념
    • 효율적인 정보 시스템 개발을 위한 구조나 틀을 의미
    • 공통 라이브러리, 온라인, 배모바일 개발 및 실행 환경, 어플리케이션 인터페이스와 개발에 유용한 각도구나 설정 정보 등을 제공
    • 소프트웨어 개발에 필요한 부가 기능, 도구, 가 등을 제공하여 개발 및 운영 효율성과 생산성을 향상시킬 수 있음
  • 프레임워크의 특징
    • 모듈화 (modularity) : 인터페이스에 의한 캡슐화를 통해 모듈성을 강화하고 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어의 품질을 향상시킴
    • 재사용성 (reusability) : 반복적으로 사용할 수 있는 컴포넌트를 정의하여 재사용성을 높여줌
    • 확장성 (extensibility) : 어플리케이션이 프레임워크의 다양한 기능과 인터페이스를 이용할 수 있음
    • 제어의 역전 (IoC) : 프레임워크가 전체 어플리케이션 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 특정 함수나 메소드를 처리 흐름에 삽입할 수 있음
  • 주요 프레임워크의 종류
    • JAVA 기반 : 스프링 프레임워크
    • 스프링 프레임 기반 : 전자정부 표준 프레임워크, 파이썬의 장고(django)
    • Javascript를 지원하는 프레임워크 : 리액트(React), 뷰(Vue), 앵귤러(Angular) 등
    • 프레임워크 선정 시 고려할 사항 : 목표 대상의 요구사항, 하드웨어 및 소프트웨어 환경을 분석하여 적절한 개발 프레임워크를 선정

 

471. 환경 변수

  • 환경변수 확인
    • 환경변수 : 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
    • Unix나 Linux Shell에서는 보통 $ (달러) 사인을 사용하여 환경 변수의 값을 출력 : $echo $PATH
    • printenv 명령어
      • 변수 없이 사용하면 모든 환경변수와 그에 따른 모든 값을 보여줌
      • 변수 이름을 명령어에 단일 변수로 주면 하나의 단일 변수를 인쇄하는데 쓰일 수도 있음
    • env와 set은 또한 환경변수를 설정하는데 쓰일 수도 있으며 자주 쉘 명령어에 직접 통합되기도 함
  • Linux/Unix 운영 체제의 주요 환경변수
    • $PATH
      • 콜론으로 구분된 디렉터리 목록을 포함하며 쉘은 이름에 슬래시가 포함되지 않는 명령을 검색
      • 도스, OS.2, WINDOWS의 %PATH% 변수와 동일
    • $HOME
      • 사용자의 홈 디렉터리의 위치를 포함
      • getpwuid, getuid와 같은 C 함수를 통해 현재 사용자의 홈 디렉터리를 찾아낼 수 있으나 다양한 쉘 스크립트(및 다른 컨텍스트)에서 편의를 위해 $HOME이 자주 사용됨
    • $PWD
      • 현재 디렉터리의 변수 지점, pwd 명령어를 변수 없이 호출할 때의 출력과 동일
    • $DISPLAY 
      • X1 프로그램이 기본적으로 사용할 디스플레이 식별자를 포함

 

472. C언어의 ascii code

  • ascii code
    • 대문자 "A"를 10진법으로 나타낼 경우 : 65
    • 소문자 "a"를 10진법으로 나타낼 경우 : 97
  • 보기 소스코드 해설
    #include <stdo.h>
    int main(int argc, char *argv[ ]) {
    	char a;
        a = 'A' + 1;
        printf("%d", a);
        return 0;
    }
    • a = 'A' + 1; : ascii code에 의해 A는 65이므로 65 + 1인 66을 변수 a에 입력
    • printf("%d", a); : 변수 a에 할당된 66를 정수형으로 출력

473. C언어의 포인터

  • 포인터
    • * : 포인터를 의미
    • 포인터 : 주소값을 나타냄
  • 보기 소스코드 해설
    #include <stdio.h>
    int main(int argc, char *argv[] {
    	int a[2][2] {(11, 22}, (44, 55)};
        int i, sum = 0;
        int * p;
        p = a[0];
        for (i = 1; i < 4; i++)
        	sum += *(p + i);
        printf("%d", sum);
        return 0;
    }

    • int a[2][2] {(11, 22), (44, 55)}; : 이차원 배열의 a[2][2]의 값을 도식화하면 아래와 같음
    • int *p; / p = a[0]; : *p 포인터 p 변수에 a 배열의 [0] 주소 값을 입력
    • for(i = 1; i < 4; i++) / sum += *(p + i); / printf("%d", sum); 
      • (p+i)에서는 p는 a 배열의 [0] 주소값을 가지고 있으나 i = 1로 설정했기 때문에 a[1] 주소값을 뜻함
      • *p는 첫 for문에서 a[1] 주소값이고, 이후 반복문을 통해 덧셈 연산을 수행
      • 22 + 44 + 55 = 121

474. 가상 메모리 관리 기법

  • 페이징 (Paging)
    • 같은 크기의 페이지로 편성 운영하는 기법
    • Page Fault, 내부 단편화와 같은 문제점 발생
  • 세그먼트 (Segmentation)
    • 크기가 다른 논리적 단위의 세그먼트로 분할 및 할당
    • 블록 크기가 가변적으로 외부 단편화 발생 가능

 

475. 응집도

  • 응집도의 개념
    • 모듈 내부의 구성 요소들 간 관계의 밀접 정도로 평가
    • 응집도가 높을수록 필요한 요소들로 구성되어 지고 낮을수록 요소들 간의 관련성이 적은 요소들로 구성
    • 좋은 코드는 응집도가 높은 코드
  • 응집도의 종류 : 가장 높은 품질 - 기능적 응집도, 가장 낮은 품질 - 우연적 응집도
    • 기능적 응집도 (Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행
    • 순차적 응집도 (Sequential Cohesion) : 모듈 내에서 한 할동으로부터 나온 출력값을 다른 활동이 사용하는 경우 
    • 통신적 응집도 (Communication Cohesion) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우 
    • 절차적 응집도 (Procedural Cohesion) : 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행하는 경우
    • 시간적 응집도 (Temporal Cohesion) : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우
    • 논리적 응집도 (Logical Cohesion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
    • 우연적 응집도 (Coincidential Cohesion) : 모듈 내부의 각 구성 요소들이 연관이 없는 경우

 

476. TCP 프로토콜

  • TCP 프로토콜의 개념
    • TCP/IP 프로토콜 중 하나로 OSI 계층모델의 관점에서 트랜스포트 계층에 해당
    • 양 중단 호스트 내 프로세스 상호 간에 신뢰성을 높인 연결지향성 서비스를 제공
    • 신뢰적인 전송을 보장 : 어플리케이션 구현이 한층 용이
  • TCP의 주요 특징
    • 신뢰성 
      • 패킷 손실, 중복, 순서 바뀜 등 오류가 없도록 보장
      • TCP 하위 계층인 IP 계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성 제공
    • 연결지향적
      • 같은 전송 계층의 UDP가 비연결성인 것과는 달리 TCP는 연결 지향적
      • 연결 관리를 위한 연결 설정 및 연결 해제 단계 필요
    • 전이중 전송방식 / 양방향성
      • 종단 간 양 프로세스가 서로 동시에 세그먼트를 전달
      • 양방향 각각에 대해 '송수신 버퍼' 및 '순서번호' 유지
    • 멀티캐스트 불가능
      • 단대단 전송 방식 (1 : 1) : 유니캐스트
      • 단일 송신자와 단일 수신자 간에 단일 경로 연결이 설정
    • 상위 응용과는 바이트 스트림으로 송수신
      • 바이트 스트림을 연속적인 흐름으로 이들을 묶어 전송
      • 상위 응용 개발자들이 흐름제어, 회선 관리, 전송 단위 등을 신경 쓰지 않게 지원
    • 세그먼트화 처리
      • 데이터를 패키징으로 처리
      • TCP 세그먼트
        • 바이트의 앞에서 TCP 헤더를 붙이고, 이를 순서제어
        • TCP에서 IP로 전달되는 정보 단위 (통상 수 백 바이트 정도)로 양끝단의 TCP 모듈 간에 서로 교환되는 데이터 단위

 

478. 문자열 변환 함수

  • atoi (Ascii To Integer)
    • 문자를 int로 변환하는 함수
    • C언어 사례 : int atoi(const char* str
  • atol (Ascii To Long)
    • 문자를 long으로 변환하는 함수
    • C언어 사례 : long int atol(const char* str
  • atoll (Ascii To LongLong)
    • 문자를 long long int로 변환하는 함수
    • C언어 사례 : long long int atoll(const char* str
  • atof (Ascii To Float)
    • 문자를 부동 소수점 값으로 변환하는 함수
    • C언어 사례 : double atof(const char* str

 

479. 스크립트 언어

  • 스크립트 언어 (Scripting language)
    • 응용소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 말함
    • 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종 사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행
  • 자바스크립트 (JavaScript)
    • 웹 브라우저 내에서 주로 사용
    • 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있음
  • 객체지향 프로그래밍 언어
    • 클래스 기반으로 객체 상속 기능을 지원
    • 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용
    • 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있음
    • 대표적인 객체 지향 프로그래밍 언어
      • C# : 마이크로스프트 사에서 개발한 객체 지향 프로그래밍 언어, 닷넷 프레임워크 환경에서 동작
      • JAVA : 썬 마이크로시스템즈에서 개발한 객체지향 프로그랭 언어
      • Delphi (델파이) :기본적인 문법은 파스칼 문법과 같지만 파스칼에 여러 기능이 추가되어 현재는 델파이라는 언어로 발전
      • Swift (스위프트) : 애플의 iOS와 MacOS를 위한 프로그래밍 언어, 오브젝티브-C와 함께 공존할 목적

 

484. 접근 제어 모델 : Bell-LaPadula 모델

  • Bell-LaPadula 모델의 개념
    • 미국방부에서 개발한 정책
    • 군사 보안 요구사항에 만족시키기 위한 방안
    • 정보의 불법적인 유출을 막기 위해 개발된 최초의 수학적 모델
    • 특정 객체에 대한 접근은 특정 직무가 접근을 요구하는 경우에만 분류된 수준에 대하여 허가되는 정책
  • Bell-LaPadula 모델 주요 특징
    • 사용자는 주어진 보안 등급보다 높은 등급의 데이터는 읽을 수 없음 : No read up
    • 사용자는 주어진 보안 등급보다 낮은 등급의 데이터에 기록할 수 없음 : No write down

 

486. OSPF 라우팅 프로토콜

  • OSPF 라우팅 프로토콜의 개념
    • 자치시스템 내부의 라우터들 간의 라우팅 정보를 교환하는 링크 상태 라우팅 프로토콜
    • 경로 설정 시 hop Count만 고려한 RIP애 비해서 대역폭 및 이용도를 계산해서 최적 경로를 계산
  • OSPF 라우팅 프로토콜의 장점
    • 컨버전스 타임
      • 라우터 간에 서로 변경된 정보를 주고 받는데 걸리는 시간
      • RIP의 경우 30초마다 업데이트가 발생하므로 컨버전스에 많은 시간이 걸리지만 OSPF는 변화가 생길 때 바로 전달하기 때문에 훨씬 빠름
    • Area (영역) 사용
      • 전체 네트워크를 작은 영역으로 나누어 관리
      • 작은 영역으로 나누어진 부분에서 변화가 일어나더라도 ABR 라우터를 통해 다른 영역과 연결이 가능하다면 다른 영역이 그 변화를 알 필요가 없음
    • VLSM 지원
      • VLSM을 지원해 IP 주소를 효과적으로 사용할 수 있음
      • VLSM (Variable Length Subnet Mask)
        • 네트워크 주소와 서브넷 마스크를 통한 네트워크 표현방식
        • 서브넷 마스크를 이용하여 IP 분할 가능
        • 만일, Class C 주소를 할당 시 256개 호스트 주소가 가능하나, 이보다 작은 수의 주소만이 필요할 때, 적은 수의 주소를 할당 가능하여 주소의 낭비를 막을 수 있음
    • 네트워크 크기
      • RIP는 홉 카운트가 15로 제한되어 있기 때문에 네트워크 크기가 제한적
      • OSPF는 제한이 없음
    • 경로 설정
      • RIP의 경우 홉카운트만 따지기 때문에 속도나 딜레이 지연 등의 요소와 상관없이 홉 카운트가 적은 것을 선호
      • OSPF는 속도나 딜레이를 감안해 경로를 선택하기 때문에 정확한 경로 선택이 가능 
  • OSPF 라우팅 프로토콜의 구성요소
    • Backbone Area
      • 각 Area에서 라우팅 정보를 전달 받아 다른 Area로 전달
    • Leaf Area
      • Backbone Area를 제외한 나머지 Area
      • 반드시 Backbone Area에 연결되어야 함
    • internal Router(IR)
      • Area 내부에 있는 라우터
    • Area Border Router(ABR)
      • 두 개 이상의 Area에 속한 경계 라우터
    • AS Boundary Router(ASBR)
      • 다른 라우팅 프로토콜이 구동되는 네트워크가 연결되는 라우터
    • Designate Router / Backup DR (DR/BDR)
      • Ethernet 등 Multi-access Broadcast Network 환경에서 Segment 내의 라우팅 정보를 중계하는 라우터
    • Link State Advertisements (LSA)
      • Link State에 변화가 있을 경우 이것을 모든 라우터에게 즉시 전달하는데 이러한 Link State를 전달하는 Message

 

487. 소프트웨어 비용 추정 모형

  • 하향식 산정 기법
    • 과거의 유사 경험을 바탕으로 회의를 통해 산정하는 비과학적인 기법
    • 조직 내 경험이 있는 2명 이상의 전문가에게 비용 산정을 의뢰하는 전문가 판단 기법과 한 명의 조정자와 다수 전문가의 의견을 종합하여 비용을 산정하는 델파이 기법
  • 상향식 산정 기법
    • 프로젝트의 세부 작업 단위별로 비용을 산정한 후 전체 비용을 합산하여 산정하는 방법
    • 대표적 기법 : 원시코드 라인 수 (LOC), 개발 단계별 노력 방법
  • 수학적 산정 기법
    • 상향식 비용 산정 기법
    • 경험적 추정 기법, 실험적 추정 기법
    • 대표적 기법 : COCOMO, putnam, 기능 점수법(FP)

 

488. 코드 오류의 종류

  • 사본 오류 (Transcription Error) : 코드 기입 시 임의의 한 자리를 잘못 표기한 경우
  • 전위 오류 (Transposition Error) : 코드 기입 시 임의의 연속된 자리가 바뀌어서 표기된 경우
  • 이중 오류 (Double Transposition Error) : 코드 기입 시 전위 에러가 중복해서 발생한 경우
  • 랜덤 오류 (Random Error) : 위의 오류가 일정한 규칙 없이 발생한 경우
  • 샹략 오류 (Omission Error) : 코드 기입 시 한 글자를 빼먹고 기술한 경우
  • 첨가 오류 (Addtion Error) : 코드 기입 시 한 글자가 추가되어 기술된 경우

 

489. ISO/IEC 12207 표준

  • ISO/IEC 12207 표준의 개념
    • 체계적인 소프트웨어 획득, 공급, 개발, 운영/유지보수를 위해서 소프트웨어 생명주기 공정 표준을 제공함으로써 소프트웨어 실무자들이 개발 및 관리에 동일한 언어로 의사소통 할 수 있는 기본틀을 제공하기 위한 국제 표준
  • ISO/IEC 12207 표준 주요 프로세스
    • 기본 생명 주기
      • 획득 프로세스 : 시스템, 소프트웨어 제품 또는 소프트웨어 서비스를 획득하는 획득자 또는 획득 조직이 수행할 활동을 정의
      • 공급 프로세스 : 시스템, 소프트웨어 제품 또는 소프트웨어 서비스를 공급하는 공급자 또는 공급 조직이 수행할 활동을 정의
      • 개발 프로세스 : 소프트웨어 제품을 정의하고 개발하는 개발자 또는 개발 조직이 수행할 활동을 정의
      • 운영 프로세스 : 사용자를 위하여 실제 환경에서 컴퓨터 시스템의 운영 서비스를 제공하는 운영자 또는 운영 조직이 수행할 활동을 정의
      • 유지 보수 프로세스 : 소프트웨어 제품의 유지보수 서비스를 제공하는 유지 보수자 또는 유지 보수 조직이 수행할 활동을 정의
    • 지원 생명 주기
      • 문서화 : 생명 주기 프로세스에 의하여 산출되는 정보의 기록을 위한 활동 정의
      • 품질 보증 : 소프트웨어 제품 및 프로세스가 명시된 요구사항에 적합하며 이미 수립된 계획에 따르고 있음을 객관적으로 보증하기 위한 활동을 정의
      • 형상 관리 : 구성 관리 활동을 정의 
      • 검증 : 소프트웨어 프로젝트에 따라 다양한 깊이로 소프트웨어 제품을 검증하기 위한 획득자, 공급자 또는 독립 조직을 위한 활동 정의
      • 확인 : 소프트웨어 프로젝트의 소프트웨어 제품을 확인하기 위한 획득자, 공급자 또는 독립 조직을 위한 활동 정의
      • 문제 해결 : 개발, 운영, 유지보수 또는 다른 프로세스 활동 수행 중 발견된 부적합 사항을 포함한 문제점을 분석, 제거하기 위한 프로세스 정의
      • 합동 검토 : 활동의 상태 및 제품을 평가하기 위한 활동을 정의
      • 감사 : 요구사항, 계획 및 계약에 대하여 적합성을 결정하기 위한 활동 정의
    • 조직 생명 주기
      • 기반 구조 프로세스 : 생명주기 프로세스 기본 구조를 확립하기 위한 기본 활동 정의
      • 관리 프로세스 : 생명주기 프로세스 동안 프로젝트 관리를 포함한 기본적인 관리 활동을 정의
      • 개선 프로세스 : 조직 생명 주기 프로세스의 확립, 측정, 통제, 개선을 위하여 수행하는 기본 활동을 정의
      • 훈련 프로세스 : 적절하게 훈련된 요원을 제공하기 위한 활동을 정의

 

493. 해시 함수의 유형

  • SHA-1
    • 160비트 암호화 해시 함수
    • 1993년 미국 NIST에서 개발
    • 보안강도가 약해 SHA-256, SHA-512로 대체되고 있음
    • 활용 : 전자서명
  • MD5
    • 128비트 기반 암호화 해시 함수
    • 결과 값이 16개 문자열
    • 설계상 결함으로 사용히 줄어드는 추세
    • 활용 : 메시지 무결성 검사
  • HAVAL
    • MD5를 변형하여 만든 해시함수
    • 128비트에서 256비트까지 다양한 크기가 가능
    • 활용 : MD5 단점 보완
  • Tiger
    • 64비트 CPU에 최적화
    • 32비트 CPU에서도 빠르게 동작 가능
    • 활용 : 64비트 CPU의 해시

 

495. 메모리 버퍼 오버플로우

  • 메모리 버퍼 오버플로우의 개념
    • 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고 할 때 발생
    • 프로그램의 오동작을 유발시키거나, 악의적인 코드를 실행시킴으로써 공격자 프로그램을 통제할 수 있는 권한을 획득하게 됨
  • 메모리 버퍼 오버플로우의 보안 대책
    • 스택가드 (Stackguard)
      • 카나리라고 불리는 무결성 체크용 값을 복귀주소와 변수 사이에 삽입해둠
      • 버퍼 오버플로 시 카나리값이 변하게 되는데, 이 경우 복귀주소를 호출하지 않음
      • gcc 등 각종 컴파일러에 이 기법에 반영되어 업데이트 됨
    • 스택쉴드 (Stack Shield)
      • 함수 시작 시 : 복귀주소를 Global RET라는 특수 스택에 저장
      • 함수 종료 시 : 저장된 값과 스택의 RET값을 비교해 다를 경우 오버플로우로 간주하고 프로그램 실행을 중단
    • ASLR (Address Space Layout Randomization)
      • 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화
      • 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정주소 호출을 차단
    • 안전한 함수 사용
      • 프로그램 개발 시 입력값에 대한 크기 검증을 적절히 수행하거나 취약하지 않은 함수만을 사용한다면 어느 정도 방지할 수 있음
      • strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf()

 

497. Secure OS 개념

  • 컴퓨터 사용자에 대한 식별 및 인증, 강제적 접근 통제, 임의적 접근 통제, 재사용 방지, 침입 탐지 등의 보안 기능 요소를 갖추어진 운영체제
  • 해킹의 주요 대상인 서버 내의 자산에 대한 접근을 통제하는 커널 수준의 시스템 보안 소프트웨어를 의미

 

498. nmap 

  • 네트워크 보안을 위한 유틸리티
  • 대규모 네트워크를 고속으로 스캔하는 도구
  • 네트워크에 어떤 호스트가 살아 있는지 어떤 포트를 사용하는지 운영체제가 뭔지 등의 네트워크의 수 많은 특징을 점검할 수 있는 도구

 

500. 대칭 키 암호화

  • 대칭 키 암호화 (Symmetric Key)의 개념
    • 암호화를 할 때 사용하는 암호화 키와 복호화를 할 때 사용하는 복호화 키가 동일한 암호화 기법
    • 암호문을 송신하거나 수신하는 사용자는 사전에 암호화키를 교환해야 함
    • 대칭키 암호화 기법은 키 교환을 어떻게 할 것인가에 대한 문제가 발생
    • 장점 : 작은 비트의 암호화키를 사용하여 빠르게 암호화하거나 복호화할 수 있다
    • 종류 : Session Key, Shared Key, Secret Key, Symmetric Key
  • 대칭 키 알고리즘 유형
    • AES
      • 1998년 미국의 표준기술 연구소(NIST)에 의해서 수행된 암호화 알고리즘 공모전에 선정된 암호화 기술
      • 대칭키 암호
      • 세 종류의 키 사용 : 128비트, 192비트, 256비트
      • 활용 : WPA2 무선 인증 등
    • ARIA
      • 학계 (Academy) + Research Institute + 정부 기관 (Agency) 합작
      • 경량 환경 및 하드웨어 구현을 위해 최적화된, Involutional SPN 구조를 갖는 범용 블록 암호화 알고리즘
      • 활용 : 국내 공공기관
    • IDEA
      • 128비트의 키를 사용해 64비트의 평문을 8라운드에 거쳐 64비트의 암호문으로만 구성
      • 모든 연산이 16비트 단위로 이루어지도록 하여 16비트 프로세서에서 구현이 용이하며 주로 키 교환에 사용
      • 활용 : PGP 메일 암호 등
    • RC5
      • 1994년 미국 RSA 연구소의 리베스트가 개발
      • 비교적 간단한 연산 : 빠른 암호화와 복호화 기능을 제공하여 모든 하드웨어에 적합
      • 입출력, Key, 라운드 수가 가변인 블록 알고리즘
      • 32, 64, 128 비트의 키를 사용
      • 활용 : RC4 개선